From 0d8928ff05599ffc823e502521f9aa517ba56eed Mon Sep 17 00:00:00 2001 From: Sukchan Lee Date: Sun, 4 Mar 2018 16:30:03 +0900 Subject: [PATCH] re-add s1ap --- configure.ac | 6 +- lib/s1ap3/Makefile.am | 6 + lib/s1ap3/asn1c/ANY.c | 450 + lib/s1ap3/asn1c/ANY.h | 65 + lib/s1ap3/asn1c/BIT_STRING.c | 656 + lib/s1ap3/asn1c/BIT_STRING.h | 48 + lib/s1ap3/asn1c/BIT_STRING_oer.c | 174 + lib/s1ap3/asn1c/BOOLEAN.c | 491 + lib/s1ap3/asn1c/BOOLEAN.h | 45 + lib/s1ap3/asn1c/INTEGER.c | 1719 + lib/s1ap3/asn1c/INTEGER.h | 108 + lib/s1ap3/asn1c/INTEGER_oer.c | 179 + lib/s1ap3/asn1c/Makefile.am | 1159 + lib/s1ap3/asn1c/Makefile.am.libasncodec | 1134 + lib/s1ap3/asn1c/NULL.c | 299 + lib/s1ap3/asn1c/NULL.h | 45 + lib/s1ap3/asn1c/NativeEnumerated.c | 367 + lib/s1ap3/asn1c/NativeEnumerated.h | 45 + lib/s1ap3/asn1c/NativeEnumerated_oer.c | 149 + lib/s1ap3/asn1c/NativeInteger.c | 550 + lib/s1ap3/asn1c/NativeInteger.h | 46 + lib/s1ap3/asn1c/NativeInteger_oer.c | 99 + lib/s1ap3/asn1c/OBJECT_IDENTIFIER.c | 647 + lib/s1ap3/asn1c/OBJECT_IDENTIFIER.h | 156 + lib/s1ap3/asn1c/OCTET_STRING.c | 2409 + lib/s1ap3/asn1c/OCTET_STRING.h | 102 + lib/s1ap3/asn1c/OCTET_STRING_oer.c | 171 + lib/s1ap3/asn1c/OPEN_TYPE.c | 521 + lib/s1ap3/asn1c/OPEN_TYPE.h | 77 + lib/s1ap3/asn1c/OPEN_TYPE_oer.c | 92 + lib/s1ap3/asn1c/PrintableString.c | 130 + lib/s1ap3/asn1c/PrintableString.h | 37 + lib/s1ap3/asn1c/S1AP_Additional-GUTI.c | 73 + lib/s1ap3/asn1c/S1AP_Additional-GUTI.h | 48 + .../S1AP_AdditionalCSFallbackIndicator.c | 58 + .../S1AP_AdditionalCSFallbackIndicator.h | 54 + .../S1AP_AllocationAndRetentionPriority.c | 83 + .../S1AP_AllocationAndRetentionPriority.h | 52 + lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.c | 88 + lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.h | 66 + .../S1AP_AssistanceDataForCECapableUEs.c | 63 + .../S1AP_AssistanceDataForCECapableUEs.h | 48 + .../asn1c/S1AP_AssistanceDataForPaging.c | 86 + .../asn1c/S1AP_AssistanceDataForPaging.h | 50 + .../S1AP_AssistanceDataForRecommendedCells.c | 63 + .../S1AP_AssistanceDataForRecommendedCells.h | 48 + lib/s1ap3/asn1c/S1AP_BPLMNs.c | 52 + lib/s1ap3/asn1c/S1AP_BPLMNs.h | 42 + lib/s1ap3/asn1c/S1AP_BearerType.c | 56 + lib/s1ap3/asn1c/S1AP_BearerType.h | 53 + ...1AP_Bearers-SubjectToStatusTransfer-Item.c | 93 + ...1AP_Bearers-SubjectToStatusTransfer-Item.h | 51 + ...S1AP_Bearers-SubjectToStatusTransferList.c | 53 + ...S1AP_Bearers-SubjectToStatusTransferList.h | 44 + lib/s1ap3/asn1c/S1AP_BitRate.c | 70 + lib/s1ap3/asn1c/S1AP_BitRate.h | 46 + .../asn1c/S1AP_BroadcastCancelledAreaList.c | 78 + .../asn1c/S1AP_BroadcastCancelledAreaList.h | 61 + .../asn1c/S1AP_BroadcastCompletedAreaList.c | 78 + .../asn1c/S1AP_BroadcastCompletedAreaList.h | 61 + .../asn1c/S1AP_CE-mode-B-SupportIndicator.c | 56 + .../asn1c/S1AP_CE-mode-B-SupportIndicator.h | 53 + lib/s1ap3/asn1c/S1AP_CELevel.c | 31 + lib/s1ap3/asn1c/S1AP_CELevel.h | 45 + lib/s1ap3/asn1c/S1AP_CGI.c | 93 + lib/s1ap3/asn1c/S1AP_CGI.h | 54 + lib/s1ap3/asn1c/S1AP_CI.c | 65 + lib/s1ap3/asn1c/S1AP_CI.h | 46 + lib/s1ap3/asn1c/S1AP_CNDomain.c | 56 + lib/s1ap3/asn1c/S1AP_CNDomain.h | 51 + lib/s1ap3/asn1c/S1AP_COUNTValueExtended.c | 73 + lib/s1ap3/asn1c/S1AP_COUNTValueExtended.h | 48 + lib/s1ap3/asn1c/S1AP_COUNTvalue.c | 73 + lib/s1ap3/asn1c/S1AP_COUNTvalue.h | 50 + .../asn1c/S1AP_COUNTvaluePDCP-SNlength18.c | 73 + .../asn1c/S1AP_COUNTvaluePDCP-SNlength18.h | 48 + lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.c | 58 + lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.h | 54 + lib/s1ap3/asn1c/S1AP_CSG-Id.c | 70 + lib/s1ap3/asn1c/S1AP_CSG-Id.h | 46 + lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.c | 63 + lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.h | 48 + lib/s1ap3/asn1c/S1AP_CSG-IdList.c | 53 + lib/s1ap3/asn1c/S1AP_CSG-IdList.h | 41 + lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.c | 93 + lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.h | 52 + lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.c | 56 + lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.h | 53 + .../asn1c/S1AP_CancelledCellinEAI-Item.c | 73 + .../asn1c/S1AP_CancelledCellinEAI-Item.h | 50 + lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.c | 53 + lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.h | 44 + .../asn1c/S1AP_CancelledCellinTAI-Item.c | 73 + .../asn1c/S1AP_CancelledCellinTAI-Item.h | 50 + lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.c | 53 + lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.h | 44 + lib/s1ap3/asn1c/S1AP_Cause.c | 95 + lib/s1ap3/asn1c/S1AP_Cause.h | 68 + lib/s1ap3/asn1c/S1AP_CauseMisc.c | 66 + lib/s1ap3/asn1c/S1AP_CauseMisc.h | 60 + lib/s1ap3/asn1c/S1AP_CauseNas.c | 64 + lib/s1ap3/asn1c/S1AP_CauseNas.h | 59 + lib/s1ap3/asn1c/S1AP_CauseProtocol.c | 68 + lib/s1ap3/asn1c/S1AP_CauseProtocol.h | 61 + lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.c | 134 + lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.h | 94 + lib/s1ap3/asn1c/S1AP_CauseTransport.c | 58 + lib/s1ap3/asn1c/S1AP_CauseTransport.h | 56 + .../asn1c/S1AP_Cdma2000HORequiredIndication.c | 56 + .../asn1c/S1AP_Cdma2000HORequiredIndication.h | 53 + lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.c | 58 + lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.h | 54 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.c | 31 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.h | 45 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.c | 31 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.h | 45 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.c | 31 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.h | 45 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.c | 31 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.h | 45 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.c | 83 + lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.h | 50 + lib/s1ap3/asn1c/S1AP_Cdma2000PDU.c | 31 + lib/s1ap3/asn1c/S1AP_Cdma2000PDU.h | 45 + lib/s1ap3/asn1c/S1AP_Cdma2000RATType.c | 58 + lib/s1ap3/asn1c/S1AP_Cdma2000RATType.h | 54 + lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.c | 31 + lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.h | 45 + lib/s1ap3/asn1c/S1AP_Cell-Size.c | 62 + lib/s1ap3/asn1c/S1AP_Cell-Size.h | 58 + lib/s1ap3/asn1c/S1AP_CellAccessMode.c | 56 + lib/s1ap3/asn1c/S1AP_CellAccessMode.h | 55 + lib/s1ap3/asn1c/S1AP_CellBasedMDT.c | 63 + lib/s1ap3/asn1c/S1AP_CellBasedMDT.h | 48 + lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.c | 63 + lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.h | 48 + lib/s1ap3/asn1c/S1AP_CellID-Broadcast.c | 53 + lib/s1ap3/asn1c/S1AP_CellID-Broadcast.h | 44 + lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.c | 73 + lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.h | 50 + lib/s1ap3/asn1c/S1AP_CellID-Cancelled.c | 53 + lib/s1ap3/asn1c/S1AP_CellID-Cancelled.h | 44 + lib/s1ap3/asn1c/S1AP_CellIdListforMDT.c | 53 + lib/s1ap3/asn1c/S1AP_CellIdListforMDT.h | 44 + ..._CellIdentifierAndCELevelForCECapableUEs.c | 73 + ..._CellIdentifierAndCELevelForCECapableUEs.h | 50 + lib/s1ap3/asn1c/S1AP_CellIdentity.c | 70 + lib/s1ap3/asn1c/S1AP_CellIdentity.h | 46 + lib/s1ap3/asn1c/S1AP_CellTrafficTrace.c | 50 + lib/s1ap3/asn1c/S1AP_CellTrafficTrace.h | 44 + lib/s1ap3/asn1c/S1AP_CellType.c | 63 + lib/s1ap3/asn1c/S1AP_CellType.h | 48 + .../asn1c/S1AP_CompletedCellinEAI-Item.c | 63 + .../asn1c/S1AP_CompletedCellinEAI-Item.h | 48 + lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.c | 53 + lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.h | 44 + .../asn1c/S1AP_CompletedCellinTAI-Item.c | 63 + .../asn1c/S1AP_CompletedCellinTAI-Item.h | 48 + lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.c | 53 + lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.h | 44 + .../S1AP_ConcurrentWarningMessageIndicator.c | 54 + .../S1AP_ConcurrentWarningMessageIndicator.h | 50 + .../S1AP_ConnectionEstablishmentIndication.c | 50 + .../S1AP_ConnectionEstablishmentIndication.h | 44 + lib/s1ap3/asn1c/S1AP_Correlation-ID.c | 65 + lib/s1ap3/asn1c/S1AP_Correlation-ID.h | 45 + lib/s1ap3/asn1c/S1AP_Coverage-Level.c | 56 + lib/s1ap3/asn1c/S1AP_Coverage-Level.h | 53 + lib/s1ap3/asn1c/S1AP_Criticality.c | 58 + lib/s1ap3/asn1c/S1AP_Criticality.h | 54 + .../S1AP_CriticalityDiagnostics-IE-Item.c | 83 + .../S1AP_CriticalityDiagnostics-IE-Item.h | 52 + .../S1AP_CriticalityDiagnostics-IE-List.c | 53 + .../S1AP_CriticalityDiagnostics-IE-List.h | 44 + lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.c | 94 + lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.h | 52 + lib/s1ap3/asn1c/S1AP_DCN-ID.c | 64 + lib/s1ap3/asn1c/S1AP_DCN-ID.h | 46 + .../asn1c/S1AP_DL-CP-SecurityInformation.c | 63 + .../asn1c/S1AP_DL-CP-SecurityInformation.h | 46 + lib/s1ap3/asn1c/S1AP_DL-Forwarding.c | 56 + lib/s1ap3/asn1c/S1AP_DL-Forwarding.h | 55 + lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.c | 70 + lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.h | 46 + .../asn1c/S1AP_DLNASPDUDeliveryAckRequest.c | 56 + .../asn1c/S1AP_DLNASPDUDeliveryAckRequest.h | 53 + .../asn1c/S1AP_Data-Forwarding-Not-Possible.c | 56 + .../asn1c/S1AP_Data-Forwarding-Not-Possible.h | 53 + lib/s1ap3/asn1c/S1AP_DataCodingScheme.c | 70 + lib/s1ap3/asn1c/S1AP_DataCodingScheme.h | 45 + lib/s1ap3/asn1c/S1AP_DeactivateTrace.c | 50 + lib/s1ap3/asn1c/S1AP_DeactivateTrace.h | 44 + ...S1AP_Direct-Forwarding-Path-Availability.c | 56 + ...S1AP_Direct-Forwarding-Path-Availability.h | 53 + lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.c | 50 + lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.h | 44 + ...1AP_DownlinkNonUEAssociatedLPPaTransport.c | 50 + ...1AP_DownlinkNonUEAssociatedLPPaTransport.h | 44 + .../asn1c/S1AP_DownlinkS1cdma2000tunnelling.c | 50 + .../asn1c/S1AP_DownlinkS1cdma2000tunnelling.h | 44 + .../S1AP_DownlinkUEAssociatedLPPaTransport.c | 50 + .../S1AP_DownlinkUEAssociatedLPPaTransport.h | 44 + lib/s1ap3/asn1c/S1AP_E-RAB-ID.c | 64 + lib/s1ap3/asn1c/S1AP_E-RAB-ID.h | 46 + lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.c | 579 + lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.h | 190 + .../asn1c/S1AP_E-RAB-IE-ContainerPairList.h | 23 + lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.c | 123 + lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.h | 54 + lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.c | 66 + lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.h | 45 + .../asn1c/S1AP_E-RABDataForwardingItem.c | 103 + .../asn1c/S1AP_E-RABDataForwardingItem.h | 52 + .../S1AP_E-RABFailedToResumeItemResumeReq.c | 73 + .../S1AP_E-RABFailedToResumeItemResumeReq.h | 48 + .../S1AP_E-RABFailedToResumeItemResumeRes.c | 73 + .../S1AP_E-RABFailedToResumeItemResumeRes.h | 48 + .../S1AP_E-RABFailedToResumeListResumeReq.c | 66 + .../S1AP_E-RABFailedToResumeListResumeReq.h | 45 + .../S1AP_E-RABFailedToResumeListResumeRes.c | 66 + .../S1AP_E-RABFailedToResumeListResumeRes.h | 45 + .../S1AP_E-RABFailedToSetupItemHOReqAck.c | 73 + .../S1AP_E-RABFailedToSetupItemHOReqAck.h | 48 + .../S1AP_E-RABFailedtoSetupListHOReqAck.c | 66 + .../S1AP_E-RABFailedtoSetupListHOReqAck.h | 45 + lib/s1ap3/asn1c/S1AP_E-RABInformationList.c | 53 + lib/s1ap3/asn1c/S1AP_E-RABInformationList.h | 44 + .../asn1c/S1AP_E-RABInformationListItem.c | 73 + .../asn1c/S1AP_E-RABInformationListItem.h | 48 + lib/s1ap3/asn1c/S1AP_E-RABItem.c | 73 + lib/s1ap3/asn1c/S1AP_E-RABItem.h | 48 + .../asn1c/S1AP_E-RABLevelQoSParameters.c | 84 + .../asn1c/S1AP_E-RABLevelQoSParameters.h | 52 + lib/s1ap3/asn1c/S1AP_E-RABList.c | 53 + lib/s1ap3/asn1c/S1AP_E-RABList.h | 41 + .../asn1c/S1AP_E-RABModificationConfirm.c | 50 + .../asn1c/S1AP_E-RABModificationConfirm.h | 44 + .../asn1c/S1AP_E-RABModificationIndication.c | 50 + .../asn1c/S1AP_E-RABModificationIndication.h | 44 + .../asn1c/S1AP_E-RABModifyItemBearerModConf.c | 63 + .../asn1c/S1AP_E-RABModifyItemBearerModConf.h | 46 + .../asn1c/S1AP_E-RABModifyItemBearerModRes.c | 63 + .../asn1c/S1AP_E-RABModifyItemBearerModRes.h | 46 + .../asn1c/S1AP_E-RABModifyListBearerModConf.c | 53 + .../asn1c/S1AP_E-RABModifyListBearerModConf.h | 41 + .../asn1c/S1AP_E-RABModifyListBearerModRes.c | 53 + .../asn1c/S1AP_E-RABModifyListBearerModRes.h | 41 + lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.c | 50 + lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.h | 44 + lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.c | 50 + lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.h | 44 + ...1AP_E-RABNotToBeModifiedItemBearerModInd.c | 83 + ...1AP_E-RABNotToBeModifiedItemBearerModInd.h | 50 + ...1AP_E-RABNotToBeModifiedListBearerModInd.c | 66 + ...1AP_E-RABNotToBeModifiedListBearerModInd.h | 45 + lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.c | 50 + lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.h | 44 + lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.c | 50 + lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.h | 44 + .../S1AP_E-RABReleaseItemBearerRelComp.c | 63 + .../S1AP_E-RABReleaseItemBearerRelComp.h | 46 + .../S1AP_E-RABReleaseListBearerRelComp.c | 53 + .../S1AP_E-RABReleaseListBearerRelComp.h | 41 + lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.c | 50 + lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.h | 44 + .../asn1c/S1AP_E-RABSetupItemBearerSURes.c | 83 + .../asn1c/S1AP_E-RABSetupItemBearerSURes.h | 50 + .../asn1c/S1AP_E-RABSetupItemCtxtSURes.c | 83 + .../asn1c/S1AP_E-RABSetupItemCtxtSURes.h | 50 + .../asn1c/S1AP_E-RABSetupListBearerSURes.c | 53 + .../asn1c/S1AP_E-RABSetupListBearerSURes.h | 41 + .../asn1c/S1AP_E-RABSetupListCtxtSURes.c | 53 + .../asn1c/S1AP_E-RABSetupListCtxtSURes.h | 41 + lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.c | 50 + lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.h | 44 + lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.c | 50 + lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.h | 44 + .../S1AP_E-RABSubjecttoDataForwardingList.c | 66 + .../S1AP_E-RABSubjecttoDataForwardingList.h | 45 + .../S1AP_E-RABToBeModifiedItemBearerModInd.c | 83 + .../S1AP_E-RABToBeModifiedItemBearerModInd.h | 50 + .../S1AP_E-RABToBeModifiedItemBearerModReq.c | 83 + .../S1AP_E-RABToBeModifiedItemBearerModReq.h | 50 + .../S1AP_E-RABToBeModifiedListBearerModInd.c | 66 + .../S1AP_E-RABToBeModifiedListBearerModInd.h | 45 + .../S1AP_E-RABToBeModifiedListBearerModReq.c | 53 + .../S1AP_E-RABToBeModifiedListBearerModReq.h | 41 + .../S1AP_E-RABToBeSetupItemBearerSUReq.c | 103 + .../S1AP_E-RABToBeSetupItemBearerSUReq.h | 54 + .../asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.c | 103 + .../asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.h | 54 + .../asn1c/S1AP_E-RABToBeSetupItemHOReq.c | 93 + .../asn1c/S1AP_E-RABToBeSetupItemHOReq.h | 52 + .../S1AP_E-RABToBeSetupListBearerSUReq.c | 53 + .../S1AP_E-RABToBeSetupListBearerSUReq.h | 41 + .../asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.c | 53 + .../asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.h | 41 + .../asn1c/S1AP_E-RABToBeSetupListHOReq.c | 66 + .../asn1c/S1AP_E-RABToBeSetupListHOReq.h | 45 + .../asn1c/S1AP_E-RABToBeSwitchedDLItem.c | 83 + .../asn1c/S1AP_E-RABToBeSwitchedDLItem.h | 50 + .../asn1c/S1AP_E-RABToBeSwitchedDLList.c | 66 + .../asn1c/S1AP_E-RABToBeSwitchedDLList.h | 45 + .../asn1c/S1AP_E-RABToBeSwitchedULItem.c | 83 + .../asn1c/S1AP_E-RABToBeSwitchedULItem.h | 50 + .../asn1c/S1AP_E-RABToBeSwitchedULList.c | 66 + .../asn1c/S1AP_E-RABToBeSwitchedULList.h | 45 + lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.c | 65 + lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.h | 46 + lib/s1ap3/asn1c/S1AP_EARFCN.c | 64 + lib/s1ap3/asn1c/S1AP_EARFCN.h | 46 + lib/s1ap3/asn1c/S1AP_ECGI-List.c | 53 + lib/s1ap3/asn1c/S1AP_ECGI-List.h | 44 + lib/s1ap3/asn1c/S1AP_ECGIList.c | 53 + lib/s1ap3/asn1c/S1AP_ECGIList.h | 44 + lib/s1ap3/asn1c/S1AP_ECGIListForRestart.c | 53 + lib/s1ap3/asn1c/S1AP_ECGIListForRestart.h | 41 + lib/s1ap3/asn1c/S1AP_ENB-ID.c | 241 + lib/s1ap3/asn1c/S1AP_ENB-ID.h | 61 + ..._ENB-StatusTransfer-TransparentContainer.c | 63 + ..._ENB-StatusTransfer-TransparentContainer.h | 46 + lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.c | 64 + lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.h | 46 + .../asn1c/S1AP_ENBCPRelocationIndication.c | 50 + .../asn1c/S1AP_ENBCPRelocationIndication.h | 44 + .../asn1c/S1AP_ENBConfigurationTransfer.c | 50 + .../asn1c/S1AP_ENBConfigurationTransfer.h | 44 + lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.c | 50 + lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.h | 44 + .../S1AP_ENBConfigurationUpdateAcknowledge.c | 50 + .../S1AP_ENBConfigurationUpdateAcknowledge.h | 44 + .../S1AP_ENBConfigurationUpdateFailure.c | 50 + .../S1AP_ENBConfigurationUpdateFailure.h | 44 + .../asn1c/S1AP_ENBDirectInformationTransfer.c | 50 + .../asn1c/S1AP_ENBDirectInformationTransfer.h | 44 + ...1AP_ENBIndirectX2TransportLayerAddresses.c | 52 + ...1AP_ENBIndirectX2TransportLayerAddresses.h | 39 + lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.c | 50 + lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.h | 44 + lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.c | 74 + lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.h | 50 + lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.c | 53 + lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.h | 41 + lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.c | 52 + lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.h | 42 + lib/s1ap3/asn1c/S1AP_ENBX2TLAs.c | 52 + lib/s1ap3/asn1c/S1AP_ENBX2TLAs.h | 42 + lib/s1ap3/asn1c/S1AP_ENBname.c | 109 + lib/s1ap3/asn1c/S1AP_ENBname.h | 45 + lib/s1ap3/asn1c/S1AP_EPLMNs.c | 52 + lib/s1ap3/asn1c/S1AP_EPLMNs.h | 42 + lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.c | 73 + lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.h | 50 + .../S1AP_EUTRANRoundTripDelayEstimationInfo.c | 64 + .../S1AP_EUTRANRoundTripDelayEstimationInfo.h | 45 + .../S1AP_EmergencyAreaID-Broadcast-Item.c | 73 + .../S1AP_EmergencyAreaID-Broadcast-Item.h | 50 + .../asn1c/S1AP_EmergencyAreaID-Broadcast.c | 53 + .../asn1c/S1AP_EmergencyAreaID-Broadcast.h | 44 + .../S1AP_EmergencyAreaID-Cancelled-Item.c | 73 + .../S1AP_EmergencyAreaID-Cancelled-Item.h | 50 + .../asn1c/S1AP_EmergencyAreaID-Cancelled.c | 53 + .../asn1c/S1AP_EmergencyAreaID-Cancelled.h | 44 + lib/s1ap3/asn1c/S1AP_EmergencyAreaID.c | 65 + lib/s1ap3/asn1c/S1AP_EmergencyAreaID.h | 46 + lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.c | 52 + lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.h | 42 + .../S1AP_EmergencyAreaIDListForRestart.c | 52 + .../S1AP_EmergencyAreaIDListForRestart.h | 39 + lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.c | 70 + lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.h | 46 + .../asn1c/S1AP_EnhancedCoverageRestricted.c | 56 + .../asn1c/S1AP_EnhancedCoverageRestricted.h | 53 + lib/s1ap3/asn1c/S1AP_ErrorIndication.c | 50 + lib/s1ap3/asn1c/S1AP_ErrorIndication.h | 44 + lib/s1ap3/asn1c/S1AP_EventType.c | 60 + lib/s1ap3/asn1c/S1AP_EventType.h | 57 + lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.c | 64 + lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.h | 46 + lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.c | 68 + lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.h | 61 + lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.c | 64 + lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.h | 46 + .../asn1c/S1AP_ExpectedUEActivityBehaviour.c | 83 + .../asn1c/S1AP_ExpectedUEActivityBehaviour.h | 52 + lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.c | 74 + lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.h | 48 + .../S1AP_Extended-UEIdentityIndexValue.c | 70 + .../S1AP_Extended-UEIdentityIndexValue.h | 45 + lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.c | 64 + lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.h | 46 + .../asn1c/S1AP_ExtendedRepetitionPeriod.c | 64 + .../asn1c/S1AP_ExtendedRepetitionPeriod.h | 45 + lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.c | 66 + lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.h | 60 + lib/s1ap3/asn1c/S1AP_ForbiddenLACs.c | 52 + lib/s1ap3/asn1c/S1AP_ForbiddenLACs.h | 42 + lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.c | 73 + lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.h | 50 + lib/s1ap3/asn1c/S1AP_ForbiddenLAs.c | 53 + lib/s1ap3/asn1c/S1AP_ForbiddenLAs.h | 44 + lib/s1ap3/asn1c/S1AP_ForbiddenTACs.c | 52 + lib/s1ap3/asn1c/S1AP_ForbiddenTACs.h | 42 + lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.c | 73 + lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.h | 50 + lib/s1ap3/asn1c/S1AP_ForbiddenTAs.c | 53 + lib/s1ap3/asn1c/S1AP_ForbiddenTAs.h | 44 + lib/s1ap3/asn1c/S1AP_GBR-QosInformation.c | 93 + lib/s1ap3/asn1c/S1AP_GBR-QosInformation.h | 51 + lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.c | 83 + lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.h | 52 + lib/s1ap3/asn1c/S1AP_GTP-TEID.c | 65 + lib/s1ap3/asn1c/S1AP_GTP-TEID.h | 46 + lib/s1ap3/asn1c/S1AP_GUMMEI.c | 83 + lib/s1ap3/asn1c/S1AP_GUMMEI.h | 52 + lib/s1ap3/asn1c/S1AP_GUMMEIList.c | 53 + lib/s1ap3/asn1c/S1AP_GUMMEIList.h | 41 + lib/s1ap3/asn1c/S1AP_GUMMEIType.c | 58 + lib/s1ap3/asn1c/S1AP_GUMMEIType.h | 54 + .../asn1c/S1AP_GWContextReleaseIndication.c | 56 + .../asn1c/S1AP_GWContextReleaseIndication.h | 53 + lib/s1ap3/asn1c/S1AP_Global-ENB-ID.c | 73 + lib/s1ap3/asn1c/S1AP_Global-ENB-ID.h | 50 + lib/s1ap3/asn1c/S1AP_HFN.c | 64 + lib/s1ap3/asn1c/S1AP_HFN.h | 46 + lib/s1ap3/asn1c/S1AP_HFNModified.c | 64 + lib/s1ap3/asn1c/S1AP_HFNModified.h | 46 + lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.c | 64 + lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.h | 46 + lib/s1ap3/asn1c/S1AP_HandoverCancel.c | 50 + lib/s1ap3/asn1c/S1AP_HandoverCancel.h | 44 + .../asn1c/S1AP_HandoverCancelAcknowledge.c | 50 + .../asn1c/S1AP_HandoverCancelAcknowledge.h | 44 + lib/s1ap3/asn1c/S1AP_HandoverCommand.c | 50 + lib/s1ap3/asn1c/S1AP_HandoverCommand.h | 44 + lib/s1ap3/asn1c/S1AP_HandoverFailure.c | 50 + lib/s1ap3/asn1c/S1AP_HandoverFailure.h | 44 + lib/s1ap3/asn1c/S1AP_HandoverNotify.c | 50 + lib/s1ap3/asn1c/S1AP_HandoverNotify.h | 44 + .../asn1c/S1AP_HandoverPreparationFailure.c | 50 + .../asn1c/S1AP_HandoverPreparationFailure.h | 44 + lib/s1ap3/asn1c/S1AP_HandoverRequest.c | 50 + lib/s1ap3/asn1c/S1AP_HandoverRequest.h | 44 + .../asn1c/S1AP_HandoverRequestAcknowledge.c | 50 + .../asn1c/S1AP_HandoverRequestAcknowledge.h | 44 + lib/s1ap3/asn1c/S1AP_HandoverRequired.c | 50 + lib/s1ap3/asn1c/S1AP_HandoverRequired.h | 44 + .../asn1c/S1AP_HandoverRestrictionList.c | 106 + .../asn1c/S1AP_HandoverRestrictionList.h | 54 + lib/s1ap3/asn1c/S1AP_HandoverType.c | 64 + lib/s1ap3/asn1c/S1AP_HandoverType.h | 57 + lib/s1ap3/asn1c/S1AP_IMSI.c | 65 + lib/s1ap3/asn1c/S1AP_IMSI.h | 46 + lib/s1ap3/asn1c/S1AP_ImmediateMDT.c | 95 + lib/s1ap3/asn1c/S1AP_ImmediateMDT.h | 54 + ...mationOnRecommendedCellsAndENBsForPaging.c | 73 + ...mationOnRecommendedCellsAndENBsForPaging.h | 48 + .../asn1c/S1AP_InitialContextSetupFailure.c | 50 + .../asn1c/S1AP_InitialContextSetupFailure.h | 44 + .../asn1c/S1AP_InitialContextSetupRequest.c | 50 + .../asn1c/S1AP_InitialContextSetupRequest.h | 44 + .../asn1c/S1AP_InitialContextSetupResponse.c | 50 + .../asn1c/S1AP_InitialContextSetupResponse.h | 44 + lib/s1ap3/asn1c/S1AP_InitialUEMessage.c | 50 + lib/s1ap3/asn1c/S1AP_InitialUEMessage.h | 44 + lib/s1ap3/asn1c/S1AP_InitiatingMessage.c | 1302 + lib/s1ap3/asn1c/S1AP_InitiatingMessage.h | 275 + .../S1AP_IntegrityProtectionAlgorithms.c | 70 + .../S1AP_IntegrityProtectionAlgorithms.h | 46 + .../S1AP_IntendedNumberOfPagingAttempts.c | 64 + .../S1AP_IntendedNumberOfPagingAttempts.h | 46 + ...S1AP_Inter-SystemInformationTransferType.c | 56 + ...S1AP_Inter-SystemInformationTransferType.h | 55 + lib/s1ap3/asn1c/S1AP_InterfacesToTrace.c | 70 + lib/s1ap3/asn1c/S1AP_InterfacesToTrace.h | 46 + lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.c | 54 + lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.h | 50 + lib/s1ap3/asn1c/S1AP_KillRequest.c | 50 + lib/s1ap3/asn1c/S1AP_KillRequest.h | 44 + lib/s1ap3/asn1c/S1AP_KillResponse.c | 50 + lib/s1ap3/asn1c/S1AP_KillResponse.h | 44 + lib/s1ap3/asn1c/S1AP_L3-Information.c | 31 + lib/s1ap3/asn1c/S1AP_L3-Information.h | 45 + lib/s1ap3/asn1c/S1AP_LAC.c | 65 + lib/s1ap3/asn1c/S1AP_LAC.h | 46 + lib/s1ap3/asn1c/S1AP_LAI.c | 73 + lib/s1ap3/asn1c/S1AP_LAI.h | 50 + lib/s1ap3/asn1c/S1AP_LHN-ID.c | 65 + lib/s1ap3/asn1c/S1AP_LHN-ID.h | 45 + lib/s1ap3/asn1c/S1AP_LPPa-PDU.c | 31 + lib/s1ap3/asn1c/S1AP_LPPa-PDU.h | 45 + lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.c | 77 + lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.h | 64 + .../S1AP_LastVisitedEUTRANCellInformation.c | 83 + .../S1AP_LastVisitedEUTRANCellInformation.h | 52 + .../S1AP_LastVisitedGERANCellInformation.c | 55 + .../S1AP_LastVisitedGERANCellInformation.h | 56 + .../S1AP_LastVisitedUTRANCellInformation.c | 31 + .../S1AP_LastVisitedUTRANCellInformation.h | 45 + lib/s1ap3/asn1c/S1AP_Links-to-log.c | 60 + lib/s1ap3/asn1c/S1AP_Links-to-log.h | 57 + .../asn1c/S1AP_ListeningSubframePattern.c | 161 + .../asn1c/S1AP_ListeningSubframePattern.h | 62 + lib/s1ap3/asn1c/S1AP_LocationReport.c | 50 + lib/s1ap3/asn1c/S1AP_LocationReport.h | 44 + .../asn1c/S1AP_LocationReportingControl.c | 50 + .../asn1c/S1AP_LocationReportingControl.h | 44 + .../S1AP_LocationReportingFailureIndication.c | 50 + .../S1AP_LocationReportingFailureIndication.h | 44 + lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.c | 84 + lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.h | 50 + lib/s1ap3/asn1c/S1AP_LoggedMDT.c | 73 + lib/s1ap3/asn1c/S1AP_LoggedMDT.h | 50 + lib/s1ap3/asn1c/S1AP_LoggingDuration.c | 64 + lib/s1ap3/asn1c/S1AP_LoggingDuration.h | 57 + lib/s1ap3/asn1c/S1AP_LoggingInterval.c | 68 + lib/s1ap3/asn1c/S1AP_LoggingInterval.h | 59 + lib/s1ap3/asn1c/S1AP_M-TMSI.c | 65 + lib/s1ap3/asn1c/S1AP_M-TMSI.h | 46 + lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.c | 73 + lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.h | 50 + lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.c | 60 + lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.h | 57 + lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.c | 63 + lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.h | 48 + lib/s1ap3/asn1c/S1AP_M3Configuration.c | 63 + lib/s1ap3/asn1c/S1AP_M3Configuration.h | 46 + lib/s1ap3/asn1c/S1AP_M3period.c | 60 + lib/s1ap3/asn1c/S1AP_M3period.h | 57 + lib/s1ap3/asn1c/S1AP_M4Configuration.c | 73 + lib/s1ap3/asn1c/S1AP_M4Configuration.h | 48 + lib/s1ap3/asn1c/S1AP_M4period.c | 64 + lib/s1ap3/asn1c/S1AP_M4period.h | 59 + lib/s1ap3/asn1c/S1AP_M5Configuration.c | 73 + lib/s1ap3/asn1c/S1AP_M5Configuration.h | 48 + lib/s1ap3/asn1c/S1AP_M5period.c | 64 + lib/s1ap3/asn1c/S1AP_M5period.h | 59 + lib/s1ap3/asn1c/S1AP_M6Configuration.c | 83 + lib/s1ap3/asn1c/S1AP_M6Configuration.h | 50 + lib/s1ap3/asn1c/S1AP_M6delay-threshold.c | 78 + lib/s1ap3/asn1c/S1AP_M6delay-threshold.h | 66 + lib/s1ap3/asn1c/S1AP_M6report-Interval.c | 62 + lib/s1ap3/asn1c/S1AP_M6report-Interval.h | 58 + lib/s1ap3/asn1c/S1AP_M7Configuration.c | 73 + lib/s1ap3/asn1c/S1AP_M7Configuration.h | 48 + lib/s1ap3/asn1c/S1AP_M7period.c | 64 + lib/s1ap3/asn1c/S1AP_M7period.h | 46 + lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.c | 53 + lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.h | 44 + lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.c | 106 + lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.h | 50 + lib/s1ap3/asn1c/S1AP_MDT-Activation.c | 62 + lib/s1ap3/asn1c/S1AP_MDT-Activation.h | 58 + lib/s1ap3/asn1c/S1AP_MDT-Configuration.c | 83 + lib/s1ap3/asn1c/S1AP_MDT-Configuration.h | 50 + lib/s1ap3/asn1c/S1AP_MDT-Location-Info.c | 70 + lib/s1ap3/asn1c/S1AP_MDT-Location-Info.h | 45 + lib/s1ap3/asn1c/S1AP_MDTMode-Extension.c | 32 + lib/s1ap3/asn1c/S1AP_MDTMode-Extension.h | 45 + lib/s1ap3/asn1c/S1AP_MDTMode.c | 78 + lib/s1ap3/asn1c/S1AP_MDTMode.h | 63 + lib/s1ap3/asn1c/S1AP_MDTPLMNList.c | 52 + lib/s1ap3/asn1c/S1AP_MDTPLMNList.h | 39 + lib/s1ap3/asn1c/S1AP_MME-Code.c | 65 + lib/s1ap3/asn1c/S1AP_MME-Code.h | 46 + lib/s1ap3/asn1c/S1AP_MME-Group-ID.c | 65 + lib/s1ap3/asn1c/S1AP_MME-Group-ID.h | 46 + lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.c | 60 + lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.h | 47 + .../asn1c/S1AP_MMECPRelocationIndication.c | 50 + .../asn1c/S1AP_MMECPRelocationIndication.h | 44 + .../asn1c/S1AP_MMEConfigurationTransfer.c | 50 + .../asn1c/S1AP_MMEConfigurationTransfer.h | 44 + lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.c | 50 + lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.h | 44 + .../S1AP_MMEConfigurationUpdateAcknowledge.c | 50 + .../S1AP_MMEConfigurationUpdateAcknowledge.h | 44 + .../S1AP_MMEConfigurationUpdateFailure.c | 50 + .../S1AP_MMEConfigurationUpdateFailure.h | 44 + .../asn1c/S1AP_MMEDirectInformationTransfer.c | 50 + .../asn1c/S1AP_MMEDirectInformationTransfer.h | 44 + lib/s1ap3/asn1c/S1AP_MMEPagingTarget.c | 67 + lib/s1ap3/asn1c/S1AP_MMEPagingTarget.h | 61 + .../asn1c/S1AP_MMERelaySupportIndicator.c | 56 + .../asn1c/S1AP_MMERelaySupportIndicator.h | 53 + lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.c | 50 + lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.h | 44 + lib/s1ap3/asn1c/S1AP_MMEname.c | 109 + lib/s1ap3/asn1c/S1AP_MMEname.h | 45 + lib/s1ap3/asn1c/S1AP_MSClassmark2.c | 31 + lib/s1ap3/asn1c/S1AP_MSClassmark2.h | 45 + lib/s1ap3/asn1c/S1AP_MSClassmark3.c | 31 + lib/s1ap3/asn1c/S1AP_MSClassmark3.h | 45 + .../asn1c/S1AP_ManagementBasedMDTAllowed.c | 56 + .../asn1c/S1AP_ManagementBasedMDTAllowed.h | 53 + lib/s1ap3/asn1c/S1AP_Masked-IMEISV.c | 70 + lib/s1ap3/asn1c/S1AP_Masked-IMEISV.h | 45 + lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.c | 65 + lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.h | 59 + lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.c | 70 + lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.h | 46 + lib/s1ap3/asn1c/S1AP_MessageIdentifier.c | 70 + lib/s1ap3/asn1c/S1AP_MessageIdentifier.h | 45 + lib/s1ap3/asn1c/S1AP_MobilityInformation.c | 70 + lib/s1ap3/asn1c/S1AP_MobilityInformation.h | 45 + .../asn1c/S1AP_MutingAvailabilityIndication.c | 58 + .../asn1c/S1AP_MutingAvailabilityIndication.h | 54 + .../asn1c/S1AP_MutingPatternInformation.c | 163 + .../asn1c/S1AP_MutingPatternInformation.h | 61 + lib/s1ap3/asn1c/S1AP_NAS-PDU.c | 31 + lib/s1ap3/asn1c/S1AP_NAS-PDU.h | 45 + lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.c | 50 + lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.h | 44 + .../asn1c/S1AP_NASNonDeliveryIndication.c | 50 + .../asn1c/S1AP_NASNonDeliveryIndication.h | 44 + .../S1AP_NASSecurityParametersfromE-UTRAN.c | 31 + .../S1AP_NASSecurityParametersfromE-UTRAN.h | 45 + .../S1AP_NASSecurityParameterstoE-UTRAN.c | 31 + .../S1AP_NASSecurityParameterstoE-UTRAN.h | 45 + .../asn1c/S1AP_NB-IoT-DefaultPagingDRX.c | 62 + .../asn1c/S1AP_NB-IoT-DefaultPagingDRX.h | 56 + .../asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.c | 82 + .../asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.h | 68 + .../S1AP_NB-IoT-Paging-eDRXInformation.c | 73 + .../S1AP_NB-IoT-Paging-eDRXInformation.h | 48 + .../asn1c/S1AP_NB-IoT-PagingTimeWindow.c | 86 + .../asn1c/S1AP_NB-IoT-PagingTimeWindow.h | 70 + .../asn1c/S1AP_NB-IoT-UEIdentityIndexValue.c | 70 + .../asn1c/S1AP_NB-IoT-UEIdentityIndexValue.h | 45 + lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.c | 58 + lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.h | 56 + lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.c | 64 + lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.h | 46 + .../asn1c/S1AP_NumberofBroadcastRequest.c | 64 + .../asn1c/S1AP_NumberofBroadcastRequest.h | 45 + .../asn1c/S1AP_OldBSS-ToNewBSS-Information.c | 31 + .../asn1c/S1AP_OldBSS-ToNewBSS-Information.h | 45 + lib/s1ap3/asn1c/S1AP_OverloadAction.c | 68 + lib/s1ap3/asn1c/S1AP_OverloadAction.h | 61 + lib/s1ap3/asn1c/S1AP_OverloadResponse.c | 55 + lib/s1ap3/asn1c/S1AP_OverloadResponse.h | 53 + lib/s1ap3/asn1c/S1AP_OverloadStart.c | 50 + lib/s1ap3/asn1c/S1AP_OverloadStart.h | 44 + lib/s1ap3/asn1c/S1AP_OverloadStop.c | 50 + lib/s1ap3/asn1c/S1AP_OverloadStop.h | 44 + lib/s1ap3/asn1c/S1AP_PDCP-SN.c | 64 + lib/s1ap3/asn1c/S1AP_PDCP-SN.h | 46 + lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.c | 64 + lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.h | 46 + lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.c | 64 + lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.h | 46 + lib/s1ap3/asn1c/S1AP_PLMNidentity.c | 65 + lib/s1ap3/asn1c/S1AP_PLMNidentity.h | 46 + lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.c | 56 + lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.h | 53 + lib/s1ap3/asn1c/S1AP_PWSFailureIndication.c | 50 + lib/s1ap3/asn1c/S1AP_PWSFailureIndication.h | 44 + lib/s1ap3/asn1c/S1AP_PWSRestartIndication.c | 50 + lib/s1ap3/asn1c/S1AP_PWSRestartIndication.h | 44 + lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.c | 53 + lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.h | 41 + lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.c | 82 + lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.h | 68 + lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.c | 73 + lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.h | 48 + lib/s1ap3/asn1c/S1AP_Paging.c | 50 + lib/s1ap3/asn1c/S1AP_Paging.h | 44 + lib/s1ap3/asn1c/S1AP_PagingAttemptCount.c | 64 + lib/s1ap3/asn1c/S1AP_PagingAttemptCount.h | 46 + .../asn1c/S1AP_PagingAttemptInformation.c | 83 + .../asn1c/S1AP_PagingAttemptInformation.h | 52 + lib/s1ap3/asn1c/S1AP_PagingDRX.c | 62 + lib/s1ap3/asn1c/S1AP_PagingDRX.h | 56 + lib/s1ap3/asn1c/S1AP_PagingPriority.c | 70 + lib/s1ap3/asn1c/S1AP_PagingPriority.h | 60 + lib/s1ap3/asn1c/S1AP_PagingTimeWindow.c | 86 + lib/s1ap3/asn1c/S1AP_PagingTimeWindow.h | 70 + lib/s1ap3/asn1c/S1AP_PathSwitchRequest.c | 50 + lib/s1ap3/asn1c/S1AP_PathSwitchRequest.h | 44 + .../asn1c/S1AP_PathSwitchRequestAcknowledge.c | 50 + .../asn1c/S1AP_PathSwitchRequestAcknowledge.h | 44 + .../asn1c/S1AP_PathSwitchRequestFailure.c | 50 + .../asn1c/S1AP_PathSwitchRequestFailure.h | 44 + lib/s1ap3/asn1c/S1AP_PedestrianUE.c | 58 + lib/s1ap3/asn1c/S1AP_PedestrianUE.h | 56 + lib/s1ap3/asn1c/S1AP_Port-Number.c | 65 + lib/s1ap3/asn1c/S1AP_Port-Number.h | 46 + lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.c | 56 + lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.h | 53 + .../asn1c/S1AP_Pre-emptionVulnerability.c | 56 + .../asn1c/S1AP_Pre-emptionVulnerability.h | 53 + lib/s1ap3/asn1c/S1AP_Presence.c | 58 + lib/s1ap3/asn1c/S1AP_Presence.h | 54 + lib/s1ap3/asn1c/S1AP_PriorityLevel.c | 64 + lib/s1ap3/asn1c/S1AP_PriorityLevel.h | 54 + lib/s1ap3/asn1c/S1AP_PrivacyIndicator.c | 58 + lib/s1ap3/asn1c/S1AP_PrivacyIndicator.h | 54 + lib/s1ap3/asn1c/S1AP_PrivateIE-Container.c | 53 + lib/s1ap3/asn1c/S1AP_PrivateIE-Container.h | 44 + lib/s1ap3/asn1c/S1AP_PrivateIE-Field.c | 175 + lib/s1ap3/asn1c/S1AP_PrivateIE-Field.h | 60 + lib/s1ap3/asn1c/S1AP_PrivateIE-ID.c | 98 + lib/s1ap3/asn1c/S1AP_PrivateIE-ID.h | 53 + lib/s1ap3/asn1c/S1AP_PrivateMessage.c | 50 + lib/s1ap3/asn1c/S1AP_PrivateMessage.h | 44 + lib/s1ap3/asn1c/S1AP_ProSeAuthorized.c | 73 + lib/s1ap3/asn1c/S1AP_ProSeAuthorized.h | 48 + .../asn1c/S1AP_ProSeDirectCommunication.c | 58 + .../asn1c/S1AP_ProSeDirectCommunication.h | 56 + lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.c | 58 + lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.h | 56 + .../asn1c/S1AP_ProSeUEtoNetworkRelaying.c | 58 + .../asn1c/S1AP_ProSeUEtoNetworkRelaying.h | 54 + lib/s1ap3/asn1c/S1AP_ProcedureCode.c | 64 + lib/s1ap3/asn1c/S1AP_ProcedureCode.h | 108 + .../S1AP_ProtocolError-IE-ContainerList.h | 23 + .../asn1c/S1AP_ProtocolExtensionContainer.c | 5127 +++ .../asn1c/S1AP_ProtocolExtensionContainer.h | 1342 + lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.c | 22083 ++++++++++ lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.h | 2734 ++ lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.c | 64 + lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.h | 46 + lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.c | 3923 ++ lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.h | 1034 + .../asn1c/S1AP_ProtocolIE-ContainerList.c | 440 + .../asn1c/S1AP_ProtocolIE-ContainerList.h | 134 + .../asn1c/S1AP_ProtocolIE-ContainerPair.h | 23 + .../asn1c/S1AP_ProtocolIE-ContainerPairList.h | 23 + lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.c | 36736 ++++++++++++++++ lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.h | 3711 ++ lib/s1ap3/asn1c/S1AP_ProtocolIE-FieldPair.h | 23 + lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.c | 64 + lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.h | 283 + .../asn1c/S1AP_ProtocolIE-SingleContainer.c | 653 + .../asn1c/S1AP_ProtocolIE-SingleContainer.h | 450 + lib/s1ap3/asn1c/S1AP_QCI.c | 64 + lib/s1ap3/asn1c/S1AP_QCI.h | 46 + lib/s1ap3/asn1c/S1AP_RAC.c | 65 + lib/s1ap3/asn1c/S1AP_RAC.h | 46 + lib/s1ap3/asn1c/S1AP_RAT-Type.c | 56 + lib/s1ap3/asn1c/S1AP_RAT-Type.h | 53 + lib/s1ap3/asn1c/S1AP_RIMInformation.c | 31 + lib/s1ap3/asn1c/S1AP_RIMInformation.h | 45 + lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.c | 111 + lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.h | 63 + lib/s1ap3/asn1c/S1AP_RIMTransfer.c | 74 + lib/s1ap3/asn1c/S1AP_RIMTransfer.h | 50 + lib/s1ap3/asn1c/S1AP_RLFReportInformation.c | 73 + lib/s1ap3/asn1c/S1AP_RLFReportInformation.h | 50 + lib/s1ap3/asn1c/S1AP_RNC-ID.c | 64 + lib/s1ap3/asn1c/S1AP_RNC-ID.h | 46 + lib/s1ap3/asn1c/S1AP_RRC-Container.c | 31 + lib/s1ap3/asn1c/S1AP_RRC-Container.h | 45 + .../asn1c/S1AP_RRC-Establishment-Cause.c | 70 + .../asn1c/S1AP_RRC-Establishment-Cause.h | 60 + .../S1AP_ReceiveStatusOfULPDCPSDUsExtended.c | 70 + .../S1AP_ReceiveStatusOfULPDCPSDUsExtended.h | 45 + ...ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c | 70 + ...ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h | 45 + .../asn1c/S1AP_ReceiveStatusofULPDCPSDUs.c | 70 + .../asn1c/S1AP_ReceiveStatusofULPDCPSDUs.h | 46 + lib/s1ap3/asn1c/S1AP_RecommendedCellItem.c | 106 + lib/s1ap3/asn1c/S1AP_RecommendedCellItem.h | 48 + lib/s1ap3/asn1c/S1AP_RecommendedCellList.c | 53 + lib/s1ap3/asn1c/S1AP_RecommendedCellList.h | 44 + .../asn1c/S1AP_RecommendedCellsForPaging.c | 63 + .../asn1c/S1AP_RecommendedCellsForPaging.h | 48 + lib/s1ap3/asn1c/S1AP_RecommendedENBItem.c | 63 + lib/s1ap3/asn1c/S1AP_RecommendedENBItem.h | 46 + lib/s1ap3/asn1c/S1AP_RecommendedENBList.c | 53 + lib/s1ap3/asn1c/S1AP_RecommendedENBList.h | 44 + .../asn1c/S1AP_RecommendedENBsForPaging.c | 63 + .../asn1c/S1AP_RecommendedENBsForPaging.h | 48 + lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.c | 64 + lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.h | 46 + lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.c | 56 + lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.h | 53 + lib/s1ap3/asn1c/S1AP_RepetitionPeriod.c | 64 + lib/s1ap3/asn1c/S1AP_RepetitionPeriod.h | 45 + lib/s1ap3/asn1c/S1AP_ReportAmountMDT.c | 68 + lib/s1ap3/asn1c/S1AP_ReportAmountMDT.h | 59 + lib/s1ap3/asn1c/S1AP_ReportArea.c | 56 + lib/s1ap3/asn1c/S1AP_ReportArea.h | 55 + lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.c | 78 + lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.h | 64 + lib/s1ap3/asn1c/S1AP_RequestType.c | 73 + lib/s1ap3/asn1c/S1AP_RequestType.h | 48 + lib/s1ap3/asn1c/S1AP_RerouteNASRequest.c | 50 + lib/s1ap3/asn1c/S1AP_RerouteNASRequest.h | 44 + lib/s1ap3/asn1c/S1AP_Reset.c | 50 + lib/s1ap3/asn1c/S1AP_Reset.h | 44 + lib/s1ap3/asn1c/S1AP_ResetAcknowledge.c | 50 + lib/s1ap3/asn1c/S1AP_ResetAcknowledge.h | 44 + lib/s1ap3/asn1c/S1AP_ResetAll.c | 56 + lib/s1ap3/asn1c/S1AP_ResetAll.h | 55 + lib/s1ap3/asn1c/S1AP_ResetType.c | 66 + lib/s1ap3/asn1c/S1AP_ResetType.h | 58 + lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.c | 50 + lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.h | 44 + lib/s1ap3/asn1c/S1AP_Routing-ID.c | 64 + lib/s1ap3/asn1c/S1AP_Routing-ID.h | 45 + lib/s1ap3/asn1c/S1AP_S-TMSI.c | 73 + lib/s1ap3/asn1c/S1AP_S-TMSI.h | 50 + lib/s1ap3/asn1c/S1AP_S1AP-PDU.c | 78 + lib/s1ap3/asn1c/S1AP_S1AP-PDU.h | 61 + lib/s1ap3/asn1c/S1AP_S1SetupFailure.c | 50 + lib/s1ap3/asn1c/S1AP_S1SetupFailure.h | 44 + lib/s1ap3/asn1c/S1AP_S1SetupRequest.c | 50 + lib/s1ap3/asn1c/S1AP_S1SetupRequest.h | 44 + lib/s1ap3/asn1c/S1AP_S1SetupResponse.c | 50 + lib/s1ap3/asn1c/S1AP_S1SetupResponse.h | 44 + .../asn1c/S1AP_SONConfigurationTransfer.c | 83 + .../asn1c/S1AP_SONConfigurationTransfer.h | 50 + .../asn1c/S1AP_SONInformation-Extension.c | 32 + .../asn1c/S1AP_SONInformation-Extension.h | 45 + lib/s1ap3/asn1c/S1AP_SONInformation.c | 77 + lib/s1ap3/asn1c/S1AP_SONInformation.h | 63 + lib/s1ap3/asn1c/S1AP_SONInformationReply.c | 64 + lib/s1ap3/asn1c/S1AP_SONInformationReply.h | 48 + lib/s1ap3/asn1c/S1AP_SONInformationReport.c | 56 + lib/s1ap3/asn1c/S1AP_SONInformationReport.h | 55 + lib/s1ap3/asn1c/S1AP_SONInformationRequest.c | 62 + lib/s1ap3/asn1c/S1AP_SONInformationRequest.h | 58 + lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.c | 58 + lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.h | 54 + .../asn1c/S1AP_SRVCCOperationNotPossible.c | 56 + .../asn1c/S1AP_SRVCCOperationNotPossible.h | 53 + lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.c | 56 + lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.h | 53 + lib/s1ap3/asn1c/S1AP_SecurityContext.c | 106 + lib/s1ap3/asn1c/S1AP_SecurityContext.h | 48 + lib/s1ap3/asn1c/S1AP_SecurityKey.c | 70 + lib/s1ap3/asn1c/S1AP_SecurityKey.h | 46 + lib/s1ap3/asn1c/S1AP_SerialNumber.c | 70 + lib/s1ap3/asn1c/S1AP_SerialNumber.h | 45 + lib/s1ap3/asn1c/S1AP_ServedDCNs.c | 53 + lib/s1ap3/asn1c/S1AP_ServedDCNs.h | 41 + lib/s1ap3/asn1c/S1AP_ServedDCNsItem.c | 73 + lib/s1ap3/asn1c/S1AP_ServedDCNsItem.h | 50 + lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.c | 53 + lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.h | 41 + lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.c | 83 + lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.h | 52 + lib/s1ap3/asn1c/S1AP_ServedGroupIDs.c | 52 + lib/s1ap3/asn1c/S1AP_ServedGroupIDs.h | 42 + lib/s1ap3/asn1c/S1AP_ServedMMECs.c | 52 + lib/s1ap3/asn1c/S1AP_ServedMMECs.h | 42 + lib/s1ap3/asn1c/S1AP_ServedPLMNs.c | 52 + lib/s1ap3/asn1c/S1AP_ServedPLMNs.h | 42 + ...1AP_Source-ToTarget-TransparentContainer.c | 31 + ...1AP_Source-ToTarget-TransparentContainer.h | 45 + ...urceBSS-ToTargetBSS-TransparentContainer.c | 31 + ...urceBSS-ToTargetBSS-TransparentContainer.h | 45 + ...P_SourceOfUEActivityBehaviourInformation.c | 58 + ...P_SourceOfUEActivityBehaviourInformation.h | 56 + ...urceRNC-ToTargetRNC-TransparentContainer.c | 31 + ...urceRNC-ToTargetRNC-TransparentContainer.h | 45 + lib/s1ap3/asn1c/S1AP_SourceeNB-ID.c | 73 + lib/s1ap3/asn1c/S1AP_SourceeNB-ID.h | 46 + ...urceeNB-ToTargeteNB-TransparentContainer.c | 104 + ...urceeNB-ToTargeteNB-TransparentContainer.h | 54 + lib/s1ap3/asn1c/S1AP_StratumLevel.c | 64 + lib/s1ap3/asn1c/S1AP_StratumLevel.h | 46 + .../asn1c/S1AP_SubscriberProfileIDforRFP.c | 64 + .../asn1c/S1AP_SubscriberProfileIDforRFP.h | 46 + lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.c | 892 + lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.h | 193 + lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.c | 73 + lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.h | 50 + lib/s1ap3/asn1c/S1AP_SupportedTAs.c | 53 + lib/s1ap3/asn1c/S1AP_SupportedTAs.h | 41 + .../asn1c/S1AP_SynchronisationInformation.c | 85 + .../asn1c/S1AP_SynchronisationInformation.h | 50 + lib/s1ap3/asn1c/S1AP_SynchronisationStatus.c | 58 + lib/s1ap3/asn1c/S1AP_SynchronisationStatus.h | 56 + lib/s1ap3/asn1c/S1AP_TABasedMDT.c | 63 + lib/s1ap3/asn1c/S1AP_TABasedMDT.h | 48 + lib/s1ap3/asn1c/S1AP_TAC.c | 65 + lib/s1ap3/asn1c/S1AP_TAC.h | 46 + lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.c | 73 + lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.h | 50 + lib/s1ap3/asn1c/S1AP_TAI-Broadcast.c | 53 + lib/s1ap3/asn1c/S1AP_TAI-Broadcast.h | 44 + lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.c | 73 + lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.h | 50 + lib/s1ap3/asn1c/S1AP_TAI-Cancelled.c | 53 + lib/s1ap3/asn1c/S1AP_TAI-Cancelled.h | 44 + lib/s1ap3/asn1c/S1AP_TAI.c | 73 + lib/s1ap3/asn1c/S1AP_TAI.h | 50 + lib/s1ap3/asn1c/S1AP_TAIBasedMDT.c | 63 + lib/s1ap3/asn1c/S1AP_TAIBasedMDT.h | 48 + lib/s1ap3/asn1c/S1AP_TAIItem.c | 63 + lib/s1ap3/asn1c/S1AP_TAIItem.h | 46 + lib/s1ap3/asn1c/S1AP_TAIList.c | 53 + lib/s1ap3/asn1c/S1AP_TAIList.h | 41 + lib/s1ap3/asn1c/S1AP_TAIListForRestart.c | 53 + lib/s1ap3/asn1c/S1AP_TAIListForRestart.h | 41 + lib/s1ap3/asn1c/S1AP_TAIListforMDT.c | 53 + lib/s1ap3/asn1c/S1AP_TAIListforMDT.h | 44 + lib/s1ap3/asn1c/S1AP_TAIListforWarning.c | 53 + lib/s1ap3/asn1c/S1AP_TAIListforWarning.h | 44 + lib/s1ap3/asn1c/S1AP_TAListforMDT.c | 52 + lib/s1ap3/asn1c/S1AP_TAListforMDT.h | 42 + lib/s1ap3/asn1c/S1AP_TBCD-STRING.c | 65 + lib/s1ap3/asn1c/S1AP_TBCD-STRING.h | 46 + ...1AP_Target-ToSource-TransparentContainer.c | 31 + ...1AP_Target-ToSource-TransparentContainer.h | 45 + ...rgetBSS-ToSourceBSS-TransparentContainer.c | 31 + ...rgetBSS-ToSourceBSS-TransparentContainer.h | 45 + lib/s1ap3/asn1c/S1AP_TargetID.c | 78 + lib/s1ap3/asn1c/S1AP_TargetID.h | 61 + lib/s1ap3/asn1c/S1AP_TargetRNC-ID.c | 93 + lib/s1ap3/asn1c/S1AP_TargetRNC-ID.h | 54 + ...rgetRNC-ToSourceRNC-TransparentContainer.c | 31 + ...rgetRNC-ToSourceRNC-TransparentContainer.h | 45 + lib/s1ap3/asn1c/S1AP_TargeteNB-ID.c | 73 + lib/s1ap3/asn1c/S1AP_TargeteNB-ID.h | 50 + ...rgeteNB-ToSourceeNB-TransparentContainer.c | 63 + ...rgeteNB-ToSourceeNB-TransparentContainer.h | 46 + lib/s1ap3/asn1c/S1AP_Threshold-RSRP.c | 64 + lib/s1ap3/asn1c/S1AP_Threshold-RSRP.h | 46 + lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.c | 64 + lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.h | 46 + ...Time-UE-StayedInCell-EnhancedGranularity.c | 64 + ...Time-UE-StayedInCell-EnhancedGranularity.h | 45 + lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.c | 64 + lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.h | 46 + .../asn1c/S1AP_TimeSynchronisationInfo.c | 73 + .../asn1c/S1AP_TimeSynchronisationInfo.h | 48 + lib/s1ap3/asn1c/S1AP_TimeToWait.c | 66 + lib/s1ap3/asn1c/S1AP_TimeToWait.h | 58 + lib/s1ap3/asn1c/S1AP_TraceActivation.c | 93 + lib/s1ap3/asn1c/S1AP_TraceActivation.h | 52 + lib/s1ap3/asn1c/S1AP_TraceDepth.c | 66 + lib/s1ap3/asn1c/S1AP_TraceDepth.h | 60 + lib/s1ap3/asn1c/S1AP_TraceFailureIndication.c | 50 + lib/s1ap3/asn1c/S1AP_TraceFailureIndication.h | 44 + lib/s1ap3/asn1c/S1AP_TraceStart.c | 50 + lib/s1ap3/asn1c/S1AP_TraceStart.h | 44 + .../S1AP_TrafficLoadReductionIndication.c | 64 + .../S1AP_TrafficLoadReductionIndication.h | 45 + lib/s1ap3/asn1c/S1AP_TransportInformation.c | 60 + lib/s1ap3/asn1c/S1AP_TransportInformation.h | 44 + lib/s1ap3/asn1c/S1AP_TransportLayerAddress.c | 70 + lib/s1ap3/asn1c/S1AP_TransportLayerAddress.h | 46 + lib/s1ap3/asn1c/S1AP_TriggeringMessage.c | 58 + lib/s1ap3/asn1c/S1AP_TriggeringMessage.h | 54 + lib/s1ap3/asn1c/S1AP_TunnelInformation.c | 73 + lib/s1ap3/asn1c/S1AP_TunnelInformation.h | 48 + lib/s1ap3/asn1c/S1AP_TypeOfError.c | 58 + lib/s1ap3/asn1c/S1AP_TypeOfError.h | 56 + lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.c | 53 + lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.h | 44 + .../S1AP_UE-HistoryInformationFromTheUE.c | 31 + .../S1AP_UE-HistoryInformationFromTheUE.h | 45 + ...-RLF-Report-Container-for-extended-bands.c | 31 + ...-RLF-Report-Container-for-extended-bands.h | 45 + .../asn1c/S1AP_UE-RLF-Report-Container.c | 31 + .../asn1c/S1AP_UE-RLF-Report-Container.h | 45 + .../asn1c/S1AP_UE-RetentionInformation.c | 56 + .../asn1c/S1AP_UE-RetentionInformation.h | 53 + lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.c | 73 + lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.h | 50 + lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.c | 66 + lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.h | 58 + lib/s1ap3/asn1c/S1AP_UE-Usage-Type.c | 64 + lib/s1ap3/asn1c/S1AP_UE-Usage-Type.h | 45 + ...AP_UE-associatedLogicalS1-ConnectionItem.c | 73 + ...AP_UE-associatedLogicalS1-ConnectionItem.h | 48 + ...UE-associatedLogicalS1-ConnectionListRes.c | 53 + ...UE-associatedLogicalS1-ConnectionListRes.h | 44 + ...associatedLogicalS1-ConnectionListResAck.c | 53 + ...associatedLogicalS1-ConnectionListResAck.h | 41 + .../asn1c/S1AP_UEAggregateMaximumBitrate.c | 73 + .../asn1c/S1AP_UEAggregateMaximumBitrate.h | 47 + .../asn1c/S1AP_UECapabilityInfoIndication.c | 50 + .../asn1c/S1AP_UECapabilityInfoIndication.h | 44 + .../asn1c/S1AP_UEContextModificationConfirm.c | 50 + .../asn1c/S1AP_UEContextModificationConfirm.h | 44 + .../asn1c/S1AP_UEContextModificationFailure.c | 50 + .../asn1c/S1AP_UEContextModificationFailure.h | 44 + .../S1AP_UEContextModificationIndication.c | 50 + .../S1AP_UEContextModificationIndication.h | 44 + .../asn1c/S1AP_UEContextModificationRequest.c | 50 + .../asn1c/S1AP_UEContextModificationRequest.h | 44 + .../S1AP_UEContextModificationResponse.c | 50 + .../S1AP_UEContextModificationResponse.h | 44 + .../asn1c/S1AP_UEContextReleaseCommand.c | 50 + .../asn1c/S1AP_UEContextReleaseCommand.h | 44 + .../asn1c/S1AP_UEContextReleaseComplete.c | 50 + .../asn1c/S1AP_UEContextReleaseComplete.h | 44 + .../asn1c/S1AP_UEContextReleaseRequest.c | 50 + .../asn1c/S1AP_UEContextReleaseRequest.h | 44 + lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.c | 50 + lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.h | 44 + lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.c | 50 + lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.h | 44 + .../asn1c/S1AP_UEContextResumeResponse.c | 50 + .../asn1c/S1AP_UEContextResumeResponse.h | 44 + .../asn1c/S1AP_UEContextSuspendRequest.c | 50 + .../asn1c/S1AP_UEContextSuspendRequest.h | 44 + .../asn1c/S1AP_UEContextSuspendResponse.c | 50 + .../asn1c/S1AP_UEContextSuspendResponse.h | 44 + lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.c | 70 + lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.h | 45 + lib/s1ap3/asn1c/S1AP_UEInformationTransfer.c | 50 + lib/s1ap3/asn1c/S1AP_UEInformationTransfer.h | 44 + lib/s1ap3/asn1c/S1AP_UEPagingID.c | 66 + lib/s1ap3/asn1c/S1AP_UEPagingID.h | 58 + lib/s1ap3/asn1c/S1AP_UERadioCapability.c | 31 + lib/s1ap3/asn1c/S1AP_UERadioCapability.h | 45 + .../asn1c/S1AP_UERadioCapabilityForPaging.c | 31 + .../asn1c/S1AP_UERadioCapabilityForPaging.h | 45 + .../S1AP_UERadioCapabilityMatchRequest.c | 50 + .../S1AP_UERadioCapabilityMatchRequest.h | 44 + .../S1AP_UERadioCapabilityMatchResponse.c | 50 + .../S1AP_UERadioCapabilityMatchResponse.h | 44 + lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.c | 73 + lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.h | 48 + .../S1AP_UESidelinkAggregateMaximumBitrate.c | 63 + .../S1AP_UESidelinkAggregateMaximumBitrate.h | 46 + .../S1AP_UEUserPlaneCIoTSupportIndicator.c | 56 + .../S1AP_UEUserPlaneCIoTSupportIndicator.h | 53 + .../asn1c/S1AP_UL-CP-SecurityInformation.c | 73 + .../asn1c/S1AP_UL-CP-SecurityInformation.h | 48 + lib/s1ap3/asn1c/S1AP_UL-NAS-Count.c | 70 + lib/s1ap3/asn1c/S1AP_UL-NAS-Count.h | 46 + lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.c | 70 + lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.h | 46 + lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.c | 772 + lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.h | 169 + lib/s1ap3/asn1c/S1AP_UplinkNASTransport.c | 50 + lib/s1ap3/asn1c/S1AP_UplinkNASTransport.h | 44 + .../S1AP_UplinkNonUEAssociatedLPPaTransport.c | 50 + .../S1AP_UplinkNonUEAssociatedLPPaTransport.h | 44 + .../asn1c/S1AP_UplinkS1cdma2000tunnelling.c | 50 + .../asn1c/S1AP_UplinkS1cdma2000tunnelling.h | 44 + .../S1AP_UplinkUEAssociatedLPPaTransport.c | 50 + .../S1AP_UplinkUEAssociatedLPPaTransport.h | 44 + .../asn1c/S1AP_UserLocationInformation.c | 73 + .../asn1c/S1AP_UserLocationInformation.h | 48 + lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.c | 73 + lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.h | 48 + lib/s1ap3/asn1c/S1AP_VehicleUE.c | 58 + lib/s1ap3/asn1c/S1AP_VehicleUE.h | 56 + .../asn1c/S1AP_VoiceSupportMatchIndicator.c | 58 + .../asn1c/S1AP_VoiceSupportMatchIndicator.h | 54 + lib/s1ap3/asn1c/S1AP_WarningAreaList.c | 78 + lib/s1ap3/asn1c/S1AP_WarningAreaList.h | 61 + lib/s1ap3/asn1c/S1AP_WarningMessageContents.c | 65 + lib/s1ap3/asn1c/S1AP_WarningMessageContents.h | 45 + lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.c | 65 + lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.h | 45 + lib/s1ap3/asn1c/S1AP_WarningType.c | 65 + lib/s1ap3/asn1c/S1AP_WarningType.h | 45 + .../asn1c/S1AP_WriteReplaceWarningRequest.c | 50 + .../asn1c/S1AP_WriteReplaceWarningRequest.h | 44 + .../asn1c/S1AP_WriteReplaceWarningResponse.c | 50 + .../asn1c/S1AP_WriteReplaceWarningResponse.h | 44 + lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.c | 63 + lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.h | 48 + lib/s1ap3/asn1c/S1AP_asn_constant.h | 57 + lib/s1ap3/asn1c/asn_SEQUENCE_OF.c | 41 + lib/s1ap3/asn1c/asn_SEQUENCE_OF.h | 52 + lib/s1ap3/asn1c/asn_SET_OF.c | 88 + lib/s1ap3/asn1c/asn_SET_OF.h | 72 + lib/s1ap3/asn1c/asn_application.c | 472 + lib/s1ap3/asn1c/asn_application.h | 171 + lib/s1ap3/asn1c/asn_bit_data.c | 333 + lib/s1ap3/asn1c/asn_bit_data.h | 83 + lib/s1ap3/asn1c/asn_codecs.h | 108 + lib/s1ap3/asn1c/asn_codecs_prim.c | 317 + lib/s1ap3/asn1c/asn_codecs_prim.h | 51 + lib/s1ap3/asn1c/asn_internal.c | 47 + lib/s1ap3/asn1c/asn_internal.h | 159 + lib/s1ap3/asn1c/asn_ioc.h | 51 + lib/s1ap3/asn1c/asn_random_fill.c | 56 + lib/s1ap3/asn1c/asn_random_fill.h | 51 + lib/s1ap3/asn1c/asn_system.h | 150 + lib/s1ap3/asn1c/ber_decoder.c | 283 + lib/s1ap3/asn1c/ber_decoder.h | 66 + lib/s1ap3/asn1c/ber_tlv_length.c | 168 + lib/s1ap3/asn1c/ber_tlv_length.h | 50 + lib/s1ap3/asn1c/ber_tlv_tag.c | 144 + lib/s1ap3/asn1c/ber_tlv_tag.h | 60 + lib/s1ap3/asn1c/constr_CHOICE.c | 1509 + lib/s1ap3/asn1c/constr_CHOICE.h | 80 + lib/s1ap3/asn1c/constr_CHOICE_oer.c | 380 + lib/s1ap3/asn1c/constr_SEQUENCE.c | 2059 + lib/s1ap3/asn1c/constr_SEQUENCE.h | 68 + lib/s1ap3/asn1c/constr_SEQUENCE_OF.c | 358 + lib/s1ap3/asn1c/constr_SEQUENCE_OF.h | 41 + lib/s1ap3/asn1c/constr_SEQUENCE_oer.c | 561 + lib/s1ap3/asn1c/constr_SET_OF.c | 1441 + lib/s1ap3/asn1c/constr_SET_OF.h | 49 + lib/s1ap3/asn1c/constr_SET_OF_oer.c | 285 + lib/s1ap3/asn1c/constr_TYPE.c | 80 + lib/s1ap3/asn1c/constr_TYPE.h | 262 + lib/s1ap3/asn1c/constraints.c | 93 + lib/s1ap3/asn1c/constraints.h | 62 + lib/s1ap3/asn1c/der_encoder.c | 194 + lib/s1ap3/asn1c/der_encoder.h | 68 + lib/s1ap3/asn1c/oer_decoder.c | 152 + lib/s1ap3/asn1c/oer_decoder.h | 72 + lib/s1ap3/asn1c/oer_encoder.c | 141 + lib/s1ap3/asn1c/oer_encoder.h | 70 + lib/s1ap3/asn1c/oer_support.c | 122 + lib/s1ap3/asn1c/oer_support.h | 47 + lib/s1ap3/asn1c/per_decoder.c | 185 + lib/s1ap3/asn1c/per_decoder.h | 82 + lib/s1ap3/asn1c/per_encoder.c | 265 + lib/s1ap3/asn1c/per_encoder.h | 93 + lib/s1ap3/asn1c/per_opentype.c | 535 + lib/s1ap3/asn1c/per_opentype.h | 44 + lib/s1ap3/asn1c/per_support.c | 489 + lib/s1ap3/asn1c/per_support.h | 127 + lib/s1ap3/asn1c/xer_decoder.c | 369 + lib/s1ap3/asn1c/xer_decoder.h | 106 + lib/s1ap3/asn1c/xer_encoder.c | 237 + lib/s1ap3/asn1c/xer_encoder.h | 83 + lib/s1ap3/asn1c/xer_support.c | 227 + lib/s1ap3/asn1c/xer_support.h | 55 + lib/s1ap3/support/.README.md.swp | Bin 0 -> 12288 bytes lib/s1ap3/support/README.md | 45 + lib/s1ap3/support/r14.4.0/36413-e40.asn | 6626 +++ lib/s1ap3/support/r14.4.0/36413-e40.txt | 6966 +++ lib/s1ap3/test/Makefile.am | 26 + lib/s1ap3/test/abts.c | 479 + lib/s1ap3/test/abts.h | 112 + lib/s1ap3/test/abts_tests.h | 29 + lib/s1ap3/test/s1ap_conv.c | 201 + lib/s1ap3/test/s1ap_conv.h | 38 + lib/s1ap3/test/s1ap_message_test.c | 532 + lib/s1ap3/test/testutil.c | 41 + lib/s1ap3/test/testutil.h | 62 + 1135 files changed, 180464 insertions(+), 3 deletions(-) create mode 100644 lib/s1ap3/Makefile.am create mode 100644 lib/s1ap3/asn1c/ANY.c create mode 100644 lib/s1ap3/asn1c/ANY.h create mode 100644 lib/s1ap3/asn1c/BIT_STRING.c create mode 100644 lib/s1ap3/asn1c/BIT_STRING.h create mode 100644 lib/s1ap3/asn1c/BIT_STRING_oer.c create mode 100644 lib/s1ap3/asn1c/BOOLEAN.c create mode 100644 lib/s1ap3/asn1c/BOOLEAN.h create mode 100644 lib/s1ap3/asn1c/INTEGER.c create mode 100644 lib/s1ap3/asn1c/INTEGER.h create mode 100644 lib/s1ap3/asn1c/INTEGER_oer.c create mode 100644 lib/s1ap3/asn1c/Makefile.am create mode 100644 lib/s1ap3/asn1c/Makefile.am.libasncodec create mode 100644 lib/s1ap3/asn1c/NULL.c create mode 100644 lib/s1ap3/asn1c/NULL.h create mode 100644 lib/s1ap3/asn1c/NativeEnumerated.c create mode 100644 lib/s1ap3/asn1c/NativeEnumerated.h create mode 100644 lib/s1ap3/asn1c/NativeEnumerated_oer.c create mode 100644 lib/s1ap3/asn1c/NativeInteger.c create mode 100644 lib/s1ap3/asn1c/NativeInteger.h create mode 100644 lib/s1ap3/asn1c/NativeInteger_oer.c create mode 100644 lib/s1ap3/asn1c/OBJECT_IDENTIFIER.c create mode 100644 lib/s1ap3/asn1c/OBJECT_IDENTIFIER.h create mode 100644 lib/s1ap3/asn1c/OCTET_STRING.c create mode 100644 lib/s1ap3/asn1c/OCTET_STRING.h create mode 100644 lib/s1ap3/asn1c/OCTET_STRING_oer.c create mode 100644 lib/s1ap3/asn1c/OPEN_TYPE.c create mode 100644 lib/s1ap3/asn1c/OPEN_TYPE.h create mode 100644 lib/s1ap3/asn1c/OPEN_TYPE_oer.c create mode 100644 lib/s1ap3/asn1c/PrintableString.c create mode 100644 lib/s1ap3/asn1c/PrintableString.h create mode 100644 lib/s1ap3/asn1c/S1AP_Additional-GUTI.c create mode 100644 lib/s1ap3/asn1c/S1AP_Additional-GUTI.h create mode 100644 lib/s1ap3/asn1c/S1AP_AdditionalCSFallbackIndicator.c create mode 100644 lib/s1ap3/asn1c/S1AP_AdditionalCSFallbackIndicator.h create mode 100644 lib/s1ap3/asn1c/S1AP_AllocationAndRetentionPriority.c create mode 100644 lib/s1ap3/asn1c/S1AP_AllocationAndRetentionPriority.h create mode 100644 lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_AssistanceDataForCECapableUEs.c create mode 100644 lib/s1ap3/asn1c/S1AP_AssistanceDataForCECapableUEs.h create mode 100644 lib/s1ap3/asn1c/S1AP_AssistanceDataForPaging.c create mode 100644 lib/s1ap3/asn1c/S1AP_AssistanceDataForPaging.h create mode 100644 lib/s1ap3/asn1c/S1AP_AssistanceDataForRecommendedCells.c create mode 100644 lib/s1ap3/asn1c/S1AP_AssistanceDataForRecommendedCells.h create mode 100644 lib/s1ap3/asn1c/S1AP_BPLMNs.c create mode 100644 lib/s1ap3/asn1c/S1AP_BPLMNs.h create mode 100644 lib/s1ap3/asn1c/S1AP_BearerType.c create mode 100644 lib/s1ap3/asn1c/S1AP_BearerType.h create mode 100644 lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransfer-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransfer-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransferList.c create mode 100644 lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransferList.h create mode 100644 lib/s1ap3/asn1c/S1AP_BitRate.c create mode 100644 lib/s1ap3/asn1c/S1AP_BitRate.h create mode 100644 lib/s1ap3/asn1c/S1AP_BroadcastCancelledAreaList.c create mode 100644 lib/s1ap3/asn1c/S1AP_BroadcastCancelledAreaList.h create mode 100644 lib/s1ap3/asn1c/S1AP_BroadcastCompletedAreaList.c create mode 100644 lib/s1ap3/asn1c/S1AP_BroadcastCompletedAreaList.h create mode 100644 lib/s1ap3/asn1c/S1AP_CE-mode-B-SupportIndicator.c create mode 100644 lib/s1ap3/asn1c/S1AP_CE-mode-B-SupportIndicator.h create mode 100644 lib/s1ap3/asn1c/S1AP_CELevel.c create mode 100644 lib/s1ap3/asn1c/S1AP_CELevel.h create mode 100644 lib/s1ap3/asn1c/S1AP_CGI.c create mode 100644 lib/s1ap3/asn1c/S1AP_CGI.h create mode 100644 lib/s1ap3/asn1c/S1AP_CI.c create mode 100644 lib/s1ap3/asn1c/S1AP_CI.h create mode 100644 lib/s1ap3/asn1c/S1AP_CNDomain.c create mode 100644 lib/s1ap3/asn1c/S1AP_CNDomain.h create mode 100644 lib/s1ap3/asn1c/S1AP_COUNTValueExtended.c create mode 100644 lib/s1ap3/asn1c/S1AP_COUNTValueExtended.h create mode 100644 lib/s1ap3/asn1c/S1AP_COUNTvalue.c create mode 100644 lib/s1ap3/asn1c/S1AP_COUNTvalue.h create mode 100644 lib/s1ap3/asn1c/S1AP_COUNTvaluePDCP-SNlength18.c create mode 100644 lib/s1ap3/asn1c/S1AP_COUNTvaluePDCP-SNlength18.h create mode 100644 lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.c create mode 100644 lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.h create mode 100644 lib/s1ap3/asn1c/S1AP_CSG-Id.c create mode 100644 lib/s1ap3/asn1c/S1AP_CSG-Id.h create mode 100644 lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_CSG-IdList.c create mode 100644 lib/s1ap3/asn1c/S1AP_CSG-IdList.h create mode 100644 lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.c create mode 100644 lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.h create mode 100644 lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.c create mode 100644 lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.h create mode 100644 lib/s1ap3/asn1c/S1AP_CancelledCellinEAI-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_CancelledCellinEAI-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.c create mode 100644 lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.h create mode 100644 lib/s1ap3/asn1c/S1AP_CancelledCellinTAI-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_CancelledCellinTAI-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.c create mode 100644 lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cause.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cause.h create mode 100644 lib/s1ap3/asn1c/S1AP_CauseMisc.c create mode 100644 lib/s1ap3/asn1c/S1AP_CauseMisc.h create mode 100644 lib/s1ap3/asn1c/S1AP_CauseNas.c create mode 100644 lib/s1ap3/asn1c/S1AP_CauseNas.h create mode 100644 lib/s1ap3/asn1c/S1AP_CauseProtocol.c create mode 100644 lib/s1ap3/asn1c/S1AP_CauseProtocol.h create mode 100644 lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.c create mode 100644 lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.h create mode 100644 lib/s1ap3/asn1c/S1AP_CauseTransport.c create mode 100644 lib/s1ap3/asn1c/S1AP_CauseTransport.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000HORequiredIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000HORequiredIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000PDU.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000PDU.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000RATType.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000RATType.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.h create mode 100644 lib/s1ap3/asn1c/S1AP_Cell-Size.c create mode 100644 lib/s1ap3/asn1c/S1AP_Cell-Size.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellAccessMode.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellAccessMode.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellBasedMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellBasedMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellID-Broadcast.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellID-Broadcast.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellID-Cancelled.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellID-Cancelled.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellIdListforMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellIdListforMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellIdentifierAndCELevelForCECapableUEs.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellIdentifierAndCELevelForCECapableUEs.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellIdentity.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellIdentity.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellTrafficTrace.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellTrafficTrace.h create mode 100644 lib/s1ap3/asn1c/S1AP_CellType.c create mode 100644 lib/s1ap3/asn1c/S1AP_CellType.h create mode 100644 lib/s1ap3/asn1c/S1AP_CompletedCellinEAI-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_CompletedCellinEAI-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.c create mode 100644 lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.h create mode 100644 lib/s1ap3/asn1c/S1AP_CompletedCellinTAI-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_CompletedCellinTAI-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.c create mode 100644 lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.h create mode 100644 lib/s1ap3/asn1c/S1AP_ConcurrentWarningMessageIndicator.c create mode 100644 lib/s1ap3/asn1c/S1AP_ConcurrentWarningMessageIndicator.h create mode 100644 lib/s1ap3/asn1c/S1AP_ConnectionEstablishmentIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_ConnectionEstablishmentIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_Correlation-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_Correlation-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_Coverage-Level.c create mode 100644 lib/s1ap3/asn1c/S1AP_Coverage-Level.h create mode 100644 lib/s1ap3/asn1c/S1AP_Criticality.c create mode 100644 lib/s1ap3/asn1c/S1AP_Criticality.h create mode 100644 lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-List.c create mode 100644 lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-List.h create mode 100644 lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.c create mode 100644 lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.h create mode 100644 lib/s1ap3/asn1c/S1AP_DCN-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_DCN-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_DL-CP-SecurityInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_DL-CP-SecurityInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_DL-Forwarding.c create mode 100644 lib/s1ap3/asn1c/S1AP_DL-Forwarding.h create mode 100644 lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.c create mode 100644 lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.h create mode 100644 lib/s1ap3/asn1c/S1AP_DLNASPDUDeliveryAckRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_DLNASPDUDeliveryAckRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_Data-Forwarding-Not-Possible.c create mode 100644 lib/s1ap3/asn1c/S1AP_Data-Forwarding-Not-Possible.h create mode 100644 lib/s1ap3/asn1c/S1AP_DataCodingScheme.c create mode 100644 lib/s1ap3/asn1c/S1AP_DataCodingScheme.h create mode 100644 lib/s1ap3/asn1c/S1AP_DeactivateTrace.c create mode 100644 lib/s1ap3/asn1c/S1AP_DeactivateTrace.h create mode 100644 lib/s1ap3/asn1c/S1AP_Direct-Forwarding-Path-Availability.c create mode 100644 lib/s1ap3/asn1c/S1AP_Direct-Forwarding-Path-Availability.h create mode 100644 lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.c create mode 100644 lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.h create mode 100644 lib/s1ap3/asn1c/S1AP_DownlinkNonUEAssociatedLPPaTransport.c create mode 100644 lib/s1ap3/asn1c/S1AP_DownlinkNonUEAssociatedLPPaTransport.h create mode 100644 lib/s1ap3/asn1c/S1AP_DownlinkS1cdma2000tunnelling.c create mode 100644 lib/s1ap3/asn1c/S1AP_DownlinkS1cdma2000tunnelling.h create mode 100644 lib/s1ap3/asn1c/S1AP_DownlinkUEAssociatedLPPaTransport.c create mode 100644 lib/s1ap3/asn1c/S1AP_DownlinkUEAssociatedLPPaTransport.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RAB-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RAB-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerPairList.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABDataForwardingItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABDataForwardingItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeRes.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeRes.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeRes.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeRes.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToSetupItemHOReqAck.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedToSetupItemHOReqAck.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedtoSetupListHOReqAck.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABFailedtoSetupListHOReqAck.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABInformationList.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABInformationList.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABInformationListItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABInformationListItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABLevelQoSParameters.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABLevelQoSParameters.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABList.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABList.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModificationConfirm.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModificationConfirm.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModificationIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModificationIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModConf.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModConf.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModRes.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModRes.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModConf.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModConf.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModRes.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModRes.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedItemBearerModInd.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedItemBearerModInd.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedListBearerModInd.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedListBearerModInd.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseItemBearerRelComp.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseItemBearerRelComp.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseListBearerRelComp.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseListBearerRelComp.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupItemBearerSURes.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupItemBearerSURes.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupItemCtxtSURes.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupItemCtxtSURes.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupListBearerSURes.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupListBearerSURes.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupListCtxtSURes.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupListCtxtSURes.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSubjecttoDataForwardingList.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABSubjecttoDataForwardingList.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModInd.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModInd.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModInd.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModInd.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemBearerSUReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemBearerSUReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemHOReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemHOReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListBearerSUReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListBearerSUReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListHOReq.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListHOReq.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLList.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLList.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULList.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULList.h create mode 100644 lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_EARFCN.c create mode 100644 lib/s1ap3/asn1c/S1AP_EARFCN.h create mode 100644 lib/s1ap3/asn1c/S1AP_ECGI-List.c create mode 100644 lib/s1ap3/asn1c/S1AP_ECGI-List.h create mode 100644 lib/s1ap3/asn1c/S1AP_ECGIList.c create mode 100644 lib/s1ap3/asn1c/S1AP_ECGIList.h create mode 100644 lib/s1ap3/asn1c/S1AP_ECGIListForRestart.c create mode 100644 lib/s1ap3/asn1c/S1AP_ECGIListForRestart.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENB-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENB-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENB-StatusTransfer-TransparentContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENB-StatusTransfer-TransparentContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBCPRelocationIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBCPRelocationIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBConfigurationTransfer.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBConfigurationTransfer.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateAcknowledge.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateAcknowledge.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateFailure.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateFailure.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBDirectInformationTransfer.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBDirectInformationTransfer.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBIndirectX2TransportLayerAddresses.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBIndirectX2TransportLayerAddresses.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBX2TLAs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBX2TLAs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ENBname.c create mode 100644 lib/s1ap3/asn1c/S1AP_ENBname.h create mode 100644 lib/s1ap3/asn1c/S1AP_EPLMNs.c create mode 100644 lib/s1ap3/asn1c/S1AP_EPLMNs.h create mode 100644 lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.c create mode 100644 lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.h create mode 100644 lib/s1ap3/asn1c/S1AP_EUTRANRoundTripDelayEstimationInfo.c create mode 100644 lib/s1ap3/asn1c/S1AP_EUTRANRoundTripDelayEstimationInfo.h create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast.c create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast.h create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled.c create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled.h create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID.c create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaID.h create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.c create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.h create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaIDListForRestart.c create mode 100644 lib/s1ap3/asn1c/S1AP_EmergencyAreaIDListForRestart.h create mode 100644 lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.c create mode 100644 lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.h create mode 100644 lib/s1ap3/asn1c/S1AP_EnhancedCoverageRestricted.c create mode 100644 lib/s1ap3/asn1c/S1AP_EnhancedCoverageRestricted.h create mode 100644 lib/s1ap3/asn1c/S1AP_ErrorIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_ErrorIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_EventType.c create mode 100644 lib/s1ap3/asn1c/S1AP_EventType.h create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.c create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.h create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.c create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.h create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.c create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.h create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedUEActivityBehaviour.c create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedUEActivityBehaviour.h create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.c create mode 100644 lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.h create mode 100644 lib/s1ap3/asn1c/S1AP_Extended-UEIdentityIndexValue.c create mode 100644 lib/s1ap3/asn1c/S1AP_Extended-UEIdentityIndexValue.h create mode 100644 lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_ExtendedRepetitionPeriod.c create mode 100644 lib/s1ap3/asn1c/S1AP_ExtendedRepetitionPeriod.h create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenLACs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenLACs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenLAs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenLAs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenTACs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenTACs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenTAs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ForbiddenTAs.h create mode 100644 lib/s1ap3/asn1c/S1AP_GBR-QosInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_GBR-QosInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_GTP-TEID.c create mode 100644 lib/s1ap3/asn1c/S1AP_GTP-TEID.h create mode 100644 lib/s1ap3/asn1c/S1AP_GUMMEI.c create mode 100644 lib/s1ap3/asn1c/S1AP_GUMMEI.h create mode 100644 lib/s1ap3/asn1c/S1AP_GUMMEIList.c create mode 100644 lib/s1ap3/asn1c/S1AP_GUMMEIList.h create mode 100644 lib/s1ap3/asn1c/S1AP_GUMMEIType.c create mode 100644 lib/s1ap3/asn1c/S1AP_GUMMEIType.h create mode 100644 lib/s1ap3/asn1c/S1AP_GWContextReleaseIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_GWContextReleaseIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_Global-ENB-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_Global-ENB-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_HFN.c create mode 100644 lib/s1ap3/asn1c/S1AP_HFN.h create mode 100644 lib/s1ap3/asn1c/S1AP_HFNModified.c create mode 100644 lib/s1ap3/asn1c/S1AP_HFNModified.h create mode 100644 lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.c create mode 100644 lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverCancel.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverCancel.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverCancelAcknowledge.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverCancelAcknowledge.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverCommand.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverCommand.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverFailure.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverFailure.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverNotify.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverNotify.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverPreparationFailure.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverPreparationFailure.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverRequestAcknowledge.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverRequestAcknowledge.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverRequired.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverRequired.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverRestrictionList.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverRestrictionList.h create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverType.c create mode 100644 lib/s1ap3/asn1c/S1AP_HandoverType.h create mode 100644 lib/s1ap3/asn1c/S1AP_IMSI.c create mode 100644 lib/s1ap3/asn1c/S1AP_IMSI.h create mode 100644 lib/s1ap3/asn1c/S1AP_ImmediateMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_ImmediateMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_InformationOnRecommendedCellsAndENBsForPaging.c create mode 100644 lib/s1ap3/asn1c/S1AP_InformationOnRecommendedCellsAndENBsForPaging.h create mode 100644 lib/s1ap3/asn1c/S1AP_InitialContextSetupFailure.c create mode 100644 lib/s1ap3/asn1c/S1AP_InitialContextSetupFailure.h create mode 100644 lib/s1ap3/asn1c/S1AP_InitialContextSetupRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_InitialContextSetupRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_InitialContextSetupResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_InitialContextSetupResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_InitialUEMessage.c create mode 100644 lib/s1ap3/asn1c/S1AP_InitialUEMessage.h create mode 100644 lib/s1ap3/asn1c/S1AP_InitiatingMessage.c create mode 100644 lib/s1ap3/asn1c/S1AP_InitiatingMessage.h create mode 100644 lib/s1ap3/asn1c/S1AP_IntegrityProtectionAlgorithms.c create mode 100644 lib/s1ap3/asn1c/S1AP_IntegrityProtectionAlgorithms.h create mode 100644 lib/s1ap3/asn1c/S1AP_IntendedNumberOfPagingAttempts.c create mode 100644 lib/s1ap3/asn1c/S1AP_IntendedNumberOfPagingAttempts.h create mode 100644 lib/s1ap3/asn1c/S1AP_Inter-SystemInformationTransferType.c create mode 100644 lib/s1ap3/asn1c/S1AP_Inter-SystemInformationTransferType.h create mode 100644 lib/s1ap3/asn1c/S1AP_InterfacesToTrace.c create mode 100644 lib/s1ap3/asn1c/S1AP_InterfacesToTrace.h create mode 100644 lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.c create mode 100644 lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.h create mode 100644 lib/s1ap3/asn1c/S1AP_KillRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_KillRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_KillResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_KillResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_L3-Information.c create mode 100644 lib/s1ap3/asn1c/S1AP_L3-Information.h create mode 100644 lib/s1ap3/asn1c/S1AP_LAC.c create mode 100644 lib/s1ap3/asn1c/S1AP_LAC.h create mode 100644 lib/s1ap3/asn1c/S1AP_LAI.c create mode 100644 lib/s1ap3/asn1c/S1AP_LAI.h create mode 100644 lib/s1ap3/asn1c/S1AP_LHN-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_LHN-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_LPPa-PDU.c create mode 100644 lib/s1ap3/asn1c/S1AP_LPPa-PDU.h create mode 100644 lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_LastVisitedEUTRANCellInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_LastVisitedEUTRANCellInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_LastVisitedGERANCellInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_LastVisitedGERANCellInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_LastVisitedUTRANCellInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_LastVisitedUTRANCellInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_Links-to-log.c create mode 100644 lib/s1ap3/asn1c/S1AP_Links-to-log.h create mode 100644 lib/s1ap3/asn1c/S1AP_ListeningSubframePattern.c create mode 100644 lib/s1ap3/asn1c/S1AP_ListeningSubframePattern.h create mode 100644 lib/s1ap3/asn1c/S1AP_LocationReport.c create mode 100644 lib/s1ap3/asn1c/S1AP_LocationReport.h create mode 100644 lib/s1ap3/asn1c/S1AP_LocationReportingControl.c create mode 100644 lib/s1ap3/asn1c/S1AP_LocationReportingControl.h create mode 100644 lib/s1ap3/asn1c/S1AP_LocationReportingFailureIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_LocationReportingFailureIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_LoggedMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_LoggedMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_LoggingDuration.c create mode 100644 lib/s1ap3/asn1c/S1AP_LoggingDuration.h create mode 100644 lib/s1ap3/asn1c/S1AP_LoggingInterval.c create mode 100644 lib/s1ap3/asn1c/S1AP_LoggingInterval.h create mode 100644 lib/s1ap3/asn1c/S1AP_M-TMSI.c create mode 100644 lib/s1ap3/asn1c/S1AP_M-TMSI.h create mode 100644 lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.c create mode 100644 lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.h create mode 100644 lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.c create mode 100644 lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.h create mode 100644 lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.c create mode 100644 lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.h create mode 100644 lib/s1ap3/asn1c/S1AP_M3Configuration.c create mode 100644 lib/s1ap3/asn1c/S1AP_M3Configuration.h create mode 100644 lib/s1ap3/asn1c/S1AP_M3period.c create mode 100644 lib/s1ap3/asn1c/S1AP_M3period.h create mode 100644 lib/s1ap3/asn1c/S1AP_M4Configuration.c create mode 100644 lib/s1ap3/asn1c/S1AP_M4Configuration.h create mode 100644 lib/s1ap3/asn1c/S1AP_M4period.c create mode 100644 lib/s1ap3/asn1c/S1AP_M4period.h create mode 100644 lib/s1ap3/asn1c/S1AP_M5Configuration.c create mode 100644 lib/s1ap3/asn1c/S1AP_M5Configuration.h create mode 100644 lib/s1ap3/asn1c/S1AP_M5period.c create mode 100644 lib/s1ap3/asn1c/S1AP_M5period.h create mode 100644 lib/s1ap3/asn1c/S1AP_M6Configuration.c create mode 100644 lib/s1ap3/asn1c/S1AP_M6Configuration.h create mode 100644 lib/s1ap3/asn1c/S1AP_M6delay-threshold.c create mode 100644 lib/s1ap3/asn1c/S1AP_M6delay-threshold.h create mode 100644 lib/s1ap3/asn1c/S1AP_M6report-Interval.c create mode 100644 lib/s1ap3/asn1c/S1AP_M6report-Interval.h create mode 100644 lib/s1ap3/asn1c/S1AP_M7Configuration.c create mode 100644 lib/s1ap3/asn1c/S1AP_M7Configuration.h create mode 100644 lib/s1ap3/asn1c/S1AP_M7period.c create mode 100644 lib/s1ap3/asn1c/S1AP_M7period.h create mode 100644 lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.c create mode 100644 lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.h create mode 100644 lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.c create mode 100644 lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.h create mode 100644 lib/s1ap3/asn1c/S1AP_MDT-Activation.c create mode 100644 lib/s1ap3/asn1c/S1AP_MDT-Activation.h create mode 100644 lib/s1ap3/asn1c/S1AP_MDT-Configuration.c create mode 100644 lib/s1ap3/asn1c/S1AP_MDT-Configuration.h create mode 100644 lib/s1ap3/asn1c/S1AP_MDT-Location-Info.c create mode 100644 lib/s1ap3/asn1c/S1AP_MDT-Location-Info.h create mode 100644 lib/s1ap3/asn1c/S1AP_MDTMode-Extension.c create mode 100644 lib/s1ap3/asn1c/S1AP_MDTMode-Extension.h create mode 100644 lib/s1ap3/asn1c/S1AP_MDTMode.c create mode 100644 lib/s1ap3/asn1c/S1AP_MDTMode.h create mode 100644 lib/s1ap3/asn1c/S1AP_MDTPLMNList.c create mode 100644 lib/s1ap3/asn1c/S1AP_MDTPLMNList.h create mode 100644 lib/s1ap3/asn1c/S1AP_MME-Code.c create mode 100644 lib/s1ap3/asn1c/S1AP_MME-Code.h create mode 100644 lib/s1ap3/asn1c/S1AP_MME-Group-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_MME-Group-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMECPRelocationIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMECPRelocationIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMEConfigurationTransfer.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMEConfigurationTransfer.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateAcknowledge.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateAcknowledge.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateFailure.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateFailure.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMEDirectInformationTransfer.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMEDirectInformationTransfer.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMEPagingTarget.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMEPagingTarget.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMERelaySupportIndicator.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMERelaySupportIndicator.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.h create mode 100644 lib/s1ap3/asn1c/S1AP_MMEname.c create mode 100644 lib/s1ap3/asn1c/S1AP_MMEname.h create mode 100644 lib/s1ap3/asn1c/S1AP_MSClassmark2.c create mode 100644 lib/s1ap3/asn1c/S1AP_MSClassmark2.h create mode 100644 lib/s1ap3/asn1c/S1AP_MSClassmark3.c create mode 100644 lib/s1ap3/asn1c/S1AP_MSClassmark3.h create mode 100644 lib/s1ap3/asn1c/S1AP_ManagementBasedMDTAllowed.c create mode 100644 lib/s1ap3/asn1c/S1AP_ManagementBasedMDTAllowed.h create mode 100644 lib/s1ap3/asn1c/S1AP_Masked-IMEISV.c create mode 100644 lib/s1ap3/asn1c/S1AP_Masked-IMEISV.h create mode 100644 lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.c create mode 100644 lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.h create mode 100644 lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.c create mode 100644 lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.h create mode 100644 lib/s1ap3/asn1c/S1AP_MessageIdentifier.c create mode 100644 lib/s1ap3/asn1c/S1AP_MessageIdentifier.h create mode 100644 lib/s1ap3/asn1c/S1AP_MobilityInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_MobilityInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_MutingAvailabilityIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_MutingAvailabilityIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_MutingPatternInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_MutingPatternInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_NAS-PDU.c create mode 100644 lib/s1ap3/asn1c/S1AP_NAS-PDU.h create mode 100644 lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_NASNonDeliveryIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_NASNonDeliveryIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_NASSecurityParametersfromE-UTRAN.c create mode 100644 lib/s1ap3/asn1c/S1AP_NASSecurityParametersfromE-UTRAN.h create mode 100644 lib/s1ap3/asn1c/S1AP_NASSecurityParameterstoE-UTRAN.c create mode 100644 lib/s1ap3/asn1c/S1AP_NASSecurityParameterstoE-UTRAN.h create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-DefaultPagingDRX.c create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-DefaultPagingDRX.h create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.c create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.h create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRXInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRXInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-PagingTimeWindow.c create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-PagingTimeWindow.h create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-UEIdentityIndexValue.c create mode 100644 lib/s1ap3/asn1c/S1AP_NB-IoT-UEIdentityIndexValue.h create mode 100644 lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.c create mode 100644 lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.h create mode 100644 lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.c create mode 100644 lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.h create mode 100644 lib/s1ap3/asn1c/S1AP_NumberofBroadcastRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_NumberofBroadcastRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_OldBSS-ToNewBSS-Information.c create mode 100644 lib/s1ap3/asn1c/S1AP_OldBSS-ToNewBSS-Information.h create mode 100644 lib/s1ap3/asn1c/S1AP_OverloadAction.c create mode 100644 lib/s1ap3/asn1c/S1AP_OverloadAction.h create mode 100644 lib/s1ap3/asn1c/S1AP_OverloadResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_OverloadResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_OverloadStart.c create mode 100644 lib/s1ap3/asn1c/S1AP_OverloadStart.h create mode 100644 lib/s1ap3/asn1c/S1AP_OverloadStop.c create mode 100644 lib/s1ap3/asn1c/S1AP_OverloadStop.h create mode 100644 lib/s1ap3/asn1c/S1AP_PDCP-SN.c create mode 100644 lib/s1ap3/asn1c/S1AP_PDCP-SN.h create mode 100644 lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.c create mode 100644 lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.h create mode 100644 lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.c create mode 100644 lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.h create mode 100644 lib/s1ap3/asn1c/S1AP_PLMNidentity.c create mode 100644 lib/s1ap3/asn1c/S1AP_PLMNidentity.h create mode 100644 lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.c create mode 100644 lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.h create mode 100644 lib/s1ap3/asn1c/S1AP_PWSFailureIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_PWSFailureIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_PWSRestartIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_PWSRestartIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.c create mode 100644 lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.h create mode 100644 lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.c create mode 100644 lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.h create mode 100644 lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_Paging.c create mode 100644 lib/s1ap3/asn1c/S1AP_Paging.h create mode 100644 lib/s1ap3/asn1c/S1AP_PagingAttemptCount.c create mode 100644 lib/s1ap3/asn1c/S1AP_PagingAttemptCount.h create mode 100644 lib/s1ap3/asn1c/S1AP_PagingAttemptInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_PagingAttemptInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_PagingDRX.c create mode 100644 lib/s1ap3/asn1c/S1AP_PagingDRX.h create mode 100644 lib/s1ap3/asn1c/S1AP_PagingPriority.c create mode 100644 lib/s1ap3/asn1c/S1AP_PagingPriority.h create mode 100644 lib/s1ap3/asn1c/S1AP_PagingTimeWindow.c create mode 100644 lib/s1ap3/asn1c/S1AP_PagingTimeWindow.h create mode 100644 lib/s1ap3/asn1c/S1AP_PathSwitchRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_PathSwitchRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_PathSwitchRequestAcknowledge.c create mode 100644 lib/s1ap3/asn1c/S1AP_PathSwitchRequestAcknowledge.h create mode 100644 lib/s1ap3/asn1c/S1AP_PathSwitchRequestFailure.c create mode 100644 lib/s1ap3/asn1c/S1AP_PathSwitchRequestFailure.h create mode 100644 lib/s1ap3/asn1c/S1AP_PedestrianUE.c create mode 100644 lib/s1ap3/asn1c/S1AP_PedestrianUE.h create mode 100644 lib/s1ap3/asn1c/S1AP_Port-Number.c create mode 100644 lib/s1ap3/asn1c/S1AP_Port-Number.h create mode 100644 lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.c create mode 100644 lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.h create mode 100644 lib/s1ap3/asn1c/S1AP_Pre-emptionVulnerability.c create mode 100644 lib/s1ap3/asn1c/S1AP_Pre-emptionVulnerability.h create mode 100644 lib/s1ap3/asn1c/S1AP_Presence.c create mode 100644 lib/s1ap3/asn1c/S1AP_Presence.h create mode 100644 lib/s1ap3/asn1c/S1AP_PriorityLevel.c create mode 100644 lib/s1ap3/asn1c/S1AP_PriorityLevel.h create mode 100644 lib/s1ap3/asn1c/S1AP_PrivacyIndicator.c create mode 100644 lib/s1ap3/asn1c/S1AP_PrivacyIndicator.h create mode 100644 lib/s1ap3/asn1c/S1AP_PrivateIE-Container.c create mode 100644 lib/s1ap3/asn1c/S1AP_PrivateIE-Container.h create mode 100644 lib/s1ap3/asn1c/S1AP_PrivateIE-Field.c create mode 100644 lib/s1ap3/asn1c/S1AP_PrivateIE-Field.h create mode 100644 lib/s1ap3/asn1c/S1AP_PrivateIE-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_PrivateIE-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_PrivateMessage.c create mode 100644 lib/s1ap3/asn1c/S1AP_PrivateMessage.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProSeAuthorized.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProSeAuthorized.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProSeDirectCommunication.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProSeDirectCommunication.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProSeUEtoNetworkRelaying.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProSeUEtoNetworkRelaying.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProcedureCode.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProcedureCode.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolError-IE-ContainerList.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolExtensionContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolExtensionContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerList.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerList.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerPair.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerPairList.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-FieldPair.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-SingleContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_ProtocolIE-SingleContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_QCI.c create mode 100644 lib/s1ap3/asn1c/S1AP_QCI.h create mode 100644 lib/s1ap3/asn1c/S1AP_RAC.c create mode 100644 lib/s1ap3/asn1c/S1AP_RAC.h create mode 100644 lib/s1ap3/asn1c/S1AP_RAT-Type.c create mode 100644 lib/s1ap3/asn1c/S1AP_RAT-Type.h create mode 100644 lib/s1ap3/asn1c/S1AP_RIMInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_RIMInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.c create mode 100644 lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.h create mode 100644 lib/s1ap3/asn1c/S1AP_RIMTransfer.c create mode 100644 lib/s1ap3/asn1c/S1AP_RIMTransfer.h create mode 100644 lib/s1ap3/asn1c/S1AP_RLFReportInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_RLFReportInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_RNC-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_RNC-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_RRC-Container.c create mode 100644 lib/s1ap3/asn1c/S1AP_RRC-Container.h create mode 100644 lib/s1ap3/asn1c/S1AP_RRC-Establishment-Cause.c create mode 100644 lib/s1ap3/asn1c/S1AP_RRC-Establishment-Cause.h create mode 100644 lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsExtended.c create mode 100644 lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsExtended.h create mode 100644 lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c create mode 100644 lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h create mode 100644 lib/s1ap3/asn1c/S1AP_ReceiveStatusofULPDCPSDUs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ReceiveStatusofULPDCPSDUs.h create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedCellItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedCellItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedCellList.c create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedCellList.h create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedCellsForPaging.c create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedCellsForPaging.h create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedENBItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedENBItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedENBList.c create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedENBList.h create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedENBsForPaging.c create mode 100644 lib/s1ap3/asn1c/S1AP_RecommendedENBsForPaging.h create mode 100644 lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.c create mode 100644 lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.h create mode 100644 lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.c create mode 100644 lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.h create mode 100644 lib/s1ap3/asn1c/S1AP_RepetitionPeriod.c create mode 100644 lib/s1ap3/asn1c/S1AP_RepetitionPeriod.h create mode 100644 lib/s1ap3/asn1c/S1AP_ReportAmountMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_ReportAmountMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_ReportArea.c create mode 100644 lib/s1ap3/asn1c/S1AP_ReportArea.h create mode 100644 lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_RequestType.c create mode 100644 lib/s1ap3/asn1c/S1AP_RequestType.h create mode 100644 lib/s1ap3/asn1c/S1AP_RerouteNASRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_RerouteNASRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_Reset.c create mode 100644 lib/s1ap3/asn1c/S1AP_Reset.h create mode 100644 lib/s1ap3/asn1c/S1AP_ResetAcknowledge.c create mode 100644 lib/s1ap3/asn1c/S1AP_ResetAcknowledge.h create mode 100644 lib/s1ap3/asn1c/S1AP_ResetAll.c create mode 100644 lib/s1ap3/asn1c/S1AP_ResetAll.h create mode 100644 lib/s1ap3/asn1c/S1AP_ResetType.c create mode 100644 lib/s1ap3/asn1c/S1AP_ResetType.h create mode 100644 lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_Routing-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_Routing-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_S-TMSI.c create mode 100644 lib/s1ap3/asn1c/S1AP_S-TMSI.h create mode 100644 lib/s1ap3/asn1c/S1AP_S1AP-PDU.c create mode 100644 lib/s1ap3/asn1c/S1AP_S1AP-PDU.h create mode 100644 lib/s1ap3/asn1c/S1AP_S1SetupFailure.c create mode 100644 lib/s1ap3/asn1c/S1AP_S1SetupFailure.h create mode 100644 lib/s1ap3/asn1c/S1AP_S1SetupRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_S1SetupRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_S1SetupResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_S1SetupResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_SONConfigurationTransfer.c create mode 100644 lib/s1ap3/asn1c/S1AP_SONConfigurationTransfer.h create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformation-Extension.c create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformation-Extension.h create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformationReply.c create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformationReply.h create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformationReport.c create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformationReport.h create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformationRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_SONInformationRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_SRVCCOperationNotPossible.c create mode 100644 lib/s1ap3/asn1c/S1AP_SRVCCOperationNotPossible.h create mode 100644 lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.c create mode 100644 lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.h create mode 100644 lib/s1ap3/asn1c/S1AP_SecurityContext.c create mode 100644 lib/s1ap3/asn1c/S1AP_SecurityContext.h create mode 100644 lib/s1ap3/asn1c/S1AP_SecurityKey.c create mode 100644 lib/s1ap3/asn1c/S1AP_SecurityKey.h create mode 100644 lib/s1ap3/asn1c/S1AP_SerialNumber.c create mode 100644 lib/s1ap3/asn1c/S1AP_SerialNumber.h create mode 100644 lib/s1ap3/asn1c/S1AP_ServedDCNs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ServedDCNs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ServedDCNsItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_ServedDCNsItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_ServedGroupIDs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ServedGroupIDs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ServedMMECs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ServedMMECs.h create mode 100644 lib/s1ap3/asn1c/S1AP_ServedPLMNs.c create mode 100644 lib/s1ap3/asn1c/S1AP_ServedPLMNs.h create mode 100644 lib/s1ap3/asn1c/S1AP_Source-ToTarget-TransparentContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_Source-ToTarget-TransparentContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_SourceBSS-ToTargetBSS-TransparentContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_SourceBSS-ToTargetBSS-TransparentContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_SourceOfUEActivityBehaviourInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_SourceOfUEActivityBehaviourInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_SourceRNC-ToTargetRNC-TransparentContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_SourceRNC-ToTargetRNC-TransparentContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_SourceeNB-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_SourceeNB-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_SourceeNB-ToTargeteNB-TransparentContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_SourceeNB-ToTargeteNB-TransparentContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_StratumLevel.c create mode 100644 lib/s1ap3/asn1c/S1AP_StratumLevel.h create mode 100644 lib/s1ap3/asn1c/S1AP_SubscriberProfileIDforRFP.c create mode 100644 lib/s1ap3/asn1c/S1AP_SubscriberProfileIDforRFP.h create mode 100644 lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.c create mode 100644 lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.h create mode 100644 lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_SupportedTAs.c create mode 100644 lib/s1ap3/asn1c/S1AP_SupportedTAs.h create mode 100644 lib/s1ap3/asn1c/S1AP_SynchronisationInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_SynchronisationInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_SynchronisationStatus.c create mode 100644 lib/s1ap3/asn1c/S1AP_SynchronisationStatus.h create mode 100644 lib/s1ap3/asn1c/S1AP_TABasedMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_TABasedMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAC.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAC.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAI-Broadcast.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAI-Broadcast.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAI-Cancelled.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAI-Cancelled.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAI.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAI.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAIBasedMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAIBasedMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAIItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAIItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAIList.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAIList.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAIListForRestart.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAIListForRestart.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAIListforMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAIListforMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAIListforWarning.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAIListforWarning.h create mode 100644 lib/s1ap3/asn1c/S1AP_TAListforMDT.c create mode 100644 lib/s1ap3/asn1c/S1AP_TAListforMDT.h create mode 100644 lib/s1ap3/asn1c/S1AP_TBCD-STRING.c create mode 100644 lib/s1ap3/asn1c/S1AP_TBCD-STRING.h create mode 100644 lib/s1ap3/asn1c/S1AP_Target-ToSource-TransparentContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_Target-ToSource-TransparentContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_TargetBSS-ToSourceBSS-TransparentContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_TargetBSS-ToSourceBSS-TransparentContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_TargetID.c create mode 100644 lib/s1ap3/asn1c/S1AP_TargetID.h create mode 100644 lib/s1ap3/asn1c/S1AP_TargetRNC-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_TargetRNC-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_TargetRNC-ToSourceRNC-TransparentContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_TargetRNC-ToSourceRNC-TransparentContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_TargeteNB-ID.c create mode 100644 lib/s1ap3/asn1c/S1AP_TargeteNB-ID.h create mode 100644 lib/s1ap3/asn1c/S1AP_TargeteNB-ToSourceeNB-TransparentContainer.c create mode 100644 lib/s1ap3/asn1c/S1AP_TargeteNB-ToSourceeNB-TransparentContainer.h create mode 100644 lib/s1ap3/asn1c/S1AP_Threshold-RSRP.c create mode 100644 lib/s1ap3/asn1c/S1AP_Threshold-RSRP.h create mode 100644 lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.c create mode 100644 lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.h create mode 100644 lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell-EnhancedGranularity.c create mode 100644 lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell-EnhancedGranularity.h create mode 100644 lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.c create mode 100644 lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.h create mode 100644 lib/s1ap3/asn1c/S1AP_TimeSynchronisationInfo.c create mode 100644 lib/s1ap3/asn1c/S1AP_TimeSynchronisationInfo.h create mode 100644 lib/s1ap3/asn1c/S1AP_TimeToWait.c create mode 100644 lib/s1ap3/asn1c/S1AP_TimeToWait.h create mode 100644 lib/s1ap3/asn1c/S1AP_TraceActivation.c create mode 100644 lib/s1ap3/asn1c/S1AP_TraceActivation.h create mode 100644 lib/s1ap3/asn1c/S1AP_TraceDepth.c create mode 100644 lib/s1ap3/asn1c/S1AP_TraceDepth.h create mode 100644 lib/s1ap3/asn1c/S1AP_TraceFailureIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_TraceFailureIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_TraceStart.c create mode 100644 lib/s1ap3/asn1c/S1AP_TraceStart.h create mode 100644 lib/s1ap3/asn1c/S1AP_TrafficLoadReductionIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_TrafficLoadReductionIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_TransportInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_TransportInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_TransportLayerAddress.c create mode 100644 lib/s1ap3/asn1c/S1AP_TransportLayerAddress.h create mode 100644 lib/s1ap3/asn1c/S1AP_TriggeringMessage.c create mode 100644 lib/s1ap3/asn1c/S1AP_TriggeringMessage.h create mode 100644 lib/s1ap3/asn1c/S1AP_TunnelInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_TunnelInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_TypeOfError.c create mode 100644 lib/s1ap3/asn1c/S1AP_TypeOfError.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-HistoryInformationFromTheUE.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-HistoryInformationFromTheUE.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container-for-extended-bands.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container-for-extended-bands.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-RetentionInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-RetentionInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-Usage-Type.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-Usage-Type.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionItem.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionItem.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListRes.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListRes.h create mode 100644 lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListResAck.c create mode 100644 lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListResAck.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEAggregateMaximumBitrate.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEAggregateMaximumBitrate.h create mode 100644 lib/s1ap3/asn1c/S1AP_UECapabilityInfoIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_UECapabilityInfoIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationConfirm.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationConfirm.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationFailure.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationFailure.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationIndication.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationIndication.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextModificationResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextReleaseCommand.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextReleaseCommand.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextReleaseComplete.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextReleaseComplete.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextReleaseRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextReleaseRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextResumeResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextResumeResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextSuspendRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextSuspendRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextSuspendResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEContextSuspendResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEInformationTransfer.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEInformationTransfer.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEPagingID.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEPagingID.h create mode 100644 lib/s1ap3/asn1c/S1AP_UERadioCapability.c create mode 100644 lib/s1ap3/asn1c/S1AP_UERadioCapability.h create mode 100644 lib/s1ap3/asn1c/S1AP_UERadioCapabilityForPaging.c create mode 100644 lib/s1ap3/asn1c/S1AP_UERadioCapabilityForPaging.h create mode 100644 lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.c create mode 100644 lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.h create mode 100644 lib/s1ap3/asn1c/S1AP_UESidelinkAggregateMaximumBitrate.c create mode 100644 lib/s1ap3/asn1c/S1AP_UESidelinkAggregateMaximumBitrate.h create mode 100644 lib/s1ap3/asn1c/S1AP_UEUserPlaneCIoTSupportIndicator.c create mode 100644 lib/s1ap3/asn1c/S1AP_UEUserPlaneCIoTSupportIndicator.h create mode 100644 lib/s1ap3/asn1c/S1AP_UL-CP-SecurityInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_UL-CP-SecurityInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_UL-NAS-Count.c create mode 100644 lib/s1ap3/asn1c/S1AP_UL-NAS-Count.h create mode 100644 lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.c create mode 100644 lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.h create mode 100644 lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.c create mode 100644 lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.h create mode 100644 lib/s1ap3/asn1c/S1AP_UplinkNASTransport.c create mode 100644 lib/s1ap3/asn1c/S1AP_UplinkNASTransport.h create mode 100644 lib/s1ap3/asn1c/S1AP_UplinkNonUEAssociatedLPPaTransport.c create mode 100644 lib/s1ap3/asn1c/S1AP_UplinkNonUEAssociatedLPPaTransport.h create mode 100644 lib/s1ap3/asn1c/S1AP_UplinkS1cdma2000tunnelling.c create mode 100644 lib/s1ap3/asn1c/S1AP_UplinkS1cdma2000tunnelling.h create mode 100644 lib/s1ap3/asn1c/S1AP_UplinkUEAssociatedLPPaTransport.c create mode 100644 lib/s1ap3/asn1c/S1AP_UplinkUEAssociatedLPPaTransport.h create mode 100644 lib/s1ap3/asn1c/S1AP_UserLocationInformation.c create mode 100644 lib/s1ap3/asn1c/S1AP_UserLocationInformation.h create mode 100644 lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.c create mode 100644 lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.h create mode 100644 lib/s1ap3/asn1c/S1AP_VehicleUE.c create mode 100644 lib/s1ap3/asn1c/S1AP_VehicleUE.h create mode 100644 lib/s1ap3/asn1c/S1AP_VoiceSupportMatchIndicator.c create mode 100644 lib/s1ap3/asn1c/S1AP_VoiceSupportMatchIndicator.h create mode 100644 lib/s1ap3/asn1c/S1AP_WarningAreaList.c create mode 100644 lib/s1ap3/asn1c/S1AP_WarningAreaList.h create mode 100644 lib/s1ap3/asn1c/S1AP_WarningMessageContents.c create mode 100644 lib/s1ap3/asn1c/S1AP_WarningMessageContents.h create mode 100644 lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.c create mode 100644 lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.h create mode 100644 lib/s1ap3/asn1c/S1AP_WarningType.c create mode 100644 lib/s1ap3/asn1c/S1AP_WarningType.h create mode 100644 lib/s1ap3/asn1c/S1AP_WriteReplaceWarningRequest.c create mode 100644 lib/s1ap3/asn1c/S1AP_WriteReplaceWarningRequest.h create mode 100644 lib/s1ap3/asn1c/S1AP_WriteReplaceWarningResponse.c create mode 100644 lib/s1ap3/asn1c/S1AP_WriteReplaceWarningResponse.h create mode 100644 lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.c create mode 100644 lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.h create mode 100644 lib/s1ap3/asn1c/S1AP_asn_constant.h create mode 100644 lib/s1ap3/asn1c/asn_SEQUENCE_OF.c create mode 100644 lib/s1ap3/asn1c/asn_SEQUENCE_OF.h create mode 100644 lib/s1ap3/asn1c/asn_SET_OF.c create mode 100644 lib/s1ap3/asn1c/asn_SET_OF.h create mode 100644 lib/s1ap3/asn1c/asn_application.c create mode 100644 lib/s1ap3/asn1c/asn_application.h create mode 100644 lib/s1ap3/asn1c/asn_bit_data.c create mode 100644 lib/s1ap3/asn1c/asn_bit_data.h create mode 100644 lib/s1ap3/asn1c/asn_codecs.h create mode 100644 lib/s1ap3/asn1c/asn_codecs_prim.c create mode 100644 lib/s1ap3/asn1c/asn_codecs_prim.h create mode 100644 lib/s1ap3/asn1c/asn_internal.c create mode 100644 lib/s1ap3/asn1c/asn_internal.h create mode 100644 lib/s1ap3/asn1c/asn_ioc.h create mode 100644 lib/s1ap3/asn1c/asn_random_fill.c create mode 100644 lib/s1ap3/asn1c/asn_random_fill.h create mode 100644 lib/s1ap3/asn1c/asn_system.h create mode 100644 lib/s1ap3/asn1c/ber_decoder.c create mode 100644 lib/s1ap3/asn1c/ber_decoder.h create mode 100644 lib/s1ap3/asn1c/ber_tlv_length.c create mode 100644 lib/s1ap3/asn1c/ber_tlv_length.h create mode 100644 lib/s1ap3/asn1c/ber_tlv_tag.c create mode 100644 lib/s1ap3/asn1c/ber_tlv_tag.h create mode 100644 lib/s1ap3/asn1c/constr_CHOICE.c create mode 100644 lib/s1ap3/asn1c/constr_CHOICE.h create mode 100644 lib/s1ap3/asn1c/constr_CHOICE_oer.c create mode 100644 lib/s1ap3/asn1c/constr_SEQUENCE.c create mode 100644 lib/s1ap3/asn1c/constr_SEQUENCE.h create mode 100644 lib/s1ap3/asn1c/constr_SEQUENCE_OF.c create mode 100644 lib/s1ap3/asn1c/constr_SEQUENCE_OF.h create mode 100644 lib/s1ap3/asn1c/constr_SEQUENCE_oer.c create mode 100644 lib/s1ap3/asn1c/constr_SET_OF.c create mode 100644 lib/s1ap3/asn1c/constr_SET_OF.h create mode 100644 lib/s1ap3/asn1c/constr_SET_OF_oer.c create mode 100644 lib/s1ap3/asn1c/constr_TYPE.c create mode 100644 lib/s1ap3/asn1c/constr_TYPE.h create mode 100644 lib/s1ap3/asn1c/constraints.c create mode 100644 lib/s1ap3/asn1c/constraints.h create mode 100644 lib/s1ap3/asn1c/der_encoder.c create mode 100644 lib/s1ap3/asn1c/der_encoder.h create mode 100644 lib/s1ap3/asn1c/oer_decoder.c create mode 100644 lib/s1ap3/asn1c/oer_decoder.h create mode 100644 lib/s1ap3/asn1c/oer_encoder.c create mode 100644 lib/s1ap3/asn1c/oer_encoder.h create mode 100644 lib/s1ap3/asn1c/oer_support.c create mode 100644 lib/s1ap3/asn1c/oer_support.h create mode 100644 lib/s1ap3/asn1c/per_decoder.c create mode 100644 lib/s1ap3/asn1c/per_decoder.h create mode 100644 lib/s1ap3/asn1c/per_encoder.c create mode 100644 lib/s1ap3/asn1c/per_encoder.h create mode 100644 lib/s1ap3/asn1c/per_opentype.c create mode 100644 lib/s1ap3/asn1c/per_opentype.h create mode 100644 lib/s1ap3/asn1c/per_support.c create mode 100644 lib/s1ap3/asn1c/per_support.h create mode 100644 lib/s1ap3/asn1c/xer_decoder.c create mode 100644 lib/s1ap3/asn1c/xer_decoder.h create mode 100644 lib/s1ap3/asn1c/xer_encoder.c create mode 100644 lib/s1ap3/asn1c/xer_encoder.h create mode 100644 lib/s1ap3/asn1c/xer_support.c create mode 100644 lib/s1ap3/asn1c/xer_support.h create mode 100644 lib/s1ap3/support/.README.md.swp create mode 100644 lib/s1ap3/support/README.md create mode 100644 lib/s1ap3/support/r14.4.0/36413-e40.asn create mode 100644 lib/s1ap3/support/r14.4.0/36413-e40.txt create mode 100644 lib/s1ap3/test/Makefile.am create mode 100644 lib/s1ap3/test/abts.c create mode 100644 lib/s1ap3/test/abts.h create mode 100644 lib/s1ap3/test/abts_tests.h create mode 100644 lib/s1ap3/test/s1ap_conv.c create mode 100644 lib/s1ap3/test/s1ap_conv.h create mode 100644 lib/s1ap3/test/s1ap_message_test.c create mode 100644 lib/s1ap3/test/testutil.c create mode 100644 lib/s1ap3/test/testutil.h diff --git a/configure.ac b/configure.ac index 0c6cb12293..2dc40a31fc 100644 --- a/configure.ac +++ b/configure.ac @@ -424,9 +424,9 @@ AC_CONFIG_FILES([lib/core/test/Makefile]) AC_CONFIG_FILES([lib/core/Makefile]) AC_CONFIG_FILES([lib/s1ap/asn1c/Makefile]) AC_CONFIG_FILES([lib/s1ap/Makefile]) -AC_CONFIG_FILES([lib/s1ap2/asn1c/Makefile]) -AC_CONFIG_FILES([lib/s1ap2/Makefile]) -AC_CONFIG_FILES([lib/s1ap2/test/Makefile]) +AC_CONFIG_FILES([lib/s1ap3/asn1c/Makefile]) +AC_CONFIG_FILES([lib/s1ap3/Makefile]) +AC_CONFIG_FILES([lib/s1ap3/test/Makefile]) AC_CONFIG_FILES([lib/nas/Makefile]) AC_CONFIG_FILES([lib/fd/Makefile]) AC_CONFIG_FILES([lib/gtp/Makefile]) diff --git a/lib/s1ap3/Makefile.am b/lib/s1ap3/Makefile.am new file mode 100644 index 0000000000..20e7f2312e --- /dev/null +++ b/lib/s1ap3/Makefile.am @@ -0,0 +1,6 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = @FREEDIAMETER_DIR@ ipfw core s1ap nas fd gtp + +MAINTAINERCLEANFILES = Makefile.in +MOSTLYCLEANFILES = *.stackdump diff --git a/lib/s1ap3/asn1c/ANY.c b/lib/s1ap3/asn1c/ANY.c new file mode 100644 index 0000000000..b24d6f4efe --- /dev/null +++ b/lib/s1ap3/asn1c/ANY.c @@ -0,0 +1,450 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { + sizeof(ANY_t), + offsetof(ANY_t, _asn_ctx), + ASN_OSUBV_ANY +}; +asn_TYPE_operation_t asn_OP_ANY = { + OCTET_STRING_free, + OCTET_STRING_print, + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + ANY_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + 0, + 0, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + ANY_decode_uper, + ANY_encode_uper, + ANY_decode_aper, + ANY_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + 0, /* Random fill is not defined for ANY type */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ANY = { + "ANY", + "ANY", + &asn_OP_ANY, + 0, 0, 0, 0, + { 0, 0, asn_generic_no_constraint }, /* No constraints */ + 0, 0, /* No members */ + &asn_SPC_ANY_specs, +}; + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +asn_enc_rval_t +ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + if(flags & XER_F_CANONICAL) { + /* + * Canonical XER-encoding of ANY type is not supported. + */ + ASN__ENCODE_FAILED; + } + + /* Dump as binary */ + return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); +} + +struct _callback_arg { + uint8_t *buffer; + size_t offset; + size_t size; +}; + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key); + +int +ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + struct _callback_arg arg; + asn_enc_rval_t erval; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + arg.offset = arg.size = 0; + arg.buffer = 0; + + erval = der_encode(td, sptr, ANY__consume_bytes, &arg); + if(erval.encoded == -1) { + if(arg.buffer) FREEMEM(arg.buffer); + return -1; + } + assert((size_t)erval.encoded == arg.offset); + + if(st->buf) FREEMEM(st->buf); + st->buf = arg.buffer; + st->size = arg.offset; + + return 0; +} + +int +ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + uint8_t *buffer = NULL; + ssize_t erval; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); + + if(erval == -1) { + if(buffer) FREEMEM(buffer); + return -1; + } + assert((size_t)erval > 0); + + if(st->buf) FREEMEM(st->buf); + st->buf = buffer; + st->size = erval; + + return 0; +} + +ANY_t * +ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +ANY_t * +ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType_aper(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +int +ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +int +ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { + struct _callback_arg *arg = (struct _callback_arg *)key; + + if((arg->offset + size) >= arg->size) { + size_t nsize = (arg->size ? arg->size << 2 : 16) + size; + void *p = REALLOC(arg->buffer, nsize); + if(!p) return -1; + arg->buffer = (uint8_t *)p; + arg->size = nsize; + } + + memcpy(arg->buffer + arg->offset, buffer, size); + arg->offset += size; + assert(arg->offset < arg->size); + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("UPER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("APER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = aper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + diff --git a/lib/s1ap3/asn1c/ANY.h b/lib/s1ap3/asn1c/ANY.h new file mode 100644 index 0000000000..b30381fa15 --- /dev/null +++ b/lib/s1ap3/asn1c/ANY.h @@ -0,0 +1,65 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_ANY_H +#define ASN_TYPE_ANY_H + +#include /* Implemented via OCTET STRING type */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ANY { + uint8_t *buf; /* BER-encoded ANY contents */ + int size; /* Size of the above buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} ANY_t; + +extern asn_TYPE_descriptor_t asn_DEF_ANY; +extern asn_TYPE_operation_t asn_OP_ANY; +extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs; + +asn_struct_free_f ANY_free; +asn_struct_print_f ANY_print; +ber_type_decoder_f ANY_decode_ber; +der_type_encoder_f ANY_encode_der; +xer_type_encoder_f ANY_encode_xer; +per_type_decoder_f ANY_decode_uper; +per_type_encoder_f ANY_encode_uper; +per_type_decoder_f ANY_decode_aper; +per_type_encoder_f ANY_encode_aper; + +#define ANY_free OCTET_STRING_free +#define ANY_print OCTET_STRING_print +#define ANY_compare OCTET_STRING_compare +#define ANY_constraint asn_generic_no_constraint +#define ANY_decode_ber OCTET_STRING_decode_ber +#define ANY_encode_der OCTET_STRING_encode_der +#define ANY_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* Convert another ASN.1 type into the ANY. This implies DER encoding. */ +int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr); +int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr); +ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr); +ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr); + +/* Convert the contents of the ANY type into the specified type. */ +int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); + +#define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size)) +#define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \ + &asn_DEF_ANY, (buf), (size)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_ANY_H */ diff --git a/lib/s1ap3/asn1c/BIT_STRING.c b/lib/s1ap3/asn1c/BIT_STRING.c new file mode 100644 index 0000000000..87246f1f76 --- /dev/null +++ b/lib/s1ap3/asn1c/BIT_STRING.c @@ -0,0 +1,656 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BIT STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { + sizeof(BIT_STRING_t), + offsetof(BIT_STRING_t, _asn_ctx), + ASN_OSUBV_BIT +}; +asn_TYPE_operation_t asn_OP_BIT_STRING = { + OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ + BIT_STRING_print, + BIT_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_decode_xer_binary, + BIT_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BIT_STRING_decode_oer, + BIT_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BIT_STRING_decode_uper, /* Unaligned PER decoder */ + BIT_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BIT_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { + "BIT STRING", + "BIT_STRING", + &asn_OP_BIT_STRING, + asn_DEF_BIT_STRING_tags, + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + asn_DEF_BIT_STRING_tags, /* Same as above */ + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + { 0, 0, BIT_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs +}; + +/* + * BIT STRING generic constraint. + */ +int +BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + + if(st && st->buf) { + if((st->size == 0 && st->bits_unused) + || st->bits_unused < 0 || st->bits_unused > 7) { + ASN__CTFAIL(app_key, td, sptr, + "%s: invalid padding byte (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static const char *_bit_pattern[16] = { + "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" +}; + +asn_enc_rval_t +BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = (flags & XER_F_CANONICAL); + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Binary dump + */ + for(; buf < end; buf++) { + int v = *buf; + int nline = xcan?0:(((buf - st->buf) % 8) == 0); + if(p >= scend || nline) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + if(nline) ASN__TEXT_INDENT(1, ilevel); + } + memcpy(p + 0, _bit_pattern[v >> 4], 4); + memcpy(p + 4, _bit_pattern[v & 0x0f], 4); + p += 8; + } + + if(!xcan && ((buf - st->buf) % 8) == 0) + ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int v = *buf; + int ubits = st->bits_unused; + int i; + for(i = 7; i >= ubits; i--) + *p++ = (v & (1 << i)) ? 0x31 : 0x30; + ASN__CALLBACK(scratch, p - scratch); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + + +/* + * BIT STRING specific contents printer. + */ +int +BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + char scratch[64]; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + uint8_t *buf; + uint8_t *end; + char *p = scratch; + + (void)td; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + ilevel++; + buf = st->buf; + end = buf + st->size; + + /* + * Hexadecimal dump. + */ + for(; buf < end; buf++) { + if((buf - st->buf) % 16 == 0 && (st->size > 16) + && buf != st->buf) { + _i_INDENT(1); + /* Dump the string */ + if(cb(scratch, p - scratch, app_key) < 0) return -1; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Eat the tailing space */ + + if((st->size > 16)) { + _i_INDENT(1); + } + + /* Dump the incomplete 16-bytes row */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + if(st->bits_unused) { + int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", + st->bits_unused, st->bits_unused == 1 ? "" : "s"); + assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); + if(ret > 0 && ret < (ssize_t)sizeof(scratch) + && cb(scratch, ret, app_key) < 0) + return -1; + } + + return 0; +} + +/* + * Non-destructively remove the trailing 0-bits from the given bit string. + */ +static const BIT_STRING_t * +BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { + const uint8_t *b; + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + + if(st->size == 0) { + assert(st->bits_unused == 0); + return st; + } else { + for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { + ; + } + /* b points to the last byte which may contain data */ + if(*b) { + int unused = 7; + uint8_t v = *b; + v &= -(int8_t)v; + if(v & 0x0F) unused -= 4; + if(v & 0x33) unused -= 2; + if(v & 0x55) unused -= 1; + tmp->size = b-st->buf + 1; + tmp->bits_unused = unused; + } else { + tmp->size = b-st->buf; + tmp->bits_unused = 0; + } + + assert(b >= st->buf); + } + + unconst.c_buf = st->buf; + tmp->buf = unconst.nc_buf; + return tmp; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + /* + * Remove information about trailing bits, since + * X.680 (08/2015) #22.7 "ensure that different semantics are not" + * "associated with [values that differ only in] the trailing 0 bits." + */ + BIT_STRING_t compact_a, compact_b; + const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); + const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + + assert(specs && specs->subvariant == ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + /* Figure out how many unused bits */ + if(a->bits_unused > b->bits_unused) { + return -1; + } else if(a->bits_unused < b->bits_unused) { + return 1; + } else { + return 0; + } + } + } else { + return ret; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { + APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; + +asn_dec_rval_t +BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + + (void)opt_codec_ctx; + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + + if(specs->subvariant != ASN_OSUBV_BIT) { + ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); + RETURN(RC_FAIL); + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + st->size = (csiz->upper_bound + 7) >> 3; + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += csiz->upper_bound; + st->buf[st->size] = 0; + st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + BIT_STRING_t compact_bstr; /* Do not modify this directly! */ + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + size_t size_in_bits; + const uint8_t *buf; + int ret; + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(specs->subvariant == ASN_OSUBV_BIT) { + if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + /* Figure out the size without the trailing bits */ + st = BIT_STRING__compactify(st, &compact_bstr); + size_in_bits = 8 * st->size - st->bits_unused; + + ASN_DEBUG( + "Encoding %s into %" ASN_PRI_SIZE " bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_bits > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; + ASN_DEBUG( + "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " + "value %" ASN_PRI_SSIZE "", + st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, + add_trailer, + add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); + ret = per_put_few_bits( + po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = per_put_many_bits(po, st->buf, size_in_bits); + if(ret) ASN__ENCODE_FAILED; + if(add_trailer) { + static const uint8_t zeros[16]; + size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; + while(trailing_zero_bits > 0) { + if(trailing_zero_bits > 8 * sizeof(zeros)) { + ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); + trailing_zero_bits -= 8 * sizeof(zeros); + } else { + ret = per_put_many_bits(po, zeros, trailing_zero_bits); + trailing_zero_bits = 0; + } + if(ret) ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + do { + int need_eom = 0; + ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); + + ret = per_put_many_bits(po, buf, maySave); + if(ret) ASN__ENCODE_FAILED; + + buf += maySave >> 3; + size_in_bits -= maySave; + assert(!(maySave & 0x07) || !size_in_bits); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_bits); + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + static unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_bits, rnd_len; + BIT_STRING_t *st; + + if(max_length == 0) return result_skipped; + + switch(specs->subvariant) { + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + break; + default: + break; + } + + /* Figure out how far we should go */ + rnd_bits = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length < (size_t)pc->lower_bound) { + return result_skipped; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_bits = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_bits = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_bits from the table */ + if(rnd_bits < max_length) { + break; + } + /* Fall through */ + default: + rnd_bits = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_bits = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_bits = asn_random_between(0, max_length - 1); + } + } else if(rnd_bits >= max_length) { + rnd_bits = asn_random_between(0, max_length - 1); + } + + rnd_len = (rnd_bits + 7) / 8; + buf = CALLOC(1, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[rnd_len]; + + for(b = buf; b < bend; b++) { + *(uint8_t *)b = asn_random_between(0, 255); + } + *b = 0; /* Zero-terminate just in case. */ + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = rnd_len; + st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; + if(st->bits_unused) { + assert(st->size > 0); + st->buf[st->size-1] &= 0xff << st->bits_unused; + } + + result_ok.length = st->size; + return result_ok; +} diff --git a/lib/s1ap3/asn1c/BIT_STRING.h b/lib/s1ap3/asn1c/BIT_STRING.h new file mode 100644 index 0000000000..c1bdbbcfb5 --- /dev/null +++ b/lib/s1ap3/asn1c/BIT_STRING.h @@ -0,0 +1,48 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BIT_STRING_H_ +#define _BIT_STRING_H_ + +#include /* Some help from OCTET STRING */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct BIT_STRING_s { + uint8_t *buf; /* BIT STRING body */ + size_t size; /* Size of the above buffer */ + + int bits_unused;/* Unused trailing bits in the last octet (0..7) */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} BIT_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; +extern asn_TYPE_operation_t asn_OP_BIT_STRING; +extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; + +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +asn_struct_compare_f BIT_STRING_compare; +asn_constr_check_f BIT_STRING_constraint; +xer_type_encoder_f BIT_STRING_encode_xer; +oer_type_decoder_f BIT_STRING_decode_oer; +oer_type_encoder_f BIT_STRING_encode_oer; +per_type_decoder_f BIT_STRING_decode_uper; +per_type_encoder_f BIT_STRING_encode_uper; +asn_random_fill_f BIT_STRING_random_fill; + +#define BIT_STRING_free OCTET_STRING_free +#define BIT_STRING_decode_ber OCTET_STRING_decode_ber +#define BIT_STRING_encode_der OCTET_STRING_encode_der +#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary +#define BIT_STRING_decode_aper OCTET_STRING_decode_aper +#define BIT_STRING_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/lib/s1ap3/asn1c/BIT_STRING_oer.c b/lib/s1ap3/asn1c/BIT_STRING_oer.c new file mode 100644 index 0000000000..aff5075cdd --- /dev/null +++ b/lib/s1ap3/asn1c/BIT_STRING_oer.c @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_DISABLE_OER_SUPPORT + +#include +#include +#include + +asn_dec_rval_t +BIT_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + asn_dec_rval_t rval = {RC_OK, 0}; + size_t expected_length = 0; + + (void)opt_codec_ctx; + + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(ct_size >= 0) { + expected_length = (ct_size + 7) >> 3; + st->bits_unused = (8 - (ct_size & 7)) & 7; + } else { + /* + * X.696 (08/2015) #13.3.1 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); + if(len_len > 0) { + ptr = (const char *)ptr + len_len; + size -= len_len; + } else if(len_len == 0) { + ASN__DECODE_STARVED; + } else if(len_len < 0) { + ASN__DECODE_FAILED; + } + + if(expected_length < 1) { + ASN__DECODE_FAILED; + } else if(expected_length > size) { + ASN__DECODE_STARVED; + } + + st->bits_unused = ((const uint8_t *)ptr)[0]; + if(st->bits_unused & ~7) { + ASN_DEBUG("%s: unused bits outside of 0..7 range", td->name); + ASN__DECODE_FAILED; + } + ptr = (const char *)ptr + 1; + size--; + expected_length--; + rval.consumed = len_len + 1; + } + + if(size < expected_length) { + ASN__DECODE_STARVED; + } else { + uint8_t *buf = MALLOC(expected_length + 1); + if(buf == NULL) { + ASN__DECODE_FAILED; + } else { + memcpy(buf, ptr, expected_length); + buf[expected_length] = '\0'; + } + FREEMEM(st->buf); + st->buf = buf; + st->size = expected_length; + if(expected_length > 0) { + buf[expected_length - 1] &= (0xff << st->bits_unused); + } + + rval.consumed += expected_length; + return rval; + } +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BIT_STRING_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t erval = {0, 0, 0}; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + size_t trailing_zeros = 0; + int fix_last_byte = 0; + + if(!st) ASN__ENCODE_FAILED; + + if(st->bits_unused & ~7) { + ASN_DEBUG("BIT STRING unused bits %d out of 0..7 range", + st->bits_unused); + ASN__ENCODE_FAILED; + } + if(st->bits_unused && !(st->size && st->buf)) { + ASN_DEBUG("BIT STRING %s size 0 can't support unused bits %d", td->name, + st->bits_unused); + ASN__ENCODE_FAILED; + } + + if(ct_size >= 0) { + size_t ct_bytes = (ct_size + 7) >> 3; + if(st->size > ct_bytes) { + ASN_DEBUG("More bits in BIT STRING %s (%" ASN_PRI_SSIZE ") than constrained %" ASN_PRI_SSIZE "", + td->name, 8 * st->size - st->bits_unused, ct_size); + ASN__ENCODE_FAILED; + } + trailing_zeros = ct_bytes - st->size; /* Allow larger constraint */ + } else { + uint8_t ub = st->bits_unused & 7; + ssize_t len_len = oer_serialize_length(1 + st->size, cb, app_key); + if(len_len < 0) ASN__ENCODE_FAILED; + if(cb(&ub, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } + erval.encoded += len_len + 1; + } + + if(st->bits_unused) { + if(st->buf[st->size - 1] & (0xff << st->bits_unused)) { + fix_last_byte = 1; + } + } + + if(cb(st->buf, st->size - fix_last_byte, app_key) < 0) { + ASN__ENCODE_FAILED; + } + + if(fix_last_byte) { + uint8_t b = st->buf[st->size - 1] & (0xff << st->bits_unused); + if(cb(&b, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } + } + + erval.encoded += st->size; + + if(trailing_zeros) { + static uint8_t zeros[16]; + while(trailing_zeros > 0) { + int ret; + if(trailing_zeros < sizeof(zeros)) { + ret = cb(zeros, trailing_zeros, app_key); + erval.encoded += trailing_zeros; + } else { + ret = cb(zeros, sizeof(zeros), app_key); + erval.encoded += sizeof(zeros); + } + if(ret < 0) ASN__ENCODE_FAILED; + } + } + + return erval; +} + + +#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/lib/s1ap3/asn1c/BOOLEAN.c b/lib/s1ap3/asn1c/BOOLEAN.c new file mode 100644 index 0000000000..b6f266c515 --- /dev/null +++ b/lib/s1ap3/asn1c/BOOLEAN.c @@ -0,0 +1,491 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BOOLEAN basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_operation_t asn_OP_BOOLEAN = { + BOOLEAN_free, + BOOLEAN_print, + BOOLEAN_compare, + BOOLEAN_decode_ber, + BOOLEAN_encode_der, + BOOLEAN_decode_xer, + BOOLEAN_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BOOLEAN_decode_oer, + BOOLEAN_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BOOLEAN_decode_uper, /* Unaligned PER decoder */ + BOOLEAN_encode_uper, /* Unaligned PER encoder */ + BOOLEAN_decode_aper, /* Aligned PER decoder */ + BOOLEAN_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BOOLEAN_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { + "BOOLEAN", + "BOOLEAN", + &asn_OP_BOOLEAN, + asn_DEF_BOOLEAN_tags, + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + asn_DEF_BOOLEAN_tags, /* Same as above */ + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode BOOLEAN type. + */ +asn_dec_rval_t +BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **bool_value, + const void *buf_ptr, size_t size, int tag_mode) { + BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + ber_tlv_len_t lidx; + + if(st == NULL) { + st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("Boolean length is %d bytes", (int)length); + + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * Compute boolean value. + */ + for(*st = 0, lidx = 0; + (lidx < length) && *st == 0; lidx++) { + /* + * Very simple approach: read bytes until the end or + * value is already TRUE. + * BOOLEAN is not supposed to contain meaningful data anyway. + */ + *st |= ((const uint8_t *)buf_ptr)[lidx]; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", + (long)rval.consumed, (long)length, + td->name, *st); + + return rval; +} + +asn_enc_rval_t +BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t erval; + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + + erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb) { + uint8_t bool_value; + + bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ + + if(cb(&bool_value, 1, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } + + erval.encoded += 1; + + ASN__ENCODED_OK(erval); +} + + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + BOOLEAN_t *st = (BOOLEAN_t *)sptr; + const char *p = (const char *)chunk_buf; + + (void)td; + + if(chunk_size && p[0] == 0x3c /* '<' */) { + switch(xer_check_tag(chunk_buf, chunk_size, "false")) { + case XCT_BOTH: + /* "" */ + *st = 0; + break; + case XCT_UNKNOWN_BO: + if(xer_check_tag(chunk_buf, chunk_size, "true") + != XCT_BOTH) + return XPBD_BROKEN_ENCODING; + /* "" */ + *st = 1; /* Or 0xff as in DER?.. */ + break; + default: + return XPBD_BROKEN_ENCODING; + } + return XPBD_BODY_CONSUMED; + } else { + return XPBD_BROKEN_ENCODING; + } +} + + +asn_dec_rval_t +BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, + BOOLEAN__xer_body_decode); +} + +asn_enc_rval_t +BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + + (void)ilevel; + (void)flags; + + if(!st) ASN__ENCODE_FAILED; + + if(*st) { + ASN__CALLBACK("", 7); + } else { + ASN__CALLBACK("", 8); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +int +BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + const char *buf; + size_t buflen; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st) { + if(*st) { + buf = "TRUE"; + buflen = 4; + } else { + buf = "FALSE"; + buflen = 5; + } + } else { + buf = ""; + buflen = 8; + } + + return (cb(buf, buflen, app_key) < 0) ? -1 : 0; +} + +void +BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(BOOLEAN_t)); + break; + } + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: *st = 1; break; + case 0: *st = 0; break; + case -1: default: ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + + +asn_enc_rval_t +BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + (void)td; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: + *st = 1; + break; + case 0: + *st = 0; + break; + case -1: + default: + ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + +asn_enc_rval_t +BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + per_put_few_bits(po, *st ? 1 : 0, 1); + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +#ifndef ASN_DISABLE_OER_SUPPORT + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BOOLEAN_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 1, 0, 0 }; + const BOOLEAN_t *st = sptr; + uint8_t bool_value = *st ? 0xff : 0; /* 0xff mandated by OER */ + + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(cb(&bool_value, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +asn_dec_rval_t +BOOLEAN_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t ok = {RC_OK, 1}; + BOOLEAN_t *st; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if(!(st = *sptr)) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + *st = *(const uint8_t *)ptr; + + return ok; +} + + + +#endif + +int +BOOLEAN_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const BOOLEAN_t *a = aptr; + const BOOLEAN_t *b = bptr; + + (void)td; + + if(a && b) { + if(!*a == !*b) { /* TRUE can be encoded by any non-zero byte. */ + return 0; + } else if(!*a) { + return -1; + } else { + return 1; + } + } else if(!a) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +BOOLEAN_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + BOOLEAN_t *st = *sptr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_CONSTRAINED) { + *st = asn_random_between(pc->lower_bound, pc->upper_bound); + return result_ok; + } + } + + /* Simulate booleans that are sloppily set and biased. */ + switch(asn_random_between(0, 7)) { + case 0: + case 1: + case 2: + *st = 0; break; + case 3: *st = -1; break; + case 4: *st = 1; break; + case 5: *st = INT_MIN; break; + case 6: *st = INT_MAX; break; + default: + *st = asn_random_between(INT_MIN, INT_MAX); + break; + } + return result_ok; +} diff --git a/lib/s1ap3/asn1c/BOOLEAN.h b/lib/s1ap3/asn1c/BOOLEAN.h new file mode 100644 index 0000000000..620acf7f1f --- /dev/null +++ b/lib/s1ap3/asn1c/BOOLEAN.h @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BOOLEAN_H_ +#define _BOOLEAN_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The underlying integer may contain various values, but everything + * non-zero is capped to 0xff by the DER encoder. The BER decoder may + * yield non-zero values different from 1, beware. + */ +typedef int BOOLEAN_t; + +extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; +extern asn_TYPE_operation_t asn_OP_BOOLEAN; + +asn_struct_free_f BOOLEAN_free; +asn_struct_print_f BOOLEAN_print; +asn_struct_compare_f BOOLEAN_compare; +ber_type_decoder_f BOOLEAN_decode_ber; +der_type_encoder_f BOOLEAN_encode_der; +oer_type_decoder_f BOOLEAN_decode_oer; +oer_type_encoder_f BOOLEAN_encode_oer; +per_type_decoder_f BOOLEAN_decode_uper; +per_type_encoder_f BOOLEAN_encode_uper; +per_type_decoder_f BOOLEAN_decode_aper; +per_type_encoder_f BOOLEAN_encode_aper; +xer_type_decoder_f BOOLEAN_decode_xer; +xer_type_encoder_f BOOLEAN_encode_xer; +asn_random_fill_f BOOLEAN_random_fill; + +#define BOOLEAN_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _BOOLEAN_H_ */ diff --git a/lib/s1ap3/asn1c/INTEGER.c b/lib/s1ap3/asn1c/INTEGER.c new file mode 100644 index 0000000000..bdd794e9aa --- /dev/null +++ b/lib/s1ap3/asn1c/INTEGER.c @@ -0,0 +1,1719 @@ +/*- + * Copyright (c) 2003-2014 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* Encoder and decoder of a primitive type */ +#include + +/* + * INTEGER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_INTEGER = { + INTEGER_free, + INTEGER_print, + INTEGER_compare, + ber_decode_primitive, + INTEGER_encode_der, + INTEGER_decode_xer, + INTEGER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + INTEGER_decode_oer, /* OER decoder */ + INTEGER_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + INTEGER_decode_uper, /* Unaligned PER decoder */ + INTEGER_encode_uper, /* Unaligned PER encoder */ + INTEGER_decode_aper, /* Aligned PER decoder */ + INTEGER_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + INTEGER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_INTEGER = { + "INTEGER", + "INTEGER", + &asn_OP_INTEGER, + asn_DEF_INTEGER_tags, + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + asn_DEF_INTEGER_tags, /* Same as above */ + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Encode INTEGER type using DER. + */ +asn_enc_rval_t +INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t rval; + INTEGER_t effective_integer; + + ASN_DEBUG("%s %s as INTEGER (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + /* + * Canonicalize integer in the buffer. + * (Remove too long sign extension, remove some first 0x00 bytes) + */ + if(st->buf) { + uint8_t *buf = st->buf; + uint8_t *end1 = buf + st->size - 1; + int shift; + + /* Compute the number of superfluous leading bytes */ + for(; buf < end1; buf++) { + /* + * If the contents octets of an integer value encoding + * consist of more than one octet, then the bits of the + * first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + switch(*buf) { + case 0x00: if((buf[1] & 0x80) == 0) + continue; + break; + case 0xff: if((buf[1] & 0x80)) + continue; + break; + } + break; + } + + /* Remove leading superfluous bytes from the integer */ + shift = buf - st->buf; + if(shift) { + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + unconst.c_buf = st->buf; + effective_integer.buf = unconst.nc_buf + shift; + effective_integer.size = st->size - shift; + + st = &effective_integer; + } + } + + rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); + if(rval.structure_ptr == &effective_integer) { + rval.structure_ptr = sptr; + } + return rval; +} + +static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( + const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop); + +/* + * INTEGER specific human-readable output. + */ +static ssize_t +INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; + uint8_t *buf = st->buf; + uint8_t *buf_end = st->buf + st->size; + intmax_t value; + ssize_t wrote = 0; + char *p; + int ret; + + if(specs && specs->field_unsigned) + ret = asn_INTEGER2umax(st, (uintmax_t *)&value); + else + ret = asn_INTEGER2imax(st, &value); + + /* Simple case: the integer size is small */ + if(ret == 0) { + const asn_INTEGER_enum_map_t *el; + el = (value >= 0 || !specs || !specs->field_unsigned) + ? INTEGER_map_value2enum(specs, value) : 0; + if(el) { + if(plainOrXER == 0) + return asn__format_to_callback(cb, app_key, + "%" ASN_PRIdMAX " (%s)", value, el->enum_name); + else + return asn__format_to_callback(cb, app_key, + "<%s/>", el->enum_name); + } else if(plainOrXER && specs && specs->strict_enumeration) { + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } else { + return asn__format_to_callback(cb, app_key, + (specs && specs->field_unsigned) + ? "%" ASN_PRIuMAX + : "%" ASN_PRIdMAX, + value); + } + } else if(plainOrXER && specs && specs->strict_enumeration) { + /* + * Here and earlier, we cannot encode the ENUMERATED values + * if there is no corresponding identifier. + */ + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } + + /* Output in the long xx:yy:zz... format */ + /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ + for(p = scratch; buf < buf_end; buf++) { + const char * const h2c = "0123456789ABCDEF"; + if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { + /* Flush buffer */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + wrote += p - scratch; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x3a; /* ":" */ + } + if(p != scratch) + p--; /* Remove the last ":" */ + + wrote += p - scratch; + return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; +} + +/* + * INTEGER specific human-readable output. + */ +int +INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + ssize_t ret; + + (void)ilevel; + + if(!st || !st->buf) + ret = cb("", 8, app_key); + else + ret = INTEGER__dump(td, st, cb, app_key, 0); + + return (ret < 0) ? -1 : 0; +} + +struct e2v_key { + const char *start; + const char *stop; + const asn_INTEGER_enum_map_t *vemap; + const unsigned int *evmap; +}; +static int +INTEGER__compar_enum2value(const void *kp, const void *am) { + const struct e2v_key *key = (const struct e2v_key *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + const char *ptr, *end, *name; + + /* Remap the element (sort by different criterion) */ + el = key->vemap + key->evmap[el - key->vemap]; + + /* Compare strings */ + for(ptr = key->start, end = key->stop, name = el->enum_name; + ptr < end; ptr++, name++) { + if(*ptr != *name || !*name) + return *(const unsigned char *)ptr + - *(const unsigned char *)name; + } + return name[0] ? -1 : 0; +} + +static const asn_INTEGER_enum_map_t * +INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop) { + const asn_INTEGER_enum_map_t *el_found; + int count = specs ? specs->map_count : 0; + struct e2v_key key; + const char *lp; + + if(!count) return NULL; + + /* Guaranteed: assert(lstart < lstop); */ + /* Figure out the tag name */ + for(lstart++, lp = lstart; lp < lstop; lp++) { + switch(*lp) { + case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ + case 0x2f: /* '/' */ case 0x3e: /* '>' */ + break; + default: + continue; + } + break; + } + if(lp == lstop) return NULL; /* No tag found */ + lstop = lp; + + key.start = lstart; + key.stop = lstop; + key.vemap = specs->value2enum; + key.evmap = specs->enum2value; + el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, + specs->value2enum, count, sizeof(specs->value2enum[0]), + INTEGER__compar_enum2value); + if(el_found) { + /* Remap enum2value into value2enum */ + el_found = key.vemap + key.evmap[el_found - key.vemap]; + } + return el_found; +} + +static int +INTEGER__compar_value2enum(const void *kp, const void *am) { + long a = *(const long *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + long b = el->nat_value; + if(a < b) return -1; + else if(a == b) return 0; + else return 1; +} + +const asn_INTEGER_enum_map_t * +INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { + int count = specs ? specs->map_count : 0; + if(!count) return 0; + return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, + count, sizeof(specs->value2enum[0]), + INTEGER__compar_value2enum); +} + +static int +INTEGER_st_prealloc(INTEGER_t *st, int min_size) { + void *p = MALLOC(min_size + 1); + if(p) { + void *b = st->buf; + st->size = 0; + st->buf = p; + FREEMEM(b); + return 0; + } else { + return -1; + } +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + INTEGER_t *st = (INTEGER_t *)sptr; + intmax_t dec_value; + intmax_t hex_value = 0; + const char *lp; + const char *lstart = (const char *)chunk_buf; + const char *lstop = lstart + chunk_size; + enum { + ST_LEADSPACE, + ST_SKIPSPHEX, + ST_WAITDIGITS, + ST_DIGITS, + ST_DIGITS_TRAILSPACE, + ST_HEXDIGIT1, + ST_HEXDIGIT2, + ST_HEXDIGITS_TRAILSPACE, + ST_HEXCOLON, + ST_END_ENUM, + ST_UNEXPECTED + } state = ST_LEADSPACE; + const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ + const char *dec_value_end = 0; + + if(chunk_size) + ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", + (long)chunk_size, *lstart, lstop[-1]); + + if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) + return XPBD_SYSTEM_FAILURE; + + /* + * We may have received a tag here. It will be processed inline. + * Use strtoul()-like code and serialize the result. + */ + for(lp = lstart; lp < lstop; lp++) { + int lv = *lp; + switch(lv) { + case 0x09: case 0x0a: case 0x0d: case 0x20: + switch(state) { + case ST_LEADSPACE: + case ST_DIGITS_TRAILSPACE: + case ST_HEXDIGITS_TRAILSPACE: + case ST_SKIPSPHEX: + continue; + case ST_DIGITS: + dec_value_end = lp; + state = ST_DIGITS_TRAILSPACE; + continue; + case ST_HEXCOLON: + state = ST_HEXDIGITS_TRAILSPACE; + continue; + default: + break; + } + break; + case 0x2d: /* '-' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x2b: /* '+' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + switch(state) { + case ST_DIGITS: continue; + case ST_SKIPSPHEX: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = (lv - 0x30) << 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += (lv - 0x30); + state = ST_HEXCOLON; + st->buf[st->size++] = (uint8_t)hex_value; + continue; + case ST_HEXCOLON: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + dec_value = 0; + dec_value_start = lp; + /* FALL THROUGH */ + case ST_WAITDIGITS: + state = ST_DIGITS; + continue; + default: + break; + } + break; + case 0x3c: /* '<', start of XML encoded enumeration */ + if(state == ST_LEADSPACE) { + const asn_INTEGER_enum_map_t *el; + el = INTEGER_map_enum2value( + (const asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %ld", + el->enum_name, el->nat_value); + dec_value = el->nat_value; + state = ST_END_ENUM; + lp = lstop - 1; + continue; + } + ASN_DEBUG("Unknown identifier for INTEGER"); + } + return XPBD_BROKEN_ENCODING; + case 0x3a: /* ':' */ + if(state == ST_HEXCOLON) { + /* This colon is expected */ + state = ST_HEXDIGIT1; + continue; + } else if(state == ST_DIGITS) { + /* The colon here means that we have + * decoded the first two hexadecimal + * places as a decimal value. + * Switch decoding mode. */ + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + } else { + ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); + break; + } + /* [A-Fa-f] */ + case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: + case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: + switch(state) { + case ST_SKIPSPHEX: + case ST_LEADSPACE: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + hex_value <<= 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + st->buf[st->size++] = (uint8_t)hex_value; + state = ST_HEXCOLON; + continue; + case ST_DIGITS: + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + default: + break; + } + break; + } + + /* Found extra non-numeric stuff */ + ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", + lv, (long)(lp - lstart)); + state = ST_UNEXPECTED; + break; + } + + switch(state) { + case ST_END_ENUM: + /* Got a complete and valid enumeration encoded as a tag. */ + break; + case ST_DIGITS: + dec_value_end = lstop; + /* FALL THROUGH */ + case ST_DIGITS_TRAILSPACE: + /* The last symbol encountered was a digit. */ + switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOX_OK: + if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { + break; + } else { + /* + * We model INTEGER on long for XER, + * to avoid rewriting all the tests at once. + */ + ASN_DEBUG("INTEGER exceeds long range"); + } + /* Fall through */ + case ASN_STRTOX_ERROR_RANGE: + ASN_DEBUG("INTEGER decode %s hit range limit", td->name); + return XPBD_DECODER_LIMIT; + case ASN_STRTOX_ERROR_INVAL: + case ASN_STRTOX_EXPECT_MORE: + case ASN_STRTOX_EXTRA_DATA: + return XPBD_BROKEN_ENCODING; + } + break; + case ST_HEXCOLON: + case ST_HEXDIGITS_TRAILSPACE: + st->buf[st->size] = 0; /* Just in case termination */ + return XPBD_BODY_CONSUMED; + case ST_HEXDIGIT1: + case ST_HEXDIGIT2: + case ST_SKIPSPHEX: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + /* Content not found */ + return XPBD_NOT_BODY_IGNORE; + case ST_WAITDIGITS: + case ST_UNEXPECTED: + ASN_DEBUG("INTEGER: No useful digits (state %d)", state); + return XPBD_BROKEN_ENCODING; /* No digits */ + } + + /* + * Convert the result of parsing of enumeration or a straight + * decimal value into a BER representation. + */ + if(asn_imax2INTEGER(st, dec_value)) { + ASN_DEBUG("INTEGER decode %s conversion failed", td->name); + return XPBD_SYSTEM_FAILURE; + } + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(INTEGER_t), opt_mname, + buf_ptr, size, INTEGER__xer_body_decode); +} + +asn_enc_rval_t +INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691-2008/11, #13.2.2, constrained whole number */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #11.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + unsigned long uvalue = 0; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + uvalue += ct->lower_bound; + if(asn_ulong2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + unsigned long uvalue = 0; + long svalue; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + if(per_long_range_unrebase(uvalue, ct->lower_bound, + ct->upper_bound, &svalue) + || asn_long2INTEGER(st, svalue)) { + ASN__DECODE_FAILED; + } + } + return rval; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len = 0; + void *p = NULL; + int ret = 0; + + /* Get the PER length */ + len = uper_get_length(pd, -1, 0, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value = 0; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_imax2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + + /* X.691-11/2008, #13.2.2, test if constrained whole number */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + /* #11.5.6 -> #11.3 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { + ASN__ENCODE_FAILED; + } + if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #10.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if (ct->range_bits > 16) { + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + int length = 0, i; + long value = 0; + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, + max_range_bytes, i); + + if ((length = per_get_few_bits(pd, i)) < 0) + ASN__DECODE_FAILED; + + /* X.691 #12.2.6 length determinant + lb (1) */ + length += 1; + ASN_DEBUG("Got length %d", length); + if (aper_get_align(pd) != 0) + ASN__DECODE_FAILED; + while (length--) { + int buf = per_get_few_bits(pd, 8); + if (buf < 0) + ASN__DECODE_FAILED; + value += (((long)buf) << (8 * length)); + } + + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_uint642INTEGER(st, value) + : asn_int642INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } else { + long value = 0; + if (ct->range_bits < 8) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else if (ct->range_bits == 8) { + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else { + /* Align */ + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, 16); + if(value < 0) ASN__DECODE_STARVED; + } + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_ulong2INTEGER(st, value) + : asn_long2INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } + return rval; + } else { + ASN__DECODE_FAILED; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len; + void *p; + int ret; + + /* Get the PER length */ + len = aper_get_length(pd, -1, -1, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + + /* #10.5.6 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + + v = value - ct->lower_bound; + + /* #12 <= 8 -> alignment ? */ + if (ct->range_bits < 8) { + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits == 8) { + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits <= 16) { + /* Consume the bytes to align on octet */ + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x0000 | v, + 16)) + ASN__ENCODE_FAILED; + } else { + /* TODO: extend to >64 bits */ + long v64 = v; + int i, j; + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + + for (j = sizeof(int64_t) -1; j != 0; j--) { + uint8_t val; + val = v64 >> (j * 8); + if (val != 0) + break; + } + + /* Putting length in the minimum number of bits ex: 5 = 3bits */ + if (per_put_few_bits(po, j, i)) + ASN__ENCODE_FAILED; + + /* Consume the bits to align on octet */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + /* Put the value */ + for (i = 0; i <= j; i++) { + if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) + ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + ssize_t mayEncode = aper_put_length(po, -1, end - buf); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +static intmax_t +asn__integer_convert(const uint8_t *b, const uint8_t *end) { + uintmax_t value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (uintmax_t)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +int +asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { + uint8_t *b, *end; + size_t size; + + /* Sanity checking */ + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + /* Cache the begin/end of the buffer */ + b = iptr->buf; /* Start of the INTEGER buffer */ + size = iptr->size; + end = b + size; /* Where to stop */ + + if(size > sizeof(intmax_t)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to process INTEGERs with >sizeof(intmax_t) bytes + * when the actual value is small, e.g. for intmax_t == int32_t + * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) + */ + /* Skip out the insignificant leading bytes */ + for(; b < end1; b++) { + switch(*b) { + case 0x00: if((b[1] & 0x80) == 0) continue; break; + case 0xff: if((b[1] & 0x80) != 0) continue; break; + } + break; + } + + size = end - b; + if(size > sizeof(intmax_t)) { + /* Still cannot fit the sizeof(intmax_t) */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + *lptr = asn__integer_convert(b, end); + return 0; +} + +/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ +int +asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { + uint8_t *b, *end; + uintmax_t value; + size_t size; + + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + b = iptr->buf; + size = iptr->size; + end = b + size; + + /* If all extra leading bytes are zeroes, ignore them */ + for(; size > sizeof(value); b++, size--) { + if(*b) { + /* Value won't fit into uintmax_t */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(value = 0; b < end; b++) + value = (value << 8) | *b; + + *lptr = value; + return 0; +} + +int +asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= ((~(uintmax_t)0) >> 1)) { + return asn_imax2INTEGER(st, value); + } + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ + for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)(long *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +int +asn_INTEGER2long(const INTEGER_t *iptr, long *l) { + intmax_t v; + if(asn_INTEGER2imax(iptr, &v) == 0) { + if(v < LONG_MIN || v > LONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { + uintmax_t v; + if(asn_INTEGER2umax(iptr, &v) == 0) { + if(v > ULONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_long2INTEGER(INTEGER_t *st, long value) { + return asn_imax2INTEGER(st, value); +} + +int +asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { + return asn_imax2INTEGER(st, value); +} + + +int +asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= INT64_MAX) + return asn_int642INTEGER(st, value); + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; + for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_int642INTEGER(INTEGER_t *st, int64_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtol/strtoimax(3). + */ +enum asn_strtox_result_e +asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { + int sign = 1; + intmax_t value; + +#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) + const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; + intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; +#undef ASN1_INTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + last_digit_max++; + sign = -1; + /* FALL THROUGH */ + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + if(sign > 0) { + value = value * 10 + d; + } else { + sign = 1; + value = -value * 10 - d; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *intp = sign * value; + return ASN_STRTOX_OK; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtoul/strtoumax(3). + */ +enum asn_strtox_result_e +asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { + uintmax_t value; + +#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) + const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; + uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; +#undef ASN1_UINTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + return ASN_STRTOX_ERROR_INVAL; + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + unsigned int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + value = value * 10 + d; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *uintp = value; + return ASN_STRTOX_OK; +} + +enum asn_strtox_result_e +asn_strtol_lim(const char *str, const char **end, long *lp) { + intmax_t value; + switch(asn_strtoimax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +enum asn_strtox_result_e +asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { + uintmax_t value; + switch(asn_strtoumax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +int +INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const INTEGER_t *a = aptr; + const INTEGER_t *b = bptr; + + (void)td; + + if(a && b) { + if(a->size && b->size) { + int sign_a = (a->buf[0] & 0x80) ? -1 : 1; + int sign_b = (b->buf[0] & 0x80) ? -1 : 1; + + if(sign_a < sign_b) return -1; + if(sign_a > sign_b) return 1; + + /* The shortest integer wins, unless comparing negatives */ + if(a->size < b->size) { + return -1 * sign_a; + } else if(a->size > b->size) { + return 1 * sign_b; + } + + return sign_a * memcmp(a->buf, b->buf, a->size); + } else if(a->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (1) * sign; + } else if(b->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (-1) * sign; + } else { + return 0; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +asn_random_fill_result_t +INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + INTEGER_t *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (INTEGER_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + if(asn_imax2INTEGER(st, value)) { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } else { + *sptr = st; + result_ok.length = st->size; + return result_ok; + } +} diff --git a/lib/s1ap3/asn1c/INTEGER.h b/lib/s1ap3/asn1c/INTEGER.h new file mode 100644 index 0000000000..f776c072eb --- /dev/null +++ b/lib/s1ap3/asn1c/INTEGER.h @@ -0,0 +1,108 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _INTEGER_H_ +#define _INTEGER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; + +extern asn_TYPE_descriptor_t asn_DEF_INTEGER; +extern asn_TYPE_operation_t asn_OP_INTEGER; + +/* Map with to integer value association */ +typedef struct asn_INTEGER_enum_map_s { + long nat_value; /* associated native integer value */ + size_t enum_len; /* strlen("tag") */ + const char *enum_name; /* "tag" */ +} asn_INTEGER_enum_map_t; + +/* This type describes an enumeration for INTEGER and ENUMERATED types */ +typedef struct asn_INTEGER_specifics_s { + const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ + const unsigned int *enum2value; /* "tag" => N; sorted by tag */ + int map_count; /* Elements in either map */ + int extension; /* This map is extensible */ + int strict_enumeration; /* Enumeration set is fixed */ + int field_width; /* Size of native integer */ + int field_unsigned; /* Signed=0, unsigned=1 */ +} asn_INTEGER_specifics_t; + +#define INTEGER_free ASN__PRIMITIVE_TYPE_free +#define INTEGER_decode_ber ber_decode_primitive +#define INTEGER_constraint asn_generic_no_constraint +asn_struct_print_f INTEGER_print; +asn_struct_compare_f INTEGER_compare; +der_type_encoder_f INTEGER_encode_der; +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +oer_type_decoder_f INTEGER_decode_oer; +oer_type_encoder_f INTEGER_encode_oer; +per_type_decoder_f INTEGER_decode_uper; +per_type_encoder_f INTEGER_encode_uper; +per_type_decoder_f INTEGER_decode_aper; +per_type_encoder_f INTEGER_encode_aper; +asn_random_fill_f INTEGER_random_fill; + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +/* + * Natiwe size-independent conversion of native integers to/from INTEGER. + * (l_size) is in bytes. + * Returns 0 if it was possible to convert, -1 otherwise. + * -1/EINVAL: Mandatory argument missing + * -1/ERANGE: Value encoded is out of range for long representation + * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). + */ +int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); +int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); +int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); +int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); + +/* + * Size-specific conversion helpers. + */ +int asn_INTEGER2long(const INTEGER_t *i, long *l); +int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); +int asn_long2INTEGER(INTEGER_t *i, long l); +int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); +int asn_int642INTEGER(INTEGER_t *i, int64_t l); +int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); + +/* A version of strtol/strtoimax(3) with nicer error reporting. */ +enum asn_strtox_result_e { + ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ + ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ + ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ + ASN_STRTOX_OK = 0, /* Conversion succeded, number ends at (*end) */ + ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */ +}; +enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, + long *l); +enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, + unsigned long *l); +enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, + intmax_t *l); +enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, + uintmax_t *l); + +/* + * Convert the integer value into the corresponding enumeration map entry. + */ +const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( + const asn_INTEGER_specifics_t *specs, long value); + +#ifdef __cplusplus +} +#endif + +#endif /* _INTEGER_H_ */ diff --git a/lib/s1ap3/asn1c/INTEGER_oer.c b/lib/s1ap3/asn1c/INTEGER_oer.c new file mode 100644 index 0000000000..5c98d3e757 --- /dev/null +++ b/lib/s1ap3/asn1c/INTEGER_oer.c @@ -0,0 +1,179 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_DISABLE_OER_SUPPORT + +#include +#include +#include + +asn_dec_rval_t +INTEGER_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + INTEGER_t *st = (INTEGER_t *)*sptr; + struct asn_oer_constraint_number_s ct = {0, 0}; + size_t req_bytes; + + (void)opt_codec_ctx; + (void)specs; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + + if(!constraints) constraints = td->encoding_constraints.oer_constraints; + if(constraints) ct = constraints->value; + + if(ct.width) { + req_bytes = ct.width; + } else { + /* No lower bound and no upper bound, effectively */ + + ssize_t consumed = oer_fetch_length(ptr, size, &req_bytes); + if(consumed == 0) { + ASN__DECODE_STARVED; + } else if(consumed == -1) { + ASN__DECODE_FAILED; + } + rval.consumed += consumed; + ptr = (const char *)ptr + consumed; + size -= consumed; + } + + if(req_bytes > size) { + ASN__DECODE_STARVED; + } + + if(ct.positive) { + /* X.969 08/2015 10.2(a) */ + unsigned msb; /* Most significant bit */ + size_t useful_size; + + /* Check most significant bit */ + msb = *(const uint8_t *)ptr >> 7; /* yields 0 or 1 */ + useful_size = msb + req_bytes; + st->buf = (uint8_t *)MALLOC(useful_size + 1); + if(!st->buf) { + ASN__DECODE_FAILED; + } + + /* + * Record a large unsigned in a way not to confuse it + * with signed value. + */ + st->buf[0] = '\0'; + memcpy(st->buf + msb, ptr, req_bytes); + st->buf[useful_size] = '\0'; /* Just in case, 0-terminate */ + st->size = useful_size; + + rval.consumed += req_bytes; + return rval; + } else { + /* X.969 08/2015 10.2(b) */ + st->buf = (uint8_t *)MALLOC(req_bytes + 1); + if(!st->buf) { + ASN__DECODE_FAILED; + } + + memcpy(st->buf, ptr, req_bytes); + st->buf[req_bytes] = '\0'; /* Just in case, 0-terminate */ + st->size = req_bytes; + + rval.consumed += req_bytes; + return rval; + } +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +INTEGER_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = sptr; + asn_enc_rval_t er; + struct asn_oer_constraint_number_s ct = {0, 0}; + const uint8_t *buf; + const uint8_t *end; + size_t useful_bytes; + size_t req_bytes = 0; + int sign = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.oer_constraints; + if(constraints) ct = constraints->value; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size; + + sign = (buf && buf < end) ? buf[0] & 0x80 : 0; + + /* Ignore 9 leading zeroes or ones */ + if(ct.positive) { + if(sign) { + /* The value given is a signed value. Can't proceed. */ + ASN__ENCODE_FAILED; + } + /* Remove leading zeros. */ + for(; buf + 1 < end; buf++) { + if(buf[0] != 0x0) break; + } + } else { + for(; buf + 1 < end; buf++) { + if(buf[0] == 0x0 && (buf[1] & 0x80) == 0) { + continue; + } else if(buf[0] == 0xff && (buf[1] & 0x80) != 0) { + continue; + } + break; + } + } + + useful_bytes = end - buf; + if(ct.width) { + req_bytes = ct.width; + } else { + ssize_t r = oer_serialize_length(useful_bytes, cb, app_key); + if(r < 0) { + ASN__ENCODE_FAILED; + } + er.encoded += r; + req_bytes = useful_bytes; + } + + if(req_bytes < useful_bytes) { + ASN__ENCODE_FAILED; + } + + er.encoded += req_bytes; + + for(; req_bytes > useful_bytes; req_bytes--) { + if(cb(sign?"\xff":"\0", 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } + } + + if(cb(buf, useful_bytes, app_key) < 0) { + ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/lib/s1ap3/asn1c/Makefile.am b/lib/s1ap3/asn1c/Makefile.am new file mode 100644 index 0000000000..9a22de0021 --- /dev/null +++ b/lib/s1ap3/asn1c/Makefile.am @@ -0,0 +1,1159 @@ +ASN_MODULE_SRCS= \ + S1AP_S1AP-PDU.c \ + S1AP_InitiatingMessage.c \ + S1AP_SuccessfulOutcome.c \ + S1AP_UnsuccessfulOutcome.c \ + S1AP_E-RAB-IE-ContainerList.c \ + S1AP_HandoverRequired.c \ + S1AP_HandoverCommand.c \ + S1AP_E-RABSubjecttoDataForwardingList.c \ + S1AP_E-RABDataForwardingItem.c \ + S1AP_HandoverPreparationFailure.c \ + S1AP_HandoverRequest.c \ + S1AP_E-RABToBeSetupListHOReq.c \ + S1AP_E-RABToBeSetupItemHOReq.c \ + S1AP_HandoverRequestAcknowledge.c \ + S1AP_E-RABAdmittedList.c \ + S1AP_E-RABAdmittedItem.c \ + S1AP_E-RABFailedtoSetupListHOReqAck.c \ + S1AP_E-RABFailedToSetupItemHOReqAck.c \ + S1AP_HandoverFailure.c \ + S1AP_HandoverNotify.c \ + S1AP_PathSwitchRequest.c \ + S1AP_E-RABToBeSwitchedDLList.c \ + S1AP_E-RABToBeSwitchedDLItem.c \ + S1AP_PathSwitchRequestAcknowledge.c \ + S1AP_E-RABToBeSwitchedULList.c \ + S1AP_E-RABToBeSwitchedULItem.c \ + S1AP_PathSwitchRequestFailure.c \ + S1AP_HandoverCancel.c \ + S1AP_HandoverCancelAcknowledge.c \ + S1AP_E-RABSetupRequest.c \ + S1AP_E-RABToBeSetupListBearerSUReq.c \ + S1AP_E-RABToBeSetupItemBearerSUReq.c \ + S1AP_E-RABSetupResponse.c \ + S1AP_E-RABSetupListBearerSURes.c \ + S1AP_E-RABSetupItemBearerSURes.c \ + S1AP_E-RABModifyRequest.c \ + S1AP_E-RABToBeModifiedListBearerModReq.c \ + S1AP_E-RABToBeModifiedItemBearerModReq.c \ + S1AP_E-RABModifyResponse.c \ + S1AP_E-RABModifyListBearerModRes.c \ + S1AP_E-RABModifyItemBearerModRes.c \ + S1AP_E-RABReleaseCommand.c \ + S1AP_E-RABReleaseResponse.c \ + S1AP_E-RABReleaseListBearerRelComp.c \ + S1AP_E-RABReleaseItemBearerRelComp.c \ + S1AP_E-RABReleaseIndication.c \ + S1AP_InitialContextSetupRequest.c \ + S1AP_E-RABToBeSetupListCtxtSUReq.c \ + S1AP_E-RABToBeSetupItemCtxtSUReq.c \ + S1AP_InitialContextSetupResponse.c \ + S1AP_E-RABSetupListCtxtSURes.c \ + S1AP_E-RABSetupItemCtxtSURes.c \ + S1AP_InitialContextSetupFailure.c \ + S1AP_Paging.c \ + S1AP_TAIList.c \ + S1AP_TAIItem.c \ + S1AP_UEContextReleaseRequest.c \ + S1AP_UEContextReleaseCommand.c \ + S1AP_UEContextReleaseComplete.c \ + S1AP_UEContextModificationRequest.c \ + S1AP_UEContextModificationResponse.c \ + S1AP_UEContextModificationFailure.c \ + S1AP_UERadioCapabilityMatchRequest.c \ + S1AP_UERadioCapabilityMatchResponse.c \ + S1AP_DownlinkNASTransport.c \ + S1AP_InitialUEMessage.c \ + S1AP_UplinkNASTransport.c \ + S1AP_NASNonDeliveryIndication.c \ + S1AP_RerouteNASRequest.c \ + S1AP_NASDeliveryIndication.c \ + S1AP_Reset.c \ + S1AP_ResetType.c \ + S1AP_ResetAll.c \ + S1AP_UE-associatedLogicalS1-ConnectionListRes.c \ + S1AP_ResetAcknowledge.c \ + S1AP_UE-associatedLogicalS1-ConnectionListResAck.c \ + S1AP_ErrorIndication.c \ + S1AP_S1SetupRequest.c \ + S1AP_S1SetupResponse.c \ + S1AP_S1SetupFailure.c \ + S1AP_ENBConfigurationUpdate.c \ + S1AP_ENBConfigurationUpdateAcknowledge.c \ + S1AP_ENBConfigurationUpdateFailure.c \ + S1AP_MMEConfigurationUpdate.c \ + S1AP_MMEConfigurationUpdateAcknowledge.c \ + S1AP_MMEConfigurationUpdateFailure.c \ + S1AP_DownlinkS1cdma2000tunnelling.c \ + S1AP_UplinkS1cdma2000tunnelling.c \ + S1AP_UECapabilityInfoIndication.c \ + S1AP_ENBStatusTransfer.c \ + S1AP_MMEStatusTransfer.c \ + S1AP_TraceStart.c \ + S1AP_TraceFailureIndication.c \ + S1AP_DeactivateTrace.c \ + S1AP_CellTrafficTrace.c \ + S1AP_LocationReportingControl.c \ + S1AP_LocationReportingFailureIndication.c \ + S1AP_LocationReport.c \ + S1AP_OverloadStart.c \ + S1AP_OverloadStop.c \ + S1AP_WriteReplaceWarningRequest.c \ + S1AP_WriteReplaceWarningResponse.c \ + S1AP_ENBDirectInformationTransfer.c \ + S1AP_Inter-SystemInformationTransferType.c \ + S1AP_MMEDirectInformationTransfer.c \ + S1AP_ENBConfigurationTransfer.c \ + S1AP_MMEConfigurationTransfer.c \ + S1AP_PrivateMessage.c \ + S1AP_KillRequest.c \ + S1AP_KillResponse.c \ + S1AP_PWSRestartIndication.c \ + S1AP_PWSFailureIndication.c \ + S1AP_DownlinkUEAssociatedLPPaTransport.c \ + S1AP_UplinkUEAssociatedLPPaTransport.c \ + S1AP_DownlinkNonUEAssociatedLPPaTransport.c \ + S1AP_UplinkNonUEAssociatedLPPaTransport.c \ + S1AP_E-RABModificationIndication.c \ + S1AP_E-RABToBeModifiedListBearerModInd.c \ + S1AP_E-RABToBeModifiedItemBearerModInd.c \ + S1AP_E-RABNotToBeModifiedListBearerModInd.c \ + S1AP_E-RABNotToBeModifiedItemBearerModInd.c \ + S1AP_CSGMembershipInfo.c \ + S1AP_E-RABModificationConfirm.c \ + S1AP_E-RABModifyListBearerModConf.c \ + S1AP_E-RABModifyItemBearerModConf.c \ + S1AP_UEContextModificationIndication.c \ + S1AP_UEContextModificationConfirm.c \ + S1AP_UEContextSuspendRequest.c \ + S1AP_UEContextSuspendResponse.c \ + S1AP_UEContextResumeRequest.c \ + S1AP_E-RABFailedToResumeListResumeReq.c \ + S1AP_E-RABFailedToResumeItemResumeReq.c \ + S1AP_UEContextResumeResponse.c \ + S1AP_E-RABFailedToResumeListResumeRes.c \ + S1AP_E-RABFailedToResumeItemResumeRes.c \ + S1AP_UEContextResumeFailure.c \ + S1AP_ConnectionEstablishmentIndication.c \ + S1AP_RetrieveUEInformation.c \ + S1AP_UEInformationTransfer.c \ + S1AP_ENBCPRelocationIndication.c \ + S1AP_MMECPRelocationIndication.c \ + S1AP_Additional-GUTI.c \ + S1AP_AreaScopeOfMDT.c \ + S1AP_AllocationAndRetentionPriority.c \ + S1AP_AssistanceDataForCECapableUEs.c \ + S1AP_AssistanceDataForPaging.c \ + S1AP_AssistanceDataForRecommendedCells.c \ + S1AP_Bearers-SubjectToStatusTransferList.c \ + S1AP_Bearers-SubjectToStatusTransfer-Item.c \ + S1AP_BearerType.c \ + S1AP_BitRate.c \ + S1AP_BPLMNs.c \ + S1AP_BroadcastCancelledAreaList.c \ + S1AP_BroadcastCompletedAreaList.c \ + S1AP_CancelledCellinEAI.c \ + S1AP_CancelledCellinEAI-Item.c \ + S1AP_CancelledCellinTAI.c \ + S1AP_CancelledCellinTAI-Item.c \ + S1AP_Cause.c \ + S1AP_CauseMisc.c \ + S1AP_CauseProtocol.c \ + S1AP_CauseRadioNetwork.c \ + S1AP_CauseTransport.c \ + S1AP_CauseNas.c \ + S1AP_CellAccessMode.c \ + S1AP_CellIdentifierAndCELevelForCECapableUEs.c \ + S1AP_CELevel.c \ + S1AP_CE-mode-B-SupportIndicator.c \ + S1AP_CellIdentity.c \ + S1AP_CellID-Broadcast.c \ + S1AP_CellID-Broadcast-Item.c \ + S1AP_CellID-Cancelled.c \ + S1AP_CellID-Cancelled-Item.c \ + S1AP_CellBasedMDT.c \ + S1AP_CellIdListforMDT.c \ + S1AP_Cdma2000PDU.c \ + S1AP_Cdma2000RATType.c \ + S1AP_Cdma2000SectorID.c \ + S1AP_Cdma2000HOStatus.c \ + S1AP_Cdma2000HORequiredIndication.c \ + S1AP_Cdma2000OneXSRVCCInfo.c \ + S1AP_Cdma2000OneXMEID.c \ + S1AP_Cdma2000OneXMSI.c \ + S1AP_Cdma2000OneXPilot.c \ + S1AP_Cdma2000OneXRAND.c \ + S1AP_Cell-Size.c \ + S1AP_CellType.c \ + S1AP_CGI.c \ + S1AP_CI.c \ + S1AP_CNDomain.c \ + S1AP_ConcurrentWarningMessageIndicator.c \ + S1AP_Correlation-ID.c \ + S1AP_CSFallbackIndicator.c \ + S1AP_AdditionalCSFallbackIndicator.c \ + S1AP_CSG-Id.c \ + S1AP_CSG-IdList.c \ + S1AP_CSG-IdList-Item.c \ + S1AP_CSGMembershipStatus.c \ + S1AP_COUNTvalue.c \ + S1AP_COUNTValueExtended.c \ + S1AP_COUNTvaluePDCP-SNlength18.c \ + S1AP_Coverage-Level.c \ + S1AP_CriticalityDiagnostics.c \ + S1AP_CriticalityDiagnostics-IE-List.c \ + S1AP_CriticalityDiagnostics-IE-Item.c \ + S1AP_DataCodingScheme.c \ + S1AP_DCN-ID.c \ + S1AP_ServedDCNs.c \ + S1AP_ServedDCNsItem.c \ + S1AP_DL-CP-SecurityInformation.c \ + S1AP_DL-Forwarding.c \ + S1AP_DL-NAS-MAC.c \ + S1AP_Direct-Forwarding-Path-Availability.c \ + S1AP_Data-Forwarding-Not-Possible.c \ + S1AP_DLNASPDUDeliveryAckRequest.c \ + S1AP_EARFCN.c \ + S1AP_ECGIList.c \ + S1AP_PWSfailedECGIList.c \ + S1AP_EmergencyAreaIDList.c \ + S1AP_EmergencyAreaID.c \ + S1AP_EmergencyAreaID-Broadcast.c \ + S1AP_EmergencyAreaID-Broadcast-Item.c \ + S1AP_EmergencyAreaID-Cancelled.c \ + S1AP_EmergencyAreaID-Cancelled-Item.c \ + S1AP_CompletedCellinEAI.c \ + S1AP_CompletedCellinEAI-Item.c \ + S1AP_ECGI-List.c \ + S1AP_EmergencyAreaIDListForRestart.c \ + S1AP_ENB-ID.c \ + S1AP_GERAN-Cell-ID.c \ + S1AP_Global-ENB-ID.c \ + S1AP_GUMMEIList.c \ + S1AP_ENB-StatusTransfer-TransparentContainer.c \ + S1AP_ENB-UE-S1AP-ID.c \ + S1AP_ENBname.c \ + S1AP_ENBX2TLAs.c \ + S1AP_EncryptionAlgorithms.c \ + S1AP_EnhancedCoverageRestricted.c \ + S1AP_EPLMNs.c \ + S1AP_EventType.c \ + S1AP_E-RAB-ID.c \ + S1AP_E-RABInformationList.c \ + S1AP_E-RABInformationListItem.c \ + S1AP_E-RABList.c \ + S1AP_E-RABItem.c \ + S1AP_E-RABLevelQoSParameters.c \ + S1AP_EUTRAN-CGI.c \ + S1AP_EUTRANRoundTripDelayEstimationInfo.c \ + S1AP_ExpectedUEBehaviour.c \ + S1AP_ExpectedUEActivityBehaviour.c \ + S1AP_ExpectedActivityPeriod.c \ + S1AP_ExpectedIdlePeriod.c \ + S1AP_SourceOfUEActivityBehaviourInformation.c \ + S1AP_ExpectedHOInterval.c \ + S1AP_ExtendedRNC-ID.c \ + S1AP_ExtendedRepetitionPeriod.c \ + S1AP_Extended-UEIdentityIndexValue.c \ + S1AP_ForbiddenInterRATs.c \ + S1AP_ForbiddenTAs.c \ + S1AP_ForbiddenTAs-Item.c \ + S1AP_ForbiddenTACs.c \ + S1AP_ForbiddenLAs.c \ + S1AP_ForbiddenLAs-Item.c \ + S1AP_ForbiddenLACs.c \ + S1AP_GBR-QosInformation.c \ + S1AP_GTP-TEID.c \ + S1AP_GUMMEI.c \ + S1AP_GUMMEIType.c \ + S1AP_GWContextReleaseIndication.c \ + S1AP_HandoverRestrictionList.c \ + S1AP_HandoverType.c \ + S1AP_HFN.c \ + S1AP_HFNModified.c \ + S1AP_HFNforPDCP-SNlength18.c \ + S1AP_Masked-IMEISV.c \ + S1AP_ImmediateMDT.c \ + S1AP_IMSI.c \ + S1AP_InformationOnRecommendedCellsAndENBsForPaging.c \ + S1AP_IntegrityProtectionAlgorithms.c \ + S1AP_IntendedNumberOfPagingAttempts.c \ + S1AP_InterfacesToTrace.c \ + S1AP_KillAllWarningMessages.c \ + S1AP_LAC.c \ + S1AP_LAI.c \ + S1AP_LastVisitedCell-Item.c \ + S1AP_LastVisitedEUTRANCellInformation.c \ + S1AP_LastVisitedUTRANCellInformation.c \ + S1AP_LastVisitedGERANCellInformation.c \ + S1AP_L3-Information.c \ + S1AP_LPPa-PDU.c \ + S1AP_LHN-ID.c \ + S1AP_Links-to-log.c \ + S1AP_ListeningSubframePattern.c \ + S1AP_LoggedMDT.c \ + S1AP_LoggingInterval.c \ + S1AP_LoggingDuration.c \ + S1AP_LoggedMBSFNMDT.c \ + S1AP_M3Configuration.c \ + S1AP_M3period.c \ + S1AP_M4Configuration.c \ + S1AP_M4period.c \ + S1AP_M5Configuration.c \ + S1AP_M5period.c \ + S1AP_M6Configuration.c \ + S1AP_M6report-Interval.c \ + S1AP_M6delay-threshold.c \ + S1AP_M7Configuration.c \ + S1AP_M7period.c \ + S1AP_MDT-Activation.c \ + S1AP_MDT-Location-Info.c \ + S1AP_MDT-Configuration.c \ + S1AP_ManagementBasedMDTAllowed.c \ + S1AP_MBSFN-ResultToLog.c \ + S1AP_MBSFN-ResultToLogInfo.c \ + S1AP_MDTPLMNList.c \ + S1AP_PrivacyIndicator.c \ + S1AP_MDTMode.c \ + S1AP_MDTMode-Extension.c \ + S1AP_MeasurementsToActivate.c \ + S1AP_MeasurementThresholdA2.c \ + S1AP_MessageIdentifier.c \ + S1AP_MobilityInformation.c \ + S1AP_MMEname.c \ + S1AP_MMEPagingTarget.c \ + S1AP_MMERelaySupportIndicator.c \ + S1AP_MME-Group-ID.c \ + S1AP_MME-Code.c \ + S1AP_MME-UE-S1AP-ID.c \ + S1AP_M-TMSI.c \ + S1AP_MSClassmark2.c \ + S1AP_MSClassmark3.c \ + S1AP_MutingAvailabilityIndication.c \ + S1AP_MutingPatternInformation.c \ + S1AP_NAS-PDU.c \ + S1AP_NASSecurityParametersfromE-UTRAN.c \ + S1AP_NASSecurityParameterstoE-UTRAN.c \ + S1AP_NB-IoT-DefaultPagingDRX.c \ + S1AP_NB-IoT-Paging-eDRXInformation.c \ + S1AP_NB-IoT-Paging-eDRX-Cycle.c \ + S1AP_NB-IoT-PagingTimeWindow.c \ + S1AP_NB-IoT-UEIdentityIndexValue.c \ + S1AP_NextPagingAreaScope.c \ + S1AP_NumberofBroadcastRequest.c \ + S1AP_NumberOfBroadcasts.c \ + S1AP_OldBSS-ToNewBSS-Information.c \ + S1AP_OverloadAction.c \ + S1AP_OverloadResponse.c \ + S1AP_PagingAttemptInformation.c \ + S1AP_PagingAttemptCount.c \ + S1AP_Paging-eDRXInformation.c \ + S1AP_Paging-eDRX-Cycle.c \ + S1AP_PagingTimeWindow.c \ + S1AP_PagingDRX.c \ + S1AP_PagingPriority.c \ + S1AP_PDCP-SN.c \ + S1AP_PDCP-SNExtended.c \ + S1AP_PDCP-SNlength18.c \ + S1AP_M1PeriodicReporting.c \ + S1AP_PLMNidentity.c \ + S1AP_Port-Number.c \ + S1AP_Pre-emptionCapability.c \ + S1AP_Pre-emptionVulnerability.c \ + S1AP_PriorityLevel.c \ + S1AP_ProSeAuthorized.c \ + S1AP_ProSeDirectDiscovery.c \ + S1AP_ProSeUEtoNetworkRelaying.c \ + S1AP_ProSeDirectCommunication.c \ + S1AP_PS-ServiceNotAvailable.c \ + S1AP_QCI.c \ + S1AP_ReceiveStatusofULPDCPSDUs.c \ + S1AP_ReceiveStatusOfULPDCPSDUsExtended.c \ + S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c \ + S1AP_RecommendedCellsForPaging.c \ + S1AP_RecommendedCellList.c \ + S1AP_RecommendedCellItem.c \ + S1AP_RecommendedENBsForPaging.c \ + S1AP_RecommendedENBList.c \ + S1AP_RecommendedENBItem.c \ + S1AP_RelativeMMECapacity.c \ + S1AP_RelayNode-Indicator.c \ + S1AP_RAC.c \ + S1AP_RAT-Type.c \ + S1AP_ReportAmountMDT.c \ + S1AP_ReportIntervalMDT.c \ + S1AP_M1ReportingTrigger.c \ + S1AP_RequestType.c \ + S1AP_RIMTransfer.c \ + S1AP_RIMInformation.c \ + S1AP_RIMRoutingAddress.c \ + S1AP_ReportArea.c \ + S1AP_RepetitionPeriod.c \ + S1AP_RLFReportInformation.c \ + S1AP_RNC-ID.c \ + S1AP_RRC-Container.c \ + S1AP_RRC-Establishment-Cause.c \ + S1AP_ECGIListForRestart.c \ + S1AP_Routing-ID.c \ + S1AP_SecurityKey.c \ + S1AP_SecurityContext.c \ + S1AP_SerialNumber.c \ + S1AP_SONInformation.c \ + S1AP_SONInformation-Extension.c \ + S1AP_SONInformationRequest.c \ + S1AP_SONInformationReply.c \ + S1AP_SONInformationReport.c \ + S1AP_SONConfigurationTransfer.c \ + S1AP_SynchronisationInformation.c \ + S1AP_Source-ToTarget-TransparentContainer.c \ + S1AP_SourceBSS-ToTargetBSS-TransparentContainer.c \ + S1AP_SourceeNB-ID.c \ + S1AP_SRVCCOperationNotPossible.c \ + S1AP_SRVCCOperationPossible.c \ + S1AP_SRVCCHOIndication.c \ + S1AP_SourceeNB-ToTargeteNB-TransparentContainer.c \ + S1AP_SourceRNC-ToTargetRNC-TransparentContainer.c \ + S1AP_ServedGUMMEIs.c \ + S1AP_ServedGUMMEIsItem.c \ + S1AP_ServedGroupIDs.c \ + S1AP_ServedMMECs.c \ + S1AP_ServedPLMNs.c \ + S1AP_SubscriberProfileIDforRFP.c \ + S1AP_SupportedTAs.c \ + S1AP_SupportedTAs-Item.c \ + S1AP_StratumLevel.c \ + S1AP_SynchronisationStatus.c \ + S1AP_TimeSynchronisationInfo.c \ + S1AP_S-TMSI.c \ + S1AP_TAC.c \ + S1AP_TAIBasedMDT.c \ + S1AP_TAIListforMDT.c \ + S1AP_TAIListforWarning.c \ + S1AP_TAI.c \ + S1AP_TAI-Broadcast.c \ + S1AP_TAI-Broadcast-Item.c \ + S1AP_TAI-Cancelled.c \ + S1AP_TAI-Cancelled-Item.c \ + S1AP_TABasedMDT.c \ + S1AP_TAListforMDT.c \ + S1AP_CompletedCellinTAI.c \ + S1AP_CompletedCellinTAI-Item.c \ + S1AP_TBCD-STRING.c \ + S1AP_TargetID.c \ + S1AP_TargeteNB-ID.c \ + S1AP_TargetRNC-ID.c \ + S1AP_TargeteNB-ToSourceeNB-TransparentContainer.c \ + S1AP_Target-ToSource-TransparentContainer.c \ + S1AP_TargetRNC-ToSourceRNC-TransparentContainer.c \ + S1AP_TargetBSS-ToSourceBSS-TransparentContainer.c \ + S1AP_M1ThresholdEventA2.c \ + S1AP_Threshold-RSRP.c \ + S1AP_Threshold-RSRQ.c \ + S1AP_TimeToWait.c \ + S1AP_Time-UE-StayedInCell.c \ + S1AP_Time-UE-StayedInCell-EnhancedGranularity.c \ + S1AP_TransportInformation.c \ + S1AP_TransportLayerAddress.c \ + S1AP_TraceActivation.c \ + S1AP_TraceDepth.c \ + S1AP_E-UTRAN-Trace-ID.c \ + S1AP_TrafficLoadReductionIndication.c \ + S1AP_TunnelInformation.c \ + S1AP_TypeOfError.c \ + S1AP_TAIListForRestart.c \ + S1AP_UEAggregateMaximumBitrate.c \ + S1AP_UE-RetentionInformation.c \ + S1AP_UE-S1AP-IDs.c \ + S1AP_UE-S1AP-ID-pair.c \ + S1AP_UE-associatedLogicalS1-ConnectionItem.c \ + S1AP_UEIdentityIndexValue.c \ + S1AP_UE-HistoryInformation.c \ + S1AP_UE-HistoryInformationFromTheUE.c \ + S1AP_UEPagingID.c \ + S1AP_UERadioCapability.c \ + S1AP_UERadioCapabilityForPaging.c \ + S1AP_UE-RLF-Report-Container.c \ + S1AP_UE-RLF-Report-Container-for-extended-bands.c \ + S1AP_UESecurityCapabilities.c \ + S1AP_UESidelinkAggregateMaximumBitrate.c \ + S1AP_UE-Usage-Type.c \ + S1AP_UL-CP-SecurityInformation.c \ + S1AP_UL-NAS-MAC.c \ + S1AP_UL-NAS-Count.c \ + S1AP_UserLocationInformation.c \ + S1AP_UEUserPlaneCIoTSupportIndicator.c \ + S1AP_VoiceSupportMatchIndicator.c \ + S1AP_V2XServicesAuthorized.c \ + S1AP_VehicleUE.c \ + S1AP_PedestrianUE.c \ + S1AP_WarningAreaList.c \ + S1AP_WarningType.c \ + S1AP_WarningSecurityInfo.c \ + S1AP_WarningMessageContents.c \ + S1AP_X2TNLConfigurationInfo.c \ + S1AP_ENBX2ExtTLAs.c \ + S1AP_ENBX2ExtTLA.c \ + S1AP_ENBX2GTPTLAs.c \ + S1AP_ENBIndirectX2TransportLayerAddresses.c \ + S1AP_Criticality.c \ + S1AP_Presence.c \ + S1AP_PrivateIE-ID.c \ + S1AP_ProcedureCode.c \ + S1AP_ProtocolExtensionID.c \ + S1AP_ProtocolIE-ID.c \ + S1AP_TriggeringMessage.c \ + S1AP_ProtocolIE-Container.c \ + S1AP_ProtocolIE-SingleContainer.c \ + S1AP_ProtocolIE-Field.c \ + S1AP_ProtocolIE-ContainerList.c \ + S1AP_ProtocolExtensionContainer.c \ + S1AP_ProtocolExtensionField.c \ + S1AP_PrivateIE-Container.c \ + S1AP_PrivateIE-Field.c + +ASN_MODULE_HDRS= \ + S1AP_S1AP-PDU.h \ + S1AP_InitiatingMessage.h \ + S1AP_SuccessfulOutcome.h \ + S1AP_UnsuccessfulOutcome.h \ + S1AP_E-RAB-IE-ContainerList.h \ + S1AP_E-RAB-IE-ContainerPairList.h \ + S1AP_ProtocolError-IE-ContainerList.h \ + S1AP_HandoverRequired.h \ + S1AP_HandoverCommand.h \ + S1AP_E-RABSubjecttoDataForwardingList.h \ + S1AP_E-RABDataForwardingItem.h \ + S1AP_HandoverPreparationFailure.h \ + S1AP_HandoverRequest.h \ + S1AP_E-RABToBeSetupListHOReq.h \ + S1AP_E-RABToBeSetupItemHOReq.h \ + S1AP_HandoverRequestAcknowledge.h \ + S1AP_E-RABAdmittedList.h \ + S1AP_E-RABAdmittedItem.h \ + S1AP_E-RABFailedtoSetupListHOReqAck.h \ + S1AP_E-RABFailedToSetupItemHOReqAck.h \ + S1AP_HandoverFailure.h \ + S1AP_HandoverNotify.h \ + S1AP_PathSwitchRequest.h \ + S1AP_E-RABToBeSwitchedDLList.h \ + S1AP_E-RABToBeSwitchedDLItem.h \ + S1AP_PathSwitchRequestAcknowledge.h \ + S1AP_E-RABToBeSwitchedULList.h \ + S1AP_E-RABToBeSwitchedULItem.h \ + S1AP_PathSwitchRequestFailure.h \ + S1AP_HandoverCancel.h \ + S1AP_HandoverCancelAcknowledge.h \ + S1AP_E-RABSetupRequest.h \ + S1AP_E-RABToBeSetupListBearerSUReq.h \ + S1AP_E-RABToBeSetupItemBearerSUReq.h \ + S1AP_E-RABSetupResponse.h \ + S1AP_E-RABSetupListBearerSURes.h \ + S1AP_E-RABSetupItemBearerSURes.h \ + S1AP_E-RABModifyRequest.h \ + S1AP_E-RABToBeModifiedListBearerModReq.h \ + S1AP_E-RABToBeModifiedItemBearerModReq.h \ + S1AP_E-RABModifyResponse.h \ + S1AP_E-RABModifyListBearerModRes.h \ + S1AP_E-RABModifyItemBearerModRes.h \ + S1AP_E-RABReleaseCommand.h \ + S1AP_E-RABReleaseResponse.h \ + S1AP_E-RABReleaseListBearerRelComp.h \ + S1AP_E-RABReleaseItemBearerRelComp.h \ + S1AP_E-RABReleaseIndication.h \ + S1AP_InitialContextSetupRequest.h \ + S1AP_E-RABToBeSetupListCtxtSUReq.h \ + S1AP_E-RABToBeSetupItemCtxtSUReq.h \ + S1AP_InitialContextSetupResponse.h \ + S1AP_E-RABSetupListCtxtSURes.h \ + S1AP_E-RABSetupItemCtxtSURes.h \ + S1AP_InitialContextSetupFailure.h \ + S1AP_Paging.h \ + S1AP_TAIList.h \ + S1AP_TAIItem.h \ + S1AP_UEContextReleaseRequest.h \ + S1AP_UEContextReleaseCommand.h \ + S1AP_UEContextReleaseComplete.h \ + S1AP_UEContextModificationRequest.h \ + S1AP_UEContextModificationResponse.h \ + S1AP_UEContextModificationFailure.h \ + S1AP_UERadioCapabilityMatchRequest.h \ + S1AP_UERadioCapabilityMatchResponse.h \ + S1AP_DownlinkNASTransport.h \ + S1AP_InitialUEMessage.h \ + S1AP_UplinkNASTransport.h \ + S1AP_NASNonDeliveryIndication.h \ + S1AP_RerouteNASRequest.h \ + S1AP_NASDeliveryIndication.h \ + S1AP_Reset.h \ + S1AP_ResetType.h \ + S1AP_ResetAll.h \ + S1AP_UE-associatedLogicalS1-ConnectionListRes.h \ + S1AP_ResetAcknowledge.h \ + S1AP_UE-associatedLogicalS1-ConnectionListResAck.h \ + S1AP_ErrorIndication.h \ + S1AP_S1SetupRequest.h \ + S1AP_S1SetupResponse.h \ + S1AP_S1SetupFailure.h \ + S1AP_ENBConfigurationUpdate.h \ + S1AP_ENBConfigurationUpdateAcknowledge.h \ + S1AP_ENBConfigurationUpdateFailure.h \ + S1AP_MMEConfigurationUpdate.h \ + S1AP_MMEConfigurationUpdateAcknowledge.h \ + S1AP_MMEConfigurationUpdateFailure.h \ + S1AP_DownlinkS1cdma2000tunnelling.h \ + S1AP_UplinkS1cdma2000tunnelling.h \ + S1AP_UECapabilityInfoIndication.h \ + S1AP_ENBStatusTransfer.h \ + S1AP_MMEStatusTransfer.h \ + S1AP_TraceStart.h \ + S1AP_TraceFailureIndication.h \ + S1AP_DeactivateTrace.h \ + S1AP_CellTrafficTrace.h \ + S1AP_LocationReportingControl.h \ + S1AP_LocationReportingFailureIndication.h \ + S1AP_LocationReport.h \ + S1AP_OverloadStart.h \ + S1AP_OverloadStop.h \ + S1AP_WriteReplaceWarningRequest.h \ + S1AP_WriteReplaceWarningResponse.h \ + S1AP_ENBDirectInformationTransfer.h \ + S1AP_Inter-SystemInformationTransferType.h \ + S1AP_MMEDirectInformationTransfer.h \ + S1AP_ENBConfigurationTransfer.h \ + S1AP_MMEConfigurationTransfer.h \ + S1AP_PrivateMessage.h \ + S1AP_KillRequest.h \ + S1AP_KillResponse.h \ + S1AP_PWSRestartIndication.h \ + S1AP_PWSFailureIndication.h \ + S1AP_DownlinkUEAssociatedLPPaTransport.h \ + S1AP_UplinkUEAssociatedLPPaTransport.h \ + S1AP_DownlinkNonUEAssociatedLPPaTransport.h \ + S1AP_UplinkNonUEAssociatedLPPaTransport.h \ + S1AP_E-RABModificationIndication.h \ + S1AP_E-RABToBeModifiedListBearerModInd.h \ + S1AP_E-RABToBeModifiedItemBearerModInd.h \ + S1AP_E-RABNotToBeModifiedListBearerModInd.h \ + S1AP_E-RABNotToBeModifiedItemBearerModInd.h \ + S1AP_CSGMembershipInfo.h \ + S1AP_E-RABModificationConfirm.h \ + S1AP_E-RABModifyListBearerModConf.h \ + S1AP_E-RABModifyItemBearerModConf.h \ + S1AP_UEContextModificationIndication.h \ + S1AP_UEContextModificationConfirm.h \ + S1AP_UEContextSuspendRequest.h \ + S1AP_UEContextSuspendResponse.h \ + S1AP_UEContextResumeRequest.h \ + S1AP_E-RABFailedToResumeListResumeReq.h \ + S1AP_E-RABFailedToResumeItemResumeReq.h \ + S1AP_UEContextResumeResponse.h \ + S1AP_E-RABFailedToResumeListResumeRes.h \ + S1AP_E-RABFailedToResumeItemResumeRes.h \ + S1AP_UEContextResumeFailure.h \ + S1AP_ConnectionEstablishmentIndication.h \ + S1AP_RetrieveUEInformation.h \ + S1AP_UEInformationTransfer.h \ + S1AP_ENBCPRelocationIndication.h \ + S1AP_MMECPRelocationIndication.h \ + S1AP_Additional-GUTI.h \ + S1AP_AreaScopeOfMDT.h \ + S1AP_AllocationAndRetentionPriority.h \ + S1AP_AssistanceDataForCECapableUEs.h \ + S1AP_AssistanceDataForPaging.h \ + S1AP_AssistanceDataForRecommendedCells.h \ + S1AP_Bearers-SubjectToStatusTransferList.h \ + S1AP_Bearers-SubjectToStatusTransfer-Item.h \ + S1AP_BearerType.h \ + S1AP_BitRate.h \ + S1AP_BPLMNs.h \ + S1AP_BroadcastCancelledAreaList.h \ + S1AP_BroadcastCompletedAreaList.h \ + S1AP_CancelledCellinEAI.h \ + S1AP_CancelledCellinEAI-Item.h \ + S1AP_CancelledCellinTAI.h \ + S1AP_CancelledCellinTAI-Item.h \ + S1AP_Cause.h \ + S1AP_CauseMisc.h \ + S1AP_CauseProtocol.h \ + S1AP_CauseRadioNetwork.h \ + S1AP_CauseTransport.h \ + S1AP_CauseNas.h \ + S1AP_CellAccessMode.h \ + S1AP_CellIdentifierAndCELevelForCECapableUEs.h \ + S1AP_CELevel.h \ + S1AP_CE-mode-B-SupportIndicator.h \ + S1AP_CellIdentity.h \ + S1AP_CellID-Broadcast.h \ + S1AP_CellID-Broadcast-Item.h \ + S1AP_CellID-Cancelled.h \ + S1AP_CellID-Cancelled-Item.h \ + S1AP_CellBasedMDT.h \ + S1AP_CellIdListforMDT.h \ + S1AP_Cdma2000PDU.h \ + S1AP_Cdma2000RATType.h \ + S1AP_Cdma2000SectorID.h \ + S1AP_Cdma2000HOStatus.h \ + S1AP_Cdma2000HORequiredIndication.h \ + S1AP_Cdma2000OneXSRVCCInfo.h \ + S1AP_Cdma2000OneXMEID.h \ + S1AP_Cdma2000OneXMSI.h \ + S1AP_Cdma2000OneXPilot.h \ + S1AP_Cdma2000OneXRAND.h \ + S1AP_Cell-Size.h \ + S1AP_CellType.h \ + S1AP_CGI.h \ + S1AP_CI.h \ + S1AP_CNDomain.h \ + S1AP_ConcurrentWarningMessageIndicator.h \ + S1AP_Correlation-ID.h \ + S1AP_CSFallbackIndicator.h \ + S1AP_AdditionalCSFallbackIndicator.h \ + S1AP_CSG-Id.h \ + S1AP_CSG-IdList.h \ + S1AP_CSG-IdList-Item.h \ + S1AP_CSGMembershipStatus.h \ + S1AP_COUNTvalue.h \ + S1AP_COUNTValueExtended.h \ + S1AP_COUNTvaluePDCP-SNlength18.h \ + S1AP_Coverage-Level.h \ + S1AP_CriticalityDiagnostics.h \ + S1AP_CriticalityDiagnostics-IE-List.h \ + S1AP_CriticalityDiagnostics-IE-Item.h \ + S1AP_DataCodingScheme.h \ + S1AP_DCN-ID.h \ + S1AP_ServedDCNs.h \ + S1AP_ServedDCNsItem.h \ + S1AP_DL-CP-SecurityInformation.h \ + S1AP_DL-Forwarding.h \ + S1AP_DL-NAS-MAC.h \ + S1AP_Direct-Forwarding-Path-Availability.h \ + S1AP_Data-Forwarding-Not-Possible.h \ + S1AP_DLNASPDUDeliveryAckRequest.h \ + S1AP_EARFCN.h \ + S1AP_ECGIList.h \ + S1AP_PWSfailedECGIList.h \ + S1AP_EmergencyAreaIDList.h \ + S1AP_EmergencyAreaID.h \ + S1AP_EmergencyAreaID-Broadcast.h \ + S1AP_EmergencyAreaID-Broadcast-Item.h \ + S1AP_EmergencyAreaID-Cancelled.h \ + S1AP_EmergencyAreaID-Cancelled-Item.h \ + S1AP_CompletedCellinEAI.h \ + S1AP_CompletedCellinEAI-Item.h \ + S1AP_ECGI-List.h \ + S1AP_EmergencyAreaIDListForRestart.h \ + S1AP_ENB-ID.h \ + S1AP_GERAN-Cell-ID.h \ + S1AP_Global-ENB-ID.h \ + S1AP_GUMMEIList.h \ + S1AP_ENB-StatusTransfer-TransparentContainer.h \ + S1AP_ENB-UE-S1AP-ID.h \ + S1AP_ENBname.h \ + S1AP_ENBX2TLAs.h \ + S1AP_EncryptionAlgorithms.h \ + S1AP_EnhancedCoverageRestricted.h \ + S1AP_EPLMNs.h \ + S1AP_EventType.h \ + S1AP_E-RAB-ID.h \ + S1AP_E-RABInformationList.h \ + S1AP_E-RABInformationListItem.h \ + S1AP_E-RABList.h \ + S1AP_E-RABItem.h \ + S1AP_E-RABLevelQoSParameters.h \ + S1AP_EUTRAN-CGI.h \ + S1AP_EUTRANRoundTripDelayEstimationInfo.h \ + S1AP_ExpectedUEBehaviour.h \ + S1AP_ExpectedUEActivityBehaviour.h \ + S1AP_ExpectedActivityPeriod.h \ + S1AP_ExpectedIdlePeriod.h \ + S1AP_SourceOfUEActivityBehaviourInformation.h \ + S1AP_ExpectedHOInterval.h \ + S1AP_ExtendedRNC-ID.h \ + S1AP_ExtendedRepetitionPeriod.h \ + S1AP_Extended-UEIdentityIndexValue.h \ + S1AP_ForbiddenInterRATs.h \ + S1AP_ForbiddenTAs.h \ + S1AP_ForbiddenTAs-Item.h \ + S1AP_ForbiddenTACs.h \ + S1AP_ForbiddenLAs.h \ + S1AP_ForbiddenLAs-Item.h \ + S1AP_ForbiddenLACs.h \ + S1AP_GBR-QosInformation.h \ + S1AP_GTP-TEID.h \ + S1AP_GUMMEI.h \ + S1AP_GUMMEIType.h \ + S1AP_GWContextReleaseIndication.h \ + S1AP_HandoverRestrictionList.h \ + S1AP_HandoverType.h \ + S1AP_HFN.h \ + S1AP_HFNModified.h \ + S1AP_HFNforPDCP-SNlength18.h \ + S1AP_Masked-IMEISV.h \ + S1AP_ImmediateMDT.h \ + S1AP_IMSI.h \ + S1AP_InformationOnRecommendedCellsAndENBsForPaging.h \ + S1AP_IntegrityProtectionAlgorithms.h \ + S1AP_IntendedNumberOfPagingAttempts.h \ + S1AP_InterfacesToTrace.h \ + S1AP_KillAllWarningMessages.h \ + S1AP_LAC.h \ + S1AP_LAI.h \ + S1AP_LastVisitedCell-Item.h \ + S1AP_LastVisitedEUTRANCellInformation.h \ + S1AP_LastVisitedUTRANCellInformation.h \ + S1AP_LastVisitedGERANCellInformation.h \ + S1AP_L3-Information.h \ + S1AP_LPPa-PDU.h \ + S1AP_LHN-ID.h \ + S1AP_Links-to-log.h \ + S1AP_ListeningSubframePattern.h \ + S1AP_LoggedMDT.h \ + S1AP_LoggingInterval.h \ + S1AP_LoggingDuration.h \ + S1AP_LoggedMBSFNMDT.h \ + S1AP_M3Configuration.h \ + S1AP_M3period.h \ + S1AP_M4Configuration.h \ + S1AP_M4period.h \ + S1AP_M5Configuration.h \ + S1AP_M5period.h \ + S1AP_M6Configuration.h \ + S1AP_M6report-Interval.h \ + S1AP_M6delay-threshold.h \ + S1AP_M7Configuration.h \ + S1AP_M7period.h \ + S1AP_MDT-Activation.h \ + S1AP_MDT-Location-Info.h \ + S1AP_MDT-Configuration.h \ + S1AP_ManagementBasedMDTAllowed.h \ + S1AP_MBSFN-ResultToLog.h \ + S1AP_MBSFN-ResultToLogInfo.h \ + S1AP_MDTPLMNList.h \ + S1AP_PrivacyIndicator.h \ + S1AP_MDTMode.h \ + S1AP_MDTMode-Extension.h \ + S1AP_MeasurementsToActivate.h \ + S1AP_MeasurementThresholdA2.h \ + S1AP_MessageIdentifier.h \ + S1AP_MobilityInformation.h \ + S1AP_MMEname.h \ + S1AP_MMEPagingTarget.h \ + S1AP_MMERelaySupportIndicator.h \ + S1AP_MME-Group-ID.h \ + S1AP_MME-Code.h \ + S1AP_MME-UE-S1AP-ID.h \ + S1AP_M-TMSI.h \ + S1AP_MSClassmark2.h \ + S1AP_MSClassmark3.h \ + S1AP_MutingAvailabilityIndication.h \ + S1AP_MutingPatternInformation.h \ + S1AP_NAS-PDU.h \ + S1AP_NASSecurityParametersfromE-UTRAN.h \ + S1AP_NASSecurityParameterstoE-UTRAN.h \ + S1AP_NB-IoT-DefaultPagingDRX.h \ + S1AP_NB-IoT-Paging-eDRXInformation.h \ + S1AP_NB-IoT-Paging-eDRX-Cycle.h \ + S1AP_NB-IoT-PagingTimeWindow.h \ + S1AP_NB-IoT-UEIdentityIndexValue.h \ + S1AP_NextPagingAreaScope.h \ + S1AP_NumberofBroadcastRequest.h \ + S1AP_NumberOfBroadcasts.h \ + S1AP_OldBSS-ToNewBSS-Information.h \ + S1AP_OverloadAction.h \ + S1AP_OverloadResponse.h \ + S1AP_PagingAttemptInformation.h \ + S1AP_PagingAttemptCount.h \ + S1AP_Paging-eDRXInformation.h \ + S1AP_Paging-eDRX-Cycle.h \ + S1AP_PagingTimeWindow.h \ + S1AP_PagingDRX.h \ + S1AP_PagingPriority.h \ + S1AP_PDCP-SN.h \ + S1AP_PDCP-SNExtended.h \ + S1AP_PDCP-SNlength18.h \ + S1AP_M1PeriodicReporting.h \ + S1AP_PLMNidentity.h \ + S1AP_Port-Number.h \ + S1AP_Pre-emptionCapability.h \ + S1AP_Pre-emptionVulnerability.h \ + S1AP_PriorityLevel.h \ + S1AP_ProSeAuthorized.h \ + S1AP_ProSeDirectDiscovery.h \ + S1AP_ProSeUEtoNetworkRelaying.h \ + S1AP_ProSeDirectCommunication.h \ + S1AP_PS-ServiceNotAvailable.h \ + S1AP_QCI.h \ + S1AP_ReceiveStatusofULPDCPSDUs.h \ + S1AP_ReceiveStatusOfULPDCPSDUsExtended.h \ + S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h \ + S1AP_RecommendedCellsForPaging.h \ + S1AP_RecommendedCellList.h \ + S1AP_RecommendedCellItem.h \ + S1AP_RecommendedENBsForPaging.h \ + S1AP_RecommendedENBList.h \ + S1AP_RecommendedENBItem.h \ + S1AP_RelativeMMECapacity.h \ + S1AP_RelayNode-Indicator.h \ + S1AP_RAC.h \ + S1AP_RAT-Type.h \ + S1AP_ReportAmountMDT.h \ + S1AP_ReportIntervalMDT.h \ + S1AP_M1ReportingTrigger.h \ + S1AP_RequestType.h \ + S1AP_RIMTransfer.h \ + S1AP_RIMInformation.h \ + S1AP_RIMRoutingAddress.h \ + S1AP_ReportArea.h \ + S1AP_RepetitionPeriod.h \ + S1AP_RLFReportInformation.h \ + S1AP_RNC-ID.h \ + S1AP_RRC-Container.h \ + S1AP_RRC-Establishment-Cause.h \ + S1AP_ECGIListForRestart.h \ + S1AP_Routing-ID.h \ + S1AP_SecurityKey.h \ + S1AP_SecurityContext.h \ + S1AP_SerialNumber.h \ + S1AP_SONInformation.h \ + S1AP_SONInformation-Extension.h \ + S1AP_SONInformationRequest.h \ + S1AP_SONInformationReply.h \ + S1AP_SONInformationReport.h \ + S1AP_SONConfigurationTransfer.h \ + S1AP_SynchronisationInformation.h \ + S1AP_Source-ToTarget-TransparentContainer.h \ + S1AP_SourceBSS-ToTargetBSS-TransparentContainer.h \ + S1AP_SourceeNB-ID.h \ + S1AP_SRVCCOperationNotPossible.h \ + S1AP_SRVCCOperationPossible.h \ + S1AP_SRVCCHOIndication.h \ + S1AP_SourceeNB-ToTargeteNB-TransparentContainer.h \ + S1AP_SourceRNC-ToTargetRNC-TransparentContainer.h \ + S1AP_ServedGUMMEIs.h \ + S1AP_ServedGUMMEIsItem.h \ + S1AP_ServedGroupIDs.h \ + S1AP_ServedMMECs.h \ + S1AP_ServedPLMNs.h \ + S1AP_SubscriberProfileIDforRFP.h \ + S1AP_SupportedTAs.h \ + S1AP_SupportedTAs-Item.h \ + S1AP_StratumLevel.h \ + S1AP_SynchronisationStatus.h \ + S1AP_TimeSynchronisationInfo.h \ + S1AP_S-TMSI.h \ + S1AP_TAC.h \ + S1AP_TAIBasedMDT.h \ + S1AP_TAIListforMDT.h \ + S1AP_TAIListforWarning.h \ + S1AP_TAI.h \ + S1AP_TAI-Broadcast.h \ + S1AP_TAI-Broadcast-Item.h \ + S1AP_TAI-Cancelled.h \ + S1AP_TAI-Cancelled-Item.h \ + S1AP_TABasedMDT.h \ + S1AP_TAListforMDT.h \ + S1AP_CompletedCellinTAI.h \ + S1AP_CompletedCellinTAI-Item.h \ + S1AP_TBCD-STRING.h \ + S1AP_TargetID.h \ + S1AP_TargeteNB-ID.h \ + S1AP_TargetRNC-ID.h \ + S1AP_TargeteNB-ToSourceeNB-TransparentContainer.h \ + S1AP_Target-ToSource-TransparentContainer.h \ + S1AP_TargetRNC-ToSourceRNC-TransparentContainer.h \ + S1AP_TargetBSS-ToSourceBSS-TransparentContainer.h \ + S1AP_M1ThresholdEventA2.h \ + S1AP_Threshold-RSRP.h \ + S1AP_Threshold-RSRQ.h \ + S1AP_TimeToWait.h \ + S1AP_Time-UE-StayedInCell.h \ + S1AP_Time-UE-StayedInCell-EnhancedGranularity.h \ + S1AP_TransportInformation.h \ + S1AP_TransportLayerAddress.h \ + S1AP_TraceActivation.h \ + S1AP_TraceDepth.h \ + S1AP_E-UTRAN-Trace-ID.h \ + S1AP_TrafficLoadReductionIndication.h \ + S1AP_TunnelInformation.h \ + S1AP_TypeOfError.h \ + S1AP_TAIListForRestart.h \ + S1AP_UEAggregateMaximumBitrate.h \ + S1AP_UE-RetentionInformation.h \ + S1AP_UE-S1AP-IDs.h \ + S1AP_UE-S1AP-ID-pair.h \ + S1AP_UE-associatedLogicalS1-ConnectionItem.h \ + S1AP_UEIdentityIndexValue.h \ + S1AP_UE-HistoryInformation.h \ + S1AP_UE-HistoryInformationFromTheUE.h \ + S1AP_UEPagingID.h \ + S1AP_UERadioCapability.h \ + S1AP_UERadioCapabilityForPaging.h \ + S1AP_UE-RLF-Report-Container.h \ + S1AP_UE-RLF-Report-Container-for-extended-bands.h \ + S1AP_UESecurityCapabilities.h \ + S1AP_UESidelinkAggregateMaximumBitrate.h \ + S1AP_UE-Usage-Type.h \ + S1AP_UL-CP-SecurityInformation.h \ + S1AP_UL-NAS-MAC.h \ + S1AP_UL-NAS-Count.h \ + S1AP_UserLocationInformation.h \ + S1AP_UEUserPlaneCIoTSupportIndicator.h \ + S1AP_VoiceSupportMatchIndicator.h \ + S1AP_V2XServicesAuthorized.h \ + S1AP_VehicleUE.h \ + S1AP_PedestrianUE.h \ + S1AP_WarningAreaList.h \ + S1AP_WarningType.h \ + S1AP_WarningSecurityInfo.h \ + S1AP_WarningMessageContents.h \ + S1AP_X2TNLConfigurationInfo.h \ + S1AP_ENBX2ExtTLAs.h \ + S1AP_ENBX2ExtTLA.h \ + S1AP_ENBX2GTPTLAs.h \ + S1AP_ENBIndirectX2TransportLayerAddresses.h \ + S1AP_Criticality.h \ + S1AP_Presence.h \ + S1AP_PrivateIE-ID.h \ + S1AP_ProcedureCode.h \ + S1AP_ProtocolExtensionID.h \ + S1AP_ProtocolIE-ID.h \ + S1AP_TriggeringMessage.h \ + S1AP_ProtocolIE-Container.h \ + S1AP_ProtocolIE-SingleContainer.h \ + S1AP_ProtocolIE-Field.h \ + S1AP_ProtocolIE-ContainerPair.h \ + S1AP_ProtocolIE-FieldPair.h \ + S1AP_ProtocolIE-ContainerList.h \ + S1AP_ProtocolIE-ContainerPairList.h \ + S1AP_ProtocolExtensionContainer.h \ + S1AP_ProtocolExtensionField.h \ + S1AP_PrivateIE-Container.h \ + S1AP_PrivateIE-Field.h + +ASN_MODULE_HDRS+=ANY.h +ASN_MODULE_SRCS+=ANY.c +ASN_MODULE_HDRS+=OCTET_STRING.h +ASN_MODULE_HDRS+=OPEN_TYPE.h +ASN_MODULE_SRCS+=OPEN_TYPE.c +ASN_MODULE_HDRS+=constr_CHOICE.h +ASN_MODULE_HDRS+=BOOLEAN.h +ASN_MODULE_SRCS+=BOOLEAN.c +ASN_MODULE_HDRS+=INTEGER.h +ASN_MODULE_SRCS+=INTEGER.c +ASN_MODULE_HDRS+=NULL.h +ASN_MODULE_SRCS+=NULL.c +ASN_MODULE_HDRS+=NativeEnumerated.h +ASN_MODULE_SRCS+=NativeEnumerated.c +ASN_MODULE_HDRS+=NativeInteger.h +ASN_MODULE_SRCS+=NativeInteger.c +ASN_MODULE_HDRS+=OBJECT_IDENTIFIER.h +ASN_MODULE_SRCS+=OBJECT_IDENTIFIER.c +ASN_MODULE_HDRS+=PrintableString.h +ASN_MODULE_SRCS+=PrintableString.c +ASN_MODULE_HDRS+=asn_SEQUENCE_OF.h +ASN_MODULE_SRCS+=asn_SEQUENCE_OF.c +ASN_MODULE_HDRS+=asn_SET_OF.h +ASN_MODULE_SRCS+=asn_SET_OF.c +ASN_MODULE_SRCS+=constr_CHOICE.c +ASN_MODULE_HDRS+=constr_SEQUENCE.h +ASN_MODULE_SRCS+=constr_SEQUENCE.c +ASN_MODULE_HDRS+=constr_SEQUENCE_OF.h +ASN_MODULE_SRCS+=constr_SEQUENCE_OF.c +ASN_MODULE_HDRS+=constr_SET_OF.h +ASN_MODULE_SRCS+=constr_SET_OF.c +ASN_MODULE_HDRS+=asn_application.h +ASN_MODULE_SRCS+=asn_application.c +ASN_MODULE_HDRS+=asn_ioc.h +ASN_MODULE_HDRS+=asn_system.h +ASN_MODULE_HDRS+=asn_codecs.h +ASN_MODULE_HDRS+=asn_internal.h +ASN_MODULE_SRCS+=asn_internal.c +ASN_MODULE_HDRS+=asn_random_fill.h +ASN_MODULE_SRCS+=asn_random_fill.c +ASN_MODULE_HDRS+=asn_bit_data.h +ASN_MODULE_SRCS+=asn_bit_data.c +ASN_MODULE_SRCS+=OCTET_STRING.c +ASN_MODULE_HDRS+=BIT_STRING.h +ASN_MODULE_SRCS+=BIT_STRING.c +ASN_MODULE_SRCS+=asn_codecs_prim.c +ASN_MODULE_HDRS+=asn_codecs_prim.h +ASN_MODULE_HDRS+=ber_tlv_length.h +ASN_MODULE_SRCS+=ber_tlv_length.c +ASN_MODULE_HDRS+=ber_tlv_tag.h +ASN_MODULE_SRCS+=ber_tlv_tag.c +ASN_MODULE_HDRS+=ber_decoder.h +ASN_MODULE_SRCS+=ber_decoder.c +ASN_MODULE_HDRS+=der_encoder.h +ASN_MODULE_SRCS+=der_encoder.c +ASN_MODULE_HDRS+=constr_TYPE.h +ASN_MODULE_SRCS+=constr_TYPE.c +ASN_MODULE_HDRS+=constraints.h +ASN_MODULE_SRCS+=constraints.c +ASN_MODULE_HDRS+=xer_support.h +ASN_MODULE_SRCS+=xer_support.c +ASN_MODULE_HDRS+=xer_decoder.h +ASN_MODULE_SRCS+=xer_decoder.c +ASN_MODULE_HDRS+=xer_encoder.h +ASN_MODULE_SRCS+=xer_encoder.c +ASN_MODULE_HDRS+=per_support.h +ASN_MODULE_SRCS+=per_support.c +ASN_MODULE_HDRS+=per_decoder.h +ASN_MODULE_SRCS+=per_decoder.c +ASN_MODULE_HDRS+=per_encoder.h +ASN_MODULE_SRCS+=per_encoder.c +ASN_MODULE_HDRS+=per_opentype.h +ASN_MODULE_SRCS+=per_opentype.c +ASN_MODULE_HDRS+=oer_decoder.h +ASN_MODULE_HDRS+=oer_encoder.h +ASN_MODULE_HDRS+=oer_support.h +ASN_MODULE_SRCS+=oer_decoder.c +ASN_MODULE_SRCS+=oer_encoder.c +ASN_MODULE_SRCS+=oer_support.c +ASN_MODULE_SRCS+=OPEN_TYPE_oer.c +ASN_MODULE_SRCS+=INTEGER_oer.c +ASN_MODULE_SRCS+=BIT_STRING_oer.c +ASN_MODULE_SRCS+=OCTET_STRING_oer.c +ASN_MODULE_SRCS+=NativeInteger_oer.c +ASN_MODULE_SRCS+=NativeEnumerated_oer.c +ASN_MODULE_SRCS+=constr_CHOICE_oer.c +ASN_MODULE_SRCS+=constr_SEQUENCE_oer.c +ASN_MODULE_SRCS+=constr_SET_OF_oer.c + +ASN_MODULE_CFLAGS= + +pkglib_LTLIBRARIES=libs1apasn1c.la +libs1apasn1c_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) + +libs1apasn1c_la_DEPENDENCIES = \ + $(top_srcdir)/lib/core/src/libcore.la \ + $(NULL) + +libs1apasn1c_la_LIBADD = \ + $(top_srcdir)/lib/core/src/libcore.la \ + $(NULL) + +AM_LDFLAGS = \ + -version-info @LIBVERSION@ \ + $(NULL) + +AM_CPPFLAGS = \ + -I$(top_srcdir)/lib/core/include \ + $(NULL) + +AM_CFLAGS = \ + ${ASN_MODULE_CFLAGS} \ + -Wall -Werror -Wno-parentheses-equality \ + $(NULL) + +MAINTAINERCLEANFILES = Makefile.in +MOSTLYCLEANFILES = core *.stackdump + +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + ASN1C_PREFIX=S1AP_ ../../../../asn1c.brchiu/asn1c/asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps ../support/r14.4.0/36413-e40.asn + rm -f S1AP_E-RAB-IE-ContainerPairList.c S1AP_ProtocolError-IE-ContainerList.c S1AP_ProtocolIE-ContainerPair.c S1AP_ProtocolIE-FieldPair.c S1AP_ProtocolIE-ContainerPairList.c + rm -f converter-example.mk converter-example.c pdu_collection.c + rm -f Makefile.am.asn1convert Makefile.am.libasncodec + diff --git a/lib/s1ap3/asn1c/Makefile.am.libasncodec b/lib/s1ap3/asn1c/Makefile.am.libasncodec new file mode 100644 index 0000000000..834babc26f --- /dev/null +++ b/lib/s1ap3/asn1c/Makefile.am.libasncodec @@ -0,0 +1,1134 @@ +ASN_MODULE_SRCS= \ + S1AP_S1AP-PDU.c \ + S1AP_InitiatingMessage.c \ + S1AP_SuccessfulOutcome.c \ + S1AP_UnsuccessfulOutcome.c \ + S1AP_E-RAB-IE-ContainerList.c \ + S1AP_E-RAB-IE-ContainerPairList.c \ + S1AP_ProtocolError-IE-ContainerList.c \ + S1AP_HandoverRequired.c \ + S1AP_HandoverCommand.c \ + S1AP_E-RABSubjecttoDataForwardingList.c \ + S1AP_E-RABDataForwardingItem.c \ + S1AP_HandoverPreparationFailure.c \ + S1AP_HandoverRequest.c \ + S1AP_E-RABToBeSetupListHOReq.c \ + S1AP_E-RABToBeSetupItemHOReq.c \ + S1AP_HandoverRequestAcknowledge.c \ + S1AP_E-RABAdmittedList.c \ + S1AP_E-RABAdmittedItem.c \ + S1AP_E-RABFailedtoSetupListHOReqAck.c \ + S1AP_E-RABFailedToSetupItemHOReqAck.c \ + S1AP_HandoverFailure.c \ + S1AP_HandoverNotify.c \ + S1AP_PathSwitchRequest.c \ + S1AP_E-RABToBeSwitchedDLList.c \ + S1AP_E-RABToBeSwitchedDLItem.c \ + S1AP_PathSwitchRequestAcknowledge.c \ + S1AP_E-RABToBeSwitchedULList.c \ + S1AP_E-RABToBeSwitchedULItem.c \ + S1AP_PathSwitchRequestFailure.c \ + S1AP_HandoverCancel.c \ + S1AP_HandoverCancelAcknowledge.c \ + S1AP_E-RABSetupRequest.c \ + S1AP_E-RABToBeSetupListBearerSUReq.c \ + S1AP_E-RABToBeSetupItemBearerSUReq.c \ + S1AP_E-RABSetupResponse.c \ + S1AP_E-RABSetupListBearerSURes.c \ + S1AP_E-RABSetupItemBearerSURes.c \ + S1AP_E-RABModifyRequest.c \ + S1AP_E-RABToBeModifiedListBearerModReq.c \ + S1AP_E-RABToBeModifiedItemBearerModReq.c \ + S1AP_E-RABModifyResponse.c \ + S1AP_E-RABModifyListBearerModRes.c \ + S1AP_E-RABModifyItemBearerModRes.c \ + S1AP_E-RABReleaseCommand.c \ + S1AP_E-RABReleaseResponse.c \ + S1AP_E-RABReleaseListBearerRelComp.c \ + S1AP_E-RABReleaseItemBearerRelComp.c \ + S1AP_E-RABReleaseIndication.c \ + S1AP_InitialContextSetupRequest.c \ + S1AP_E-RABToBeSetupListCtxtSUReq.c \ + S1AP_E-RABToBeSetupItemCtxtSUReq.c \ + S1AP_InitialContextSetupResponse.c \ + S1AP_E-RABSetupListCtxtSURes.c \ + S1AP_E-RABSetupItemCtxtSURes.c \ + S1AP_InitialContextSetupFailure.c \ + S1AP_Paging.c \ + S1AP_TAIList.c \ + S1AP_TAIItem.c \ + S1AP_UEContextReleaseRequest.c \ + S1AP_UEContextReleaseCommand.c \ + S1AP_UEContextReleaseComplete.c \ + S1AP_UEContextModificationRequest.c \ + S1AP_UEContextModificationResponse.c \ + S1AP_UEContextModificationFailure.c \ + S1AP_UERadioCapabilityMatchRequest.c \ + S1AP_UERadioCapabilityMatchResponse.c \ + S1AP_DownlinkNASTransport.c \ + S1AP_InitialUEMessage.c \ + S1AP_UplinkNASTransport.c \ + S1AP_NASNonDeliveryIndication.c \ + S1AP_RerouteNASRequest.c \ + S1AP_NASDeliveryIndication.c \ + S1AP_Reset.c \ + S1AP_ResetType.c \ + S1AP_ResetAll.c \ + S1AP_UE-associatedLogicalS1-ConnectionListRes.c \ + S1AP_ResetAcknowledge.c \ + S1AP_UE-associatedLogicalS1-ConnectionListResAck.c \ + S1AP_ErrorIndication.c \ + S1AP_S1SetupRequest.c \ + S1AP_S1SetupResponse.c \ + S1AP_S1SetupFailure.c \ + S1AP_ENBConfigurationUpdate.c \ + S1AP_ENBConfigurationUpdateAcknowledge.c \ + S1AP_ENBConfigurationUpdateFailure.c \ + S1AP_MMEConfigurationUpdate.c \ + S1AP_MMEConfigurationUpdateAcknowledge.c \ + S1AP_MMEConfigurationUpdateFailure.c \ + S1AP_DownlinkS1cdma2000tunnelling.c \ + S1AP_UplinkS1cdma2000tunnelling.c \ + S1AP_UECapabilityInfoIndication.c \ + S1AP_ENBStatusTransfer.c \ + S1AP_MMEStatusTransfer.c \ + S1AP_TraceStart.c \ + S1AP_TraceFailureIndication.c \ + S1AP_DeactivateTrace.c \ + S1AP_CellTrafficTrace.c \ + S1AP_LocationReportingControl.c \ + S1AP_LocationReportingFailureIndication.c \ + S1AP_LocationReport.c \ + S1AP_OverloadStart.c \ + S1AP_OverloadStop.c \ + S1AP_WriteReplaceWarningRequest.c \ + S1AP_WriteReplaceWarningResponse.c \ + S1AP_ENBDirectInformationTransfer.c \ + S1AP_Inter-SystemInformationTransferType.c \ + S1AP_MMEDirectInformationTransfer.c \ + S1AP_ENBConfigurationTransfer.c \ + S1AP_MMEConfigurationTransfer.c \ + S1AP_PrivateMessage.c \ + S1AP_KillRequest.c \ + S1AP_KillResponse.c \ + S1AP_PWSRestartIndication.c \ + S1AP_PWSFailureIndication.c \ + S1AP_DownlinkUEAssociatedLPPaTransport.c \ + S1AP_UplinkUEAssociatedLPPaTransport.c \ + S1AP_DownlinkNonUEAssociatedLPPaTransport.c \ + S1AP_UplinkNonUEAssociatedLPPaTransport.c \ + S1AP_E-RABModificationIndication.c \ + S1AP_E-RABToBeModifiedListBearerModInd.c \ + S1AP_E-RABToBeModifiedItemBearerModInd.c \ + S1AP_E-RABNotToBeModifiedListBearerModInd.c \ + S1AP_E-RABNotToBeModifiedItemBearerModInd.c \ + S1AP_CSGMembershipInfo.c \ + S1AP_E-RABModificationConfirm.c \ + S1AP_E-RABModifyListBearerModConf.c \ + S1AP_E-RABModifyItemBearerModConf.c \ + S1AP_UEContextModificationIndication.c \ + S1AP_UEContextModificationConfirm.c \ + S1AP_UEContextSuspendRequest.c \ + S1AP_UEContextSuspendResponse.c \ + S1AP_UEContextResumeRequest.c \ + S1AP_E-RABFailedToResumeListResumeReq.c \ + S1AP_E-RABFailedToResumeItemResumeReq.c \ + S1AP_UEContextResumeResponse.c \ + S1AP_E-RABFailedToResumeListResumeRes.c \ + S1AP_E-RABFailedToResumeItemResumeRes.c \ + S1AP_UEContextResumeFailure.c \ + S1AP_ConnectionEstablishmentIndication.c \ + S1AP_RetrieveUEInformation.c \ + S1AP_UEInformationTransfer.c \ + S1AP_ENBCPRelocationIndication.c \ + S1AP_MMECPRelocationIndication.c \ + S1AP_Additional-GUTI.c \ + S1AP_AreaScopeOfMDT.c \ + S1AP_AllocationAndRetentionPriority.c \ + S1AP_AssistanceDataForCECapableUEs.c \ + S1AP_AssistanceDataForPaging.c \ + S1AP_AssistanceDataForRecommendedCells.c \ + S1AP_Bearers-SubjectToStatusTransferList.c \ + S1AP_Bearers-SubjectToStatusTransfer-Item.c \ + S1AP_BearerType.c \ + S1AP_BitRate.c \ + S1AP_BPLMNs.c \ + S1AP_BroadcastCancelledAreaList.c \ + S1AP_BroadcastCompletedAreaList.c \ + S1AP_CancelledCellinEAI.c \ + S1AP_CancelledCellinEAI-Item.c \ + S1AP_CancelledCellinTAI.c \ + S1AP_CancelledCellinTAI-Item.c \ + S1AP_Cause.c \ + S1AP_CauseMisc.c \ + S1AP_CauseProtocol.c \ + S1AP_CauseRadioNetwork.c \ + S1AP_CauseTransport.c \ + S1AP_CauseNas.c \ + S1AP_CellAccessMode.c \ + S1AP_CellIdentifierAndCELevelForCECapableUEs.c \ + S1AP_CELevel.c \ + S1AP_CE-mode-B-SupportIndicator.c \ + S1AP_CellIdentity.c \ + S1AP_CellID-Broadcast.c \ + S1AP_CellID-Broadcast-Item.c \ + S1AP_CellID-Cancelled.c \ + S1AP_CellID-Cancelled-Item.c \ + S1AP_CellBasedMDT.c \ + S1AP_CellIdListforMDT.c \ + S1AP_Cdma2000PDU.c \ + S1AP_Cdma2000RATType.c \ + S1AP_Cdma2000SectorID.c \ + S1AP_Cdma2000HOStatus.c \ + S1AP_Cdma2000HORequiredIndication.c \ + S1AP_Cdma2000OneXSRVCCInfo.c \ + S1AP_Cdma2000OneXMEID.c \ + S1AP_Cdma2000OneXMSI.c \ + S1AP_Cdma2000OneXPilot.c \ + S1AP_Cdma2000OneXRAND.c \ + S1AP_Cell-Size.c \ + S1AP_CellType.c \ + S1AP_CGI.c \ + S1AP_CI.c \ + S1AP_CNDomain.c \ + S1AP_ConcurrentWarningMessageIndicator.c \ + S1AP_Correlation-ID.c \ + S1AP_CSFallbackIndicator.c \ + S1AP_AdditionalCSFallbackIndicator.c \ + S1AP_CSG-Id.c \ + S1AP_CSG-IdList.c \ + S1AP_CSG-IdList-Item.c \ + S1AP_CSGMembershipStatus.c \ + S1AP_COUNTvalue.c \ + S1AP_COUNTValueExtended.c \ + S1AP_COUNTvaluePDCP-SNlength18.c \ + S1AP_Coverage-Level.c \ + S1AP_CriticalityDiagnostics.c \ + S1AP_CriticalityDiagnostics-IE-List.c \ + S1AP_CriticalityDiagnostics-IE-Item.c \ + S1AP_DataCodingScheme.c \ + S1AP_DCN-ID.c \ + S1AP_ServedDCNs.c \ + S1AP_ServedDCNsItem.c \ + S1AP_DL-CP-SecurityInformation.c \ + S1AP_DL-Forwarding.c \ + S1AP_DL-NAS-MAC.c \ + S1AP_Direct-Forwarding-Path-Availability.c \ + S1AP_Data-Forwarding-Not-Possible.c \ + S1AP_DLNASPDUDeliveryAckRequest.c \ + S1AP_EARFCN.c \ + S1AP_ECGIList.c \ + S1AP_PWSfailedECGIList.c \ + S1AP_EmergencyAreaIDList.c \ + S1AP_EmergencyAreaID.c \ + S1AP_EmergencyAreaID-Broadcast.c \ + S1AP_EmergencyAreaID-Broadcast-Item.c \ + S1AP_EmergencyAreaID-Cancelled.c \ + S1AP_EmergencyAreaID-Cancelled-Item.c \ + S1AP_CompletedCellinEAI.c \ + S1AP_CompletedCellinEAI-Item.c \ + S1AP_ECGI-List.c \ + S1AP_EmergencyAreaIDListForRestart.c \ + S1AP_ENB-ID.c \ + S1AP_GERAN-Cell-ID.c \ + S1AP_Global-ENB-ID.c \ + S1AP_GUMMEIList.c \ + S1AP_ENB-StatusTransfer-TransparentContainer.c \ + S1AP_ENB-UE-S1AP-ID.c \ + S1AP_ENBname.c \ + S1AP_ENBX2TLAs.c \ + S1AP_EncryptionAlgorithms.c \ + S1AP_EnhancedCoverageRestricted.c \ + S1AP_EPLMNs.c \ + S1AP_EventType.c \ + S1AP_E-RAB-ID.c \ + S1AP_E-RABInformationList.c \ + S1AP_E-RABInformationListItem.c \ + S1AP_E-RABList.c \ + S1AP_E-RABItem.c \ + S1AP_E-RABLevelQoSParameters.c \ + S1AP_EUTRAN-CGI.c \ + S1AP_EUTRANRoundTripDelayEstimationInfo.c \ + S1AP_ExpectedUEBehaviour.c \ + S1AP_ExpectedUEActivityBehaviour.c \ + S1AP_ExpectedActivityPeriod.c \ + S1AP_ExpectedIdlePeriod.c \ + S1AP_SourceOfUEActivityBehaviourInformation.c \ + S1AP_ExpectedHOInterval.c \ + S1AP_ExtendedRNC-ID.c \ + S1AP_ExtendedRepetitionPeriod.c \ + S1AP_Extended-UEIdentityIndexValue.c \ + S1AP_ForbiddenInterRATs.c \ + S1AP_ForbiddenTAs.c \ + S1AP_ForbiddenTAs-Item.c \ + S1AP_ForbiddenTACs.c \ + S1AP_ForbiddenLAs.c \ + S1AP_ForbiddenLAs-Item.c \ + S1AP_ForbiddenLACs.c \ + S1AP_GBR-QosInformation.c \ + S1AP_GTP-TEID.c \ + S1AP_GUMMEI.c \ + S1AP_GUMMEIType.c \ + S1AP_GWContextReleaseIndication.c \ + S1AP_HandoverRestrictionList.c \ + S1AP_HandoverType.c \ + S1AP_HFN.c \ + S1AP_HFNModified.c \ + S1AP_HFNforPDCP-SNlength18.c \ + S1AP_Masked-IMEISV.c \ + S1AP_ImmediateMDT.c \ + S1AP_IMSI.c \ + S1AP_InformationOnRecommendedCellsAndENBsForPaging.c \ + S1AP_IntegrityProtectionAlgorithms.c \ + S1AP_IntendedNumberOfPagingAttempts.c \ + S1AP_InterfacesToTrace.c \ + S1AP_KillAllWarningMessages.c \ + S1AP_LAC.c \ + S1AP_LAI.c \ + S1AP_LastVisitedCell-Item.c \ + S1AP_LastVisitedEUTRANCellInformation.c \ + S1AP_LastVisitedUTRANCellInformation.c \ + S1AP_LastVisitedGERANCellInformation.c \ + S1AP_L3-Information.c \ + S1AP_LPPa-PDU.c \ + S1AP_LHN-ID.c \ + S1AP_Links-to-log.c \ + S1AP_ListeningSubframePattern.c \ + S1AP_LoggedMDT.c \ + S1AP_LoggingInterval.c \ + S1AP_LoggingDuration.c \ + S1AP_LoggedMBSFNMDT.c \ + S1AP_M3Configuration.c \ + S1AP_M3period.c \ + S1AP_M4Configuration.c \ + S1AP_M4period.c \ + S1AP_M5Configuration.c \ + S1AP_M5period.c \ + S1AP_M6Configuration.c \ + S1AP_M6report-Interval.c \ + S1AP_M6delay-threshold.c \ + S1AP_M7Configuration.c \ + S1AP_M7period.c \ + S1AP_MDT-Activation.c \ + S1AP_MDT-Location-Info.c \ + S1AP_MDT-Configuration.c \ + S1AP_ManagementBasedMDTAllowed.c \ + S1AP_MBSFN-ResultToLog.c \ + S1AP_MBSFN-ResultToLogInfo.c \ + S1AP_MDTPLMNList.c \ + S1AP_PrivacyIndicator.c \ + S1AP_MDTMode.c \ + S1AP_MDTMode-Extension.c \ + S1AP_MeasurementsToActivate.c \ + S1AP_MeasurementThresholdA2.c \ + S1AP_MessageIdentifier.c \ + S1AP_MobilityInformation.c \ + S1AP_MMEname.c \ + S1AP_MMEPagingTarget.c \ + S1AP_MMERelaySupportIndicator.c \ + S1AP_MME-Group-ID.c \ + S1AP_MME-Code.c \ + S1AP_MME-UE-S1AP-ID.c \ + S1AP_M-TMSI.c \ + S1AP_MSClassmark2.c \ + S1AP_MSClassmark3.c \ + S1AP_MutingAvailabilityIndication.c \ + S1AP_MutingPatternInformation.c \ + S1AP_NAS-PDU.c \ + S1AP_NASSecurityParametersfromE-UTRAN.c \ + S1AP_NASSecurityParameterstoE-UTRAN.c \ + S1AP_NB-IoT-DefaultPagingDRX.c \ + S1AP_NB-IoT-Paging-eDRXInformation.c \ + S1AP_NB-IoT-Paging-eDRX-Cycle.c \ + S1AP_NB-IoT-PagingTimeWindow.c \ + S1AP_NB-IoT-UEIdentityIndexValue.c \ + S1AP_NextPagingAreaScope.c \ + S1AP_NumberofBroadcastRequest.c \ + S1AP_NumberOfBroadcasts.c \ + S1AP_OldBSS-ToNewBSS-Information.c \ + S1AP_OverloadAction.c \ + S1AP_OverloadResponse.c \ + S1AP_PagingAttemptInformation.c \ + S1AP_PagingAttemptCount.c \ + S1AP_Paging-eDRXInformation.c \ + S1AP_Paging-eDRX-Cycle.c \ + S1AP_PagingTimeWindow.c \ + S1AP_PagingDRX.c \ + S1AP_PagingPriority.c \ + S1AP_PDCP-SN.c \ + S1AP_PDCP-SNExtended.c \ + S1AP_PDCP-SNlength18.c \ + S1AP_M1PeriodicReporting.c \ + S1AP_PLMNidentity.c \ + S1AP_Port-Number.c \ + S1AP_Pre-emptionCapability.c \ + S1AP_Pre-emptionVulnerability.c \ + S1AP_PriorityLevel.c \ + S1AP_ProSeAuthorized.c \ + S1AP_ProSeDirectDiscovery.c \ + S1AP_ProSeUEtoNetworkRelaying.c \ + S1AP_ProSeDirectCommunication.c \ + S1AP_PS-ServiceNotAvailable.c \ + S1AP_QCI.c \ + S1AP_ReceiveStatusofULPDCPSDUs.c \ + S1AP_ReceiveStatusOfULPDCPSDUsExtended.c \ + S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c \ + S1AP_RecommendedCellsForPaging.c \ + S1AP_RecommendedCellList.c \ + S1AP_RecommendedCellItem.c \ + S1AP_RecommendedENBsForPaging.c \ + S1AP_RecommendedENBList.c \ + S1AP_RecommendedENBItem.c \ + S1AP_RelativeMMECapacity.c \ + S1AP_RelayNode-Indicator.c \ + S1AP_RAC.c \ + S1AP_RAT-Type.c \ + S1AP_ReportAmountMDT.c \ + S1AP_ReportIntervalMDT.c \ + S1AP_M1ReportingTrigger.c \ + S1AP_RequestType.c \ + S1AP_RIMTransfer.c \ + S1AP_RIMInformation.c \ + S1AP_RIMRoutingAddress.c \ + S1AP_ReportArea.c \ + S1AP_RepetitionPeriod.c \ + S1AP_RLFReportInformation.c \ + S1AP_RNC-ID.c \ + S1AP_RRC-Container.c \ + S1AP_RRC-Establishment-Cause.c \ + S1AP_ECGIListForRestart.c \ + S1AP_Routing-ID.c \ + S1AP_SecurityKey.c \ + S1AP_SecurityContext.c \ + S1AP_SerialNumber.c \ + S1AP_SONInformation.c \ + S1AP_SONInformation-Extension.c \ + S1AP_SONInformationRequest.c \ + S1AP_SONInformationReply.c \ + S1AP_SONInformationReport.c \ + S1AP_SONConfigurationTransfer.c \ + S1AP_SynchronisationInformation.c \ + S1AP_Source-ToTarget-TransparentContainer.c \ + S1AP_SourceBSS-ToTargetBSS-TransparentContainer.c \ + S1AP_SourceeNB-ID.c \ + S1AP_SRVCCOperationNotPossible.c \ + S1AP_SRVCCOperationPossible.c \ + S1AP_SRVCCHOIndication.c \ + S1AP_SourceeNB-ToTargeteNB-TransparentContainer.c \ + S1AP_SourceRNC-ToTargetRNC-TransparentContainer.c \ + S1AP_ServedGUMMEIs.c \ + S1AP_ServedGUMMEIsItem.c \ + S1AP_ServedGroupIDs.c \ + S1AP_ServedMMECs.c \ + S1AP_ServedPLMNs.c \ + S1AP_SubscriberProfileIDforRFP.c \ + S1AP_SupportedTAs.c \ + S1AP_SupportedTAs-Item.c \ + S1AP_StratumLevel.c \ + S1AP_SynchronisationStatus.c \ + S1AP_TimeSynchronisationInfo.c \ + S1AP_S-TMSI.c \ + S1AP_TAC.c \ + S1AP_TAIBasedMDT.c \ + S1AP_TAIListforMDT.c \ + S1AP_TAIListforWarning.c \ + S1AP_TAI.c \ + S1AP_TAI-Broadcast.c \ + S1AP_TAI-Broadcast-Item.c \ + S1AP_TAI-Cancelled.c \ + S1AP_TAI-Cancelled-Item.c \ + S1AP_TABasedMDT.c \ + S1AP_TAListforMDT.c \ + S1AP_CompletedCellinTAI.c \ + S1AP_CompletedCellinTAI-Item.c \ + S1AP_TBCD-STRING.c \ + S1AP_TargetID.c \ + S1AP_TargeteNB-ID.c \ + S1AP_TargetRNC-ID.c \ + S1AP_TargeteNB-ToSourceeNB-TransparentContainer.c \ + S1AP_Target-ToSource-TransparentContainer.c \ + S1AP_TargetRNC-ToSourceRNC-TransparentContainer.c \ + S1AP_TargetBSS-ToSourceBSS-TransparentContainer.c \ + S1AP_M1ThresholdEventA2.c \ + S1AP_Threshold-RSRP.c \ + S1AP_Threshold-RSRQ.c \ + S1AP_TimeToWait.c \ + S1AP_Time-UE-StayedInCell.c \ + S1AP_Time-UE-StayedInCell-EnhancedGranularity.c \ + S1AP_TransportInformation.c \ + S1AP_TransportLayerAddress.c \ + S1AP_TraceActivation.c \ + S1AP_TraceDepth.c \ + S1AP_E-UTRAN-Trace-ID.c \ + S1AP_TrafficLoadReductionIndication.c \ + S1AP_TunnelInformation.c \ + S1AP_TypeOfError.c \ + S1AP_TAIListForRestart.c \ + S1AP_UEAggregateMaximumBitrate.c \ + S1AP_UE-RetentionInformation.c \ + S1AP_UE-S1AP-IDs.c \ + S1AP_UE-S1AP-ID-pair.c \ + S1AP_UE-associatedLogicalS1-ConnectionItem.c \ + S1AP_UEIdentityIndexValue.c \ + S1AP_UE-HistoryInformation.c \ + S1AP_UE-HistoryInformationFromTheUE.c \ + S1AP_UEPagingID.c \ + S1AP_UERadioCapability.c \ + S1AP_UERadioCapabilityForPaging.c \ + S1AP_UE-RLF-Report-Container.c \ + S1AP_UE-RLF-Report-Container-for-extended-bands.c \ + S1AP_UESecurityCapabilities.c \ + S1AP_UESidelinkAggregateMaximumBitrate.c \ + S1AP_UE-Usage-Type.c \ + S1AP_UL-CP-SecurityInformation.c \ + S1AP_UL-NAS-MAC.c \ + S1AP_UL-NAS-Count.c \ + S1AP_UserLocationInformation.c \ + S1AP_UEUserPlaneCIoTSupportIndicator.c \ + S1AP_VoiceSupportMatchIndicator.c \ + S1AP_V2XServicesAuthorized.c \ + S1AP_VehicleUE.c \ + S1AP_PedestrianUE.c \ + S1AP_WarningAreaList.c \ + S1AP_WarningType.c \ + S1AP_WarningSecurityInfo.c \ + S1AP_WarningMessageContents.c \ + S1AP_X2TNLConfigurationInfo.c \ + S1AP_ENBX2ExtTLAs.c \ + S1AP_ENBX2ExtTLA.c \ + S1AP_ENBX2GTPTLAs.c \ + S1AP_ENBIndirectX2TransportLayerAddresses.c \ + S1AP_Criticality.c \ + S1AP_Presence.c \ + S1AP_PrivateIE-ID.c \ + S1AP_ProcedureCode.c \ + S1AP_ProtocolExtensionID.c \ + S1AP_ProtocolIE-ID.c \ + S1AP_TriggeringMessage.c \ + S1AP_ProtocolIE-Container.c \ + S1AP_ProtocolIE-SingleContainer.c \ + S1AP_ProtocolIE-Field.c \ + S1AP_ProtocolIE-ContainerPair.c \ + S1AP_ProtocolIE-FieldPair.c \ + S1AP_ProtocolIE-ContainerList.c \ + S1AP_ProtocolIE-ContainerPairList.c \ + S1AP_ProtocolExtensionContainer.c \ + S1AP_ProtocolExtensionField.c \ + S1AP_PrivateIE-Container.c \ + S1AP_PrivateIE-Field.c + +ASN_MODULE_HDRS= \ + S1AP_S1AP-PDU.h \ + S1AP_InitiatingMessage.h \ + S1AP_SuccessfulOutcome.h \ + S1AP_UnsuccessfulOutcome.h \ + S1AP_E-RAB-IE-ContainerList.h \ + S1AP_E-RAB-IE-ContainerPairList.h \ + S1AP_ProtocolError-IE-ContainerList.h \ + S1AP_HandoverRequired.h \ + S1AP_HandoverCommand.h \ + S1AP_E-RABSubjecttoDataForwardingList.h \ + S1AP_E-RABDataForwardingItem.h \ + S1AP_HandoverPreparationFailure.h \ + S1AP_HandoverRequest.h \ + S1AP_E-RABToBeSetupListHOReq.h \ + S1AP_E-RABToBeSetupItemHOReq.h \ + S1AP_HandoverRequestAcknowledge.h \ + S1AP_E-RABAdmittedList.h \ + S1AP_E-RABAdmittedItem.h \ + S1AP_E-RABFailedtoSetupListHOReqAck.h \ + S1AP_E-RABFailedToSetupItemHOReqAck.h \ + S1AP_HandoverFailure.h \ + S1AP_HandoverNotify.h \ + S1AP_PathSwitchRequest.h \ + S1AP_E-RABToBeSwitchedDLList.h \ + S1AP_E-RABToBeSwitchedDLItem.h \ + S1AP_PathSwitchRequestAcknowledge.h \ + S1AP_E-RABToBeSwitchedULList.h \ + S1AP_E-RABToBeSwitchedULItem.h \ + S1AP_PathSwitchRequestFailure.h \ + S1AP_HandoverCancel.h \ + S1AP_HandoverCancelAcknowledge.h \ + S1AP_E-RABSetupRequest.h \ + S1AP_E-RABToBeSetupListBearerSUReq.h \ + S1AP_E-RABToBeSetupItemBearerSUReq.h \ + S1AP_E-RABSetupResponse.h \ + S1AP_E-RABSetupListBearerSURes.h \ + S1AP_E-RABSetupItemBearerSURes.h \ + S1AP_E-RABModifyRequest.h \ + S1AP_E-RABToBeModifiedListBearerModReq.h \ + S1AP_E-RABToBeModifiedItemBearerModReq.h \ + S1AP_E-RABModifyResponse.h \ + S1AP_E-RABModifyListBearerModRes.h \ + S1AP_E-RABModifyItemBearerModRes.h \ + S1AP_E-RABReleaseCommand.h \ + S1AP_E-RABReleaseResponse.h \ + S1AP_E-RABReleaseListBearerRelComp.h \ + S1AP_E-RABReleaseItemBearerRelComp.h \ + S1AP_E-RABReleaseIndication.h \ + S1AP_InitialContextSetupRequest.h \ + S1AP_E-RABToBeSetupListCtxtSUReq.h \ + S1AP_E-RABToBeSetupItemCtxtSUReq.h \ + S1AP_InitialContextSetupResponse.h \ + S1AP_E-RABSetupListCtxtSURes.h \ + S1AP_E-RABSetupItemCtxtSURes.h \ + S1AP_InitialContextSetupFailure.h \ + S1AP_Paging.h \ + S1AP_TAIList.h \ + S1AP_TAIItem.h \ + S1AP_UEContextReleaseRequest.h \ + S1AP_UEContextReleaseCommand.h \ + S1AP_UEContextReleaseComplete.h \ + S1AP_UEContextModificationRequest.h \ + S1AP_UEContextModificationResponse.h \ + S1AP_UEContextModificationFailure.h \ + S1AP_UERadioCapabilityMatchRequest.h \ + S1AP_UERadioCapabilityMatchResponse.h \ + S1AP_DownlinkNASTransport.h \ + S1AP_InitialUEMessage.h \ + S1AP_UplinkNASTransport.h \ + S1AP_NASNonDeliveryIndication.h \ + S1AP_RerouteNASRequest.h \ + S1AP_NASDeliveryIndication.h \ + S1AP_Reset.h \ + S1AP_ResetType.h \ + S1AP_ResetAll.h \ + S1AP_UE-associatedLogicalS1-ConnectionListRes.h \ + S1AP_ResetAcknowledge.h \ + S1AP_UE-associatedLogicalS1-ConnectionListResAck.h \ + S1AP_ErrorIndication.h \ + S1AP_S1SetupRequest.h \ + S1AP_S1SetupResponse.h \ + S1AP_S1SetupFailure.h \ + S1AP_ENBConfigurationUpdate.h \ + S1AP_ENBConfigurationUpdateAcknowledge.h \ + S1AP_ENBConfigurationUpdateFailure.h \ + S1AP_MMEConfigurationUpdate.h \ + S1AP_MMEConfigurationUpdateAcknowledge.h \ + S1AP_MMEConfigurationUpdateFailure.h \ + S1AP_DownlinkS1cdma2000tunnelling.h \ + S1AP_UplinkS1cdma2000tunnelling.h \ + S1AP_UECapabilityInfoIndication.h \ + S1AP_ENBStatusTransfer.h \ + S1AP_MMEStatusTransfer.h \ + S1AP_TraceStart.h \ + S1AP_TraceFailureIndication.h \ + S1AP_DeactivateTrace.h \ + S1AP_CellTrafficTrace.h \ + S1AP_LocationReportingControl.h \ + S1AP_LocationReportingFailureIndication.h \ + S1AP_LocationReport.h \ + S1AP_OverloadStart.h \ + S1AP_OverloadStop.h \ + S1AP_WriteReplaceWarningRequest.h \ + S1AP_WriteReplaceWarningResponse.h \ + S1AP_ENBDirectInformationTransfer.h \ + S1AP_Inter-SystemInformationTransferType.h \ + S1AP_MMEDirectInformationTransfer.h \ + S1AP_ENBConfigurationTransfer.h \ + S1AP_MMEConfigurationTransfer.h \ + S1AP_PrivateMessage.h \ + S1AP_KillRequest.h \ + S1AP_KillResponse.h \ + S1AP_PWSRestartIndication.h \ + S1AP_PWSFailureIndication.h \ + S1AP_DownlinkUEAssociatedLPPaTransport.h \ + S1AP_UplinkUEAssociatedLPPaTransport.h \ + S1AP_DownlinkNonUEAssociatedLPPaTransport.h \ + S1AP_UplinkNonUEAssociatedLPPaTransport.h \ + S1AP_E-RABModificationIndication.h \ + S1AP_E-RABToBeModifiedListBearerModInd.h \ + S1AP_E-RABToBeModifiedItemBearerModInd.h \ + S1AP_E-RABNotToBeModifiedListBearerModInd.h \ + S1AP_E-RABNotToBeModifiedItemBearerModInd.h \ + S1AP_CSGMembershipInfo.h \ + S1AP_E-RABModificationConfirm.h \ + S1AP_E-RABModifyListBearerModConf.h \ + S1AP_E-RABModifyItemBearerModConf.h \ + S1AP_UEContextModificationIndication.h \ + S1AP_UEContextModificationConfirm.h \ + S1AP_UEContextSuspendRequest.h \ + S1AP_UEContextSuspendResponse.h \ + S1AP_UEContextResumeRequest.h \ + S1AP_E-RABFailedToResumeListResumeReq.h \ + S1AP_E-RABFailedToResumeItemResumeReq.h \ + S1AP_UEContextResumeResponse.h \ + S1AP_E-RABFailedToResumeListResumeRes.h \ + S1AP_E-RABFailedToResumeItemResumeRes.h \ + S1AP_UEContextResumeFailure.h \ + S1AP_ConnectionEstablishmentIndication.h \ + S1AP_RetrieveUEInformation.h \ + S1AP_UEInformationTransfer.h \ + S1AP_ENBCPRelocationIndication.h \ + S1AP_MMECPRelocationIndication.h \ + S1AP_Additional-GUTI.h \ + S1AP_AreaScopeOfMDT.h \ + S1AP_AllocationAndRetentionPriority.h \ + S1AP_AssistanceDataForCECapableUEs.h \ + S1AP_AssistanceDataForPaging.h \ + S1AP_AssistanceDataForRecommendedCells.h \ + S1AP_Bearers-SubjectToStatusTransferList.h \ + S1AP_Bearers-SubjectToStatusTransfer-Item.h \ + S1AP_BearerType.h \ + S1AP_BitRate.h \ + S1AP_BPLMNs.h \ + S1AP_BroadcastCancelledAreaList.h \ + S1AP_BroadcastCompletedAreaList.h \ + S1AP_CancelledCellinEAI.h \ + S1AP_CancelledCellinEAI-Item.h \ + S1AP_CancelledCellinTAI.h \ + S1AP_CancelledCellinTAI-Item.h \ + S1AP_Cause.h \ + S1AP_CauseMisc.h \ + S1AP_CauseProtocol.h \ + S1AP_CauseRadioNetwork.h \ + S1AP_CauseTransport.h \ + S1AP_CauseNas.h \ + S1AP_CellAccessMode.h \ + S1AP_CellIdentifierAndCELevelForCECapableUEs.h \ + S1AP_CELevel.h \ + S1AP_CE-mode-B-SupportIndicator.h \ + S1AP_CellIdentity.h \ + S1AP_CellID-Broadcast.h \ + S1AP_CellID-Broadcast-Item.h \ + S1AP_CellID-Cancelled.h \ + S1AP_CellID-Cancelled-Item.h \ + S1AP_CellBasedMDT.h \ + S1AP_CellIdListforMDT.h \ + S1AP_Cdma2000PDU.h \ + S1AP_Cdma2000RATType.h \ + S1AP_Cdma2000SectorID.h \ + S1AP_Cdma2000HOStatus.h \ + S1AP_Cdma2000HORequiredIndication.h \ + S1AP_Cdma2000OneXSRVCCInfo.h \ + S1AP_Cdma2000OneXMEID.h \ + S1AP_Cdma2000OneXMSI.h \ + S1AP_Cdma2000OneXPilot.h \ + S1AP_Cdma2000OneXRAND.h \ + S1AP_Cell-Size.h \ + S1AP_CellType.h \ + S1AP_CGI.h \ + S1AP_CI.h \ + S1AP_CNDomain.h \ + S1AP_ConcurrentWarningMessageIndicator.h \ + S1AP_Correlation-ID.h \ + S1AP_CSFallbackIndicator.h \ + S1AP_AdditionalCSFallbackIndicator.h \ + S1AP_CSG-Id.h \ + S1AP_CSG-IdList.h \ + S1AP_CSG-IdList-Item.h \ + S1AP_CSGMembershipStatus.h \ + S1AP_COUNTvalue.h \ + S1AP_COUNTValueExtended.h \ + S1AP_COUNTvaluePDCP-SNlength18.h \ + S1AP_Coverage-Level.h \ + S1AP_CriticalityDiagnostics.h \ + S1AP_CriticalityDiagnostics-IE-List.h \ + S1AP_CriticalityDiagnostics-IE-Item.h \ + S1AP_DataCodingScheme.h \ + S1AP_DCN-ID.h \ + S1AP_ServedDCNs.h \ + S1AP_ServedDCNsItem.h \ + S1AP_DL-CP-SecurityInformation.h \ + S1AP_DL-Forwarding.h \ + S1AP_DL-NAS-MAC.h \ + S1AP_Direct-Forwarding-Path-Availability.h \ + S1AP_Data-Forwarding-Not-Possible.h \ + S1AP_DLNASPDUDeliveryAckRequest.h \ + S1AP_EARFCN.h \ + S1AP_ECGIList.h \ + S1AP_PWSfailedECGIList.h \ + S1AP_EmergencyAreaIDList.h \ + S1AP_EmergencyAreaID.h \ + S1AP_EmergencyAreaID-Broadcast.h \ + S1AP_EmergencyAreaID-Broadcast-Item.h \ + S1AP_EmergencyAreaID-Cancelled.h \ + S1AP_EmergencyAreaID-Cancelled-Item.h \ + S1AP_CompletedCellinEAI.h \ + S1AP_CompletedCellinEAI-Item.h \ + S1AP_ECGI-List.h \ + S1AP_EmergencyAreaIDListForRestart.h \ + S1AP_ENB-ID.h \ + S1AP_GERAN-Cell-ID.h \ + S1AP_Global-ENB-ID.h \ + S1AP_GUMMEIList.h \ + S1AP_ENB-StatusTransfer-TransparentContainer.h \ + S1AP_ENB-UE-S1AP-ID.h \ + S1AP_ENBname.h \ + S1AP_ENBX2TLAs.h \ + S1AP_EncryptionAlgorithms.h \ + S1AP_EnhancedCoverageRestricted.h \ + S1AP_EPLMNs.h \ + S1AP_EventType.h \ + S1AP_E-RAB-ID.h \ + S1AP_E-RABInformationList.h \ + S1AP_E-RABInformationListItem.h \ + S1AP_E-RABList.h \ + S1AP_E-RABItem.h \ + S1AP_E-RABLevelQoSParameters.h \ + S1AP_EUTRAN-CGI.h \ + S1AP_EUTRANRoundTripDelayEstimationInfo.h \ + S1AP_ExpectedUEBehaviour.h \ + S1AP_ExpectedUEActivityBehaviour.h \ + S1AP_ExpectedActivityPeriod.h \ + S1AP_ExpectedIdlePeriod.h \ + S1AP_SourceOfUEActivityBehaviourInformation.h \ + S1AP_ExpectedHOInterval.h \ + S1AP_ExtendedRNC-ID.h \ + S1AP_ExtendedRepetitionPeriod.h \ + S1AP_Extended-UEIdentityIndexValue.h \ + S1AP_ForbiddenInterRATs.h \ + S1AP_ForbiddenTAs.h \ + S1AP_ForbiddenTAs-Item.h \ + S1AP_ForbiddenTACs.h \ + S1AP_ForbiddenLAs.h \ + S1AP_ForbiddenLAs-Item.h \ + S1AP_ForbiddenLACs.h \ + S1AP_GBR-QosInformation.h \ + S1AP_GTP-TEID.h \ + S1AP_GUMMEI.h \ + S1AP_GUMMEIType.h \ + S1AP_GWContextReleaseIndication.h \ + S1AP_HandoverRestrictionList.h \ + S1AP_HandoverType.h \ + S1AP_HFN.h \ + S1AP_HFNModified.h \ + S1AP_HFNforPDCP-SNlength18.h \ + S1AP_Masked-IMEISV.h \ + S1AP_ImmediateMDT.h \ + S1AP_IMSI.h \ + S1AP_InformationOnRecommendedCellsAndENBsForPaging.h \ + S1AP_IntegrityProtectionAlgorithms.h \ + S1AP_IntendedNumberOfPagingAttempts.h \ + S1AP_InterfacesToTrace.h \ + S1AP_KillAllWarningMessages.h \ + S1AP_LAC.h \ + S1AP_LAI.h \ + S1AP_LastVisitedCell-Item.h \ + S1AP_LastVisitedEUTRANCellInformation.h \ + S1AP_LastVisitedUTRANCellInformation.h \ + S1AP_LastVisitedGERANCellInformation.h \ + S1AP_L3-Information.h \ + S1AP_LPPa-PDU.h \ + S1AP_LHN-ID.h \ + S1AP_Links-to-log.h \ + S1AP_ListeningSubframePattern.h \ + S1AP_LoggedMDT.h \ + S1AP_LoggingInterval.h \ + S1AP_LoggingDuration.h \ + S1AP_LoggedMBSFNMDT.h \ + S1AP_M3Configuration.h \ + S1AP_M3period.h \ + S1AP_M4Configuration.h \ + S1AP_M4period.h \ + S1AP_M5Configuration.h \ + S1AP_M5period.h \ + S1AP_M6Configuration.h \ + S1AP_M6report-Interval.h \ + S1AP_M6delay-threshold.h \ + S1AP_M7Configuration.h \ + S1AP_M7period.h \ + S1AP_MDT-Activation.h \ + S1AP_MDT-Location-Info.h \ + S1AP_MDT-Configuration.h \ + S1AP_ManagementBasedMDTAllowed.h \ + S1AP_MBSFN-ResultToLog.h \ + S1AP_MBSFN-ResultToLogInfo.h \ + S1AP_MDTPLMNList.h \ + S1AP_PrivacyIndicator.h \ + S1AP_MDTMode.h \ + S1AP_MDTMode-Extension.h \ + S1AP_MeasurementsToActivate.h \ + S1AP_MeasurementThresholdA2.h \ + S1AP_MessageIdentifier.h \ + S1AP_MobilityInformation.h \ + S1AP_MMEname.h \ + S1AP_MMEPagingTarget.h \ + S1AP_MMERelaySupportIndicator.h \ + S1AP_MME-Group-ID.h \ + S1AP_MME-Code.h \ + S1AP_MME-UE-S1AP-ID.h \ + S1AP_M-TMSI.h \ + S1AP_MSClassmark2.h \ + S1AP_MSClassmark3.h \ + S1AP_MutingAvailabilityIndication.h \ + S1AP_MutingPatternInformation.h \ + S1AP_NAS-PDU.h \ + S1AP_NASSecurityParametersfromE-UTRAN.h \ + S1AP_NASSecurityParameterstoE-UTRAN.h \ + S1AP_NB-IoT-DefaultPagingDRX.h \ + S1AP_NB-IoT-Paging-eDRXInformation.h \ + S1AP_NB-IoT-Paging-eDRX-Cycle.h \ + S1AP_NB-IoT-PagingTimeWindow.h \ + S1AP_NB-IoT-UEIdentityIndexValue.h \ + S1AP_NextPagingAreaScope.h \ + S1AP_NumberofBroadcastRequest.h \ + S1AP_NumberOfBroadcasts.h \ + S1AP_OldBSS-ToNewBSS-Information.h \ + S1AP_OverloadAction.h \ + S1AP_OverloadResponse.h \ + S1AP_PagingAttemptInformation.h \ + S1AP_PagingAttemptCount.h \ + S1AP_Paging-eDRXInformation.h \ + S1AP_Paging-eDRX-Cycle.h \ + S1AP_PagingTimeWindow.h \ + S1AP_PagingDRX.h \ + S1AP_PagingPriority.h \ + S1AP_PDCP-SN.h \ + S1AP_PDCP-SNExtended.h \ + S1AP_PDCP-SNlength18.h \ + S1AP_M1PeriodicReporting.h \ + S1AP_PLMNidentity.h \ + S1AP_Port-Number.h \ + S1AP_Pre-emptionCapability.h \ + S1AP_Pre-emptionVulnerability.h \ + S1AP_PriorityLevel.h \ + S1AP_ProSeAuthorized.h \ + S1AP_ProSeDirectDiscovery.h \ + S1AP_ProSeUEtoNetworkRelaying.h \ + S1AP_ProSeDirectCommunication.h \ + S1AP_PS-ServiceNotAvailable.h \ + S1AP_QCI.h \ + S1AP_ReceiveStatusofULPDCPSDUs.h \ + S1AP_ReceiveStatusOfULPDCPSDUsExtended.h \ + S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h \ + S1AP_RecommendedCellsForPaging.h \ + S1AP_RecommendedCellList.h \ + S1AP_RecommendedCellItem.h \ + S1AP_RecommendedENBsForPaging.h \ + S1AP_RecommendedENBList.h \ + S1AP_RecommendedENBItem.h \ + S1AP_RelativeMMECapacity.h \ + S1AP_RelayNode-Indicator.h \ + S1AP_RAC.h \ + S1AP_RAT-Type.h \ + S1AP_ReportAmountMDT.h \ + S1AP_ReportIntervalMDT.h \ + S1AP_M1ReportingTrigger.h \ + S1AP_RequestType.h \ + S1AP_RIMTransfer.h \ + S1AP_RIMInformation.h \ + S1AP_RIMRoutingAddress.h \ + S1AP_ReportArea.h \ + S1AP_RepetitionPeriod.h \ + S1AP_RLFReportInformation.h \ + S1AP_RNC-ID.h \ + S1AP_RRC-Container.h \ + S1AP_RRC-Establishment-Cause.h \ + S1AP_ECGIListForRestart.h \ + S1AP_Routing-ID.h \ + S1AP_SecurityKey.h \ + S1AP_SecurityContext.h \ + S1AP_SerialNumber.h \ + S1AP_SONInformation.h \ + S1AP_SONInformation-Extension.h \ + S1AP_SONInformationRequest.h \ + S1AP_SONInformationReply.h \ + S1AP_SONInformationReport.h \ + S1AP_SONConfigurationTransfer.h \ + S1AP_SynchronisationInformation.h \ + S1AP_Source-ToTarget-TransparentContainer.h \ + S1AP_SourceBSS-ToTargetBSS-TransparentContainer.h \ + S1AP_SourceeNB-ID.h \ + S1AP_SRVCCOperationNotPossible.h \ + S1AP_SRVCCOperationPossible.h \ + S1AP_SRVCCHOIndication.h \ + S1AP_SourceeNB-ToTargeteNB-TransparentContainer.h \ + S1AP_SourceRNC-ToTargetRNC-TransparentContainer.h \ + S1AP_ServedGUMMEIs.h \ + S1AP_ServedGUMMEIsItem.h \ + S1AP_ServedGroupIDs.h \ + S1AP_ServedMMECs.h \ + S1AP_ServedPLMNs.h \ + S1AP_SubscriberProfileIDforRFP.h \ + S1AP_SupportedTAs.h \ + S1AP_SupportedTAs-Item.h \ + S1AP_StratumLevel.h \ + S1AP_SynchronisationStatus.h \ + S1AP_TimeSynchronisationInfo.h \ + S1AP_S-TMSI.h \ + S1AP_TAC.h \ + S1AP_TAIBasedMDT.h \ + S1AP_TAIListforMDT.h \ + S1AP_TAIListforWarning.h \ + S1AP_TAI.h \ + S1AP_TAI-Broadcast.h \ + S1AP_TAI-Broadcast-Item.h \ + S1AP_TAI-Cancelled.h \ + S1AP_TAI-Cancelled-Item.h \ + S1AP_TABasedMDT.h \ + S1AP_TAListforMDT.h \ + S1AP_CompletedCellinTAI.h \ + S1AP_CompletedCellinTAI-Item.h \ + S1AP_TBCD-STRING.h \ + S1AP_TargetID.h \ + S1AP_TargeteNB-ID.h \ + S1AP_TargetRNC-ID.h \ + S1AP_TargeteNB-ToSourceeNB-TransparentContainer.h \ + S1AP_Target-ToSource-TransparentContainer.h \ + S1AP_TargetRNC-ToSourceRNC-TransparentContainer.h \ + S1AP_TargetBSS-ToSourceBSS-TransparentContainer.h \ + S1AP_M1ThresholdEventA2.h \ + S1AP_Threshold-RSRP.h \ + S1AP_Threshold-RSRQ.h \ + S1AP_TimeToWait.h \ + S1AP_Time-UE-StayedInCell.h \ + S1AP_Time-UE-StayedInCell-EnhancedGranularity.h \ + S1AP_TransportInformation.h \ + S1AP_TransportLayerAddress.h \ + S1AP_TraceActivation.h \ + S1AP_TraceDepth.h \ + S1AP_E-UTRAN-Trace-ID.h \ + S1AP_TrafficLoadReductionIndication.h \ + S1AP_TunnelInformation.h \ + S1AP_TypeOfError.h \ + S1AP_TAIListForRestart.h \ + S1AP_UEAggregateMaximumBitrate.h \ + S1AP_UE-RetentionInformation.h \ + S1AP_UE-S1AP-IDs.h \ + S1AP_UE-S1AP-ID-pair.h \ + S1AP_UE-associatedLogicalS1-ConnectionItem.h \ + S1AP_UEIdentityIndexValue.h \ + S1AP_UE-HistoryInformation.h \ + S1AP_UE-HistoryInformationFromTheUE.h \ + S1AP_UEPagingID.h \ + S1AP_UERadioCapability.h \ + S1AP_UERadioCapabilityForPaging.h \ + S1AP_UE-RLF-Report-Container.h \ + S1AP_UE-RLF-Report-Container-for-extended-bands.h \ + S1AP_UESecurityCapabilities.h \ + S1AP_UESidelinkAggregateMaximumBitrate.h \ + S1AP_UE-Usage-Type.h \ + S1AP_UL-CP-SecurityInformation.h \ + S1AP_UL-NAS-MAC.h \ + S1AP_UL-NAS-Count.h \ + S1AP_UserLocationInformation.h \ + S1AP_UEUserPlaneCIoTSupportIndicator.h \ + S1AP_VoiceSupportMatchIndicator.h \ + S1AP_V2XServicesAuthorized.h \ + S1AP_VehicleUE.h \ + S1AP_PedestrianUE.h \ + S1AP_WarningAreaList.h \ + S1AP_WarningType.h \ + S1AP_WarningSecurityInfo.h \ + S1AP_WarningMessageContents.h \ + S1AP_X2TNLConfigurationInfo.h \ + S1AP_ENBX2ExtTLAs.h \ + S1AP_ENBX2ExtTLA.h \ + S1AP_ENBX2GTPTLAs.h \ + S1AP_ENBIndirectX2TransportLayerAddresses.h \ + S1AP_Criticality.h \ + S1AP_Presence.h \ + S1AP_PrivateIE-ID.h \ + S1AP_ProcedureCode.h \ + S1AP_ProtocolExtensionID.h \ + S1AP_ProtocolIE-ID.h \ + S1AP_TriggeringMessage.h \ + S1AP_ProtocolIE-Container.h \ + S1AP_ProtocolIE-SingleContainer.h \ + S1AP_ProtocolIE-Field.h \ + S1AP_ProtocolIE-ContainerPair.h \ + S1AP_ProtocolIE-FieldPair.h \ + S1AP_ProtocolIE-ContainerList.h \ + S1AP_ProtocolIE-ContainerPairList.h \ + S1AP_ProtocolExtensionContainer.h \ + S1AP_ProtocolExtensionField.h \ + S1AP_PrivateIE-Container.h \ + S1AP_PrivateIE-Field.h + +ASN_MODULE_HDRS+=ANY.h +ASN_MODULE_SRCS+=ANY.c +ASN_MODULE_HDRS+=OCTET_STRING.h +ASN_MODULE_HDRS+=OPEN_TYPE.h +ASN_MODULE_SRCS+=OPEN_TYPE.c +ASN_MODULE_HDRS+=constr_CHOICE.h +ASN_MODULE_HDRS+=BOOLEAN.h +ASN_MODULE_SRCS+=BOOLEAN.c +ASN_MODULE_HDRS+=INTEGER.h +ASN_MODULE_SRCS+=INTEGER.c +ASN_MODULE_HDRS+=NULL.h +ASN_MODULE_SRCS+=NULL.c +ASN_MODULE_HDRS+=NativeEnumerated.h +ASN_MODULE_SRCS+=NativeEnumerated.c +ASN_MODULE_HDRS+=NativeInteger.h +ASN_MODULE_SRCS+=NativeInteger.c +ASN_MODULE_HDRS+=OBJECT_IDENTIFIER.h +ASN_MODULE_SRCS+=OBJECT_IDENTIFIER.c +ASN_MODULE_HDRS+=PrintableString.h +ASN_MODULE_SRCS+=PrintableString.c +ASN_MODULE_HDRS+=asn_SEQUENCE_OF.h +ASN_MODULE_SRCS+=asn_SEQUENCE_OF.c +ASN_MODULE_HDRS+=asn_SET_OF.h +ASN_MODULE_SRCS+=asn_SET_OF.c +ASN_MODULE_SRCS+=constr_CHOICE.c +ASN_MODULE_HDRS+=constr_SEQUENCE.h +ASN_MODULE_SRCS+=constr_SEQUENCE.c +ASN_MODULE_HDRS+=constr_SEQUENCE_OF.h +ASN_MODULE_SRCS+=constr_SEQUENCE_OF.c +ASN_MODULE_HDRS+=constr_SET_OF.h +ASN_MODULE_SRCS+=constr_SET_OF.c +ASN_MODULE_HDRS+=asn_application.h +ASN_MODULE_SRCS+=asn_application.c +ASN_MODULE_HDRS+=asn_ioc.h +ASN_MODULE_HDRS+=asn_system.h +ASN_MODULE_HDRS+=asn_codecs.h +ASN_MODULE_HDRS+=asn_internal.h +ASN_MODULE_SRCS+=asn_internal.c +ASN_MODULE_HDRS+=asn_random_fill.h +ASN_MODULE_SRCS+=asn_random_fill.c +ASN_MODULE_HDRS+=asn_bit_data.h +ASN_MODULE_SRCS+=asn_bit_data.c +ASN_MODULE_SRCS+=OCTET_STRING.c +ASN_MODULE_HDRS+=BIT_STRING.h +ASN_MODULE_SRCS+=BIT_STRING.c +ASN_MODULE_SRCS+=asn_codecs_prim.c +ASN_MODULE_HDRS+=asn_codecs_prim.h +ASN_MODULE_HDRS+=ber_tlv_length.h +ASN_MODULE_SRCS+=ber_tlv_length.c +ASN_MODULE_HDRS+=ber_tlv_tag.h +ASN_MODULE_SRCS+=ber_tlv_tag.c +ASN_MODULE_HDRS+=ber_decoder.h +ASN_MODULE_SRCS+=ber_decoder.c +ASN_MODULE_HDRS+=der_encoder.h +ASN_MODULE_SRCS+=der_encoder.c +ASN_MODULE_HDRS+=constr_TYPE.h +ASN_MODULE_SRCS+=constr_TYPE.c +ASN_MODULE_HDRS+=constraints.h +ASN_MODULE_SRCS+=constraints.c +ASN_MODULE_HDRS+=xer_support.h +ASN_MODULE_SRCS+=xer_support.c +ASN_MODULE_HDRS+=xer_decoder.h +ASN_MODULE_SRCS+=xer_decoder.c +ASN_MODULE_HDRS+=xer_encoder.h +ASN_MODULE_SRCS+=xer_encoder.c +ASN_MODULE_HDRS+=per_support.h +ASN_MODULE_SRCS+=per_support.c +ASN_MODULE_HDRS+=per_decoder.h +ASN_MODULE_SRCS+=per_decoder.c +ASN_MODULE_HDRS+=per_encoder.h +ASN_MODULE_SRCS+=per_encoder.c +ASN_MODULE_HDRS+=per_opentype.h +ASN_MODULE_SRCS+=per_opentype.c +ASN_MODULE_HDRS+=oer_decoder.h +ASN_MODULE_HDRS+=oer_encoder.h +ASN_MODULE_HDRS+=oer_support.h +ASN_MODULE_SRCS+=oer_decoder.c +ASN_MODULE_SRCS+=oer_encoder.c +ASN_MODULE_SRCS+=oer_support.c +ASN_MODULE_SRCS+=OPEN_TYPE_oer.c +ASN_MODULE_SRCS+=INTEGER_oer.c +ASN_MODULE_SRCS+=BIT_STRING_oer.c +ASN_MODULE_SRCS+=OCTET_STRING_oer.c +ASN_MODULE_SRCS+=NativeInteger_oer.c +ASN_MODULE_SRCS+=NativeEnumerated_oer.c +ASN_MODULE_SRCS+=constr_CHOICE_oer.c +ASN_MODULE_SRCS+=constr_SEQUENCE_oer.c +ASN_MODULE_SRCS+=constr_SET_OF_oer.c + +ASN_MODULE_CFLAGS= + +lib_LTLIBRARIES+=libasncodec.la +libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) +libasncodec_la_CPPFLAGS=-I$(top_srcdir)/ +libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) +libasncodec_la_LDFLAGS=-lm diff --git a/lib/s1ap3/asn1c/NULL.c b/lib/s1ap3/asn1c/NULL.c new file mode 100644 index 0000000000..d882500e05 --- /dev/null +++ b/lib/s1ap3/asn1c/NULL.c @@ -0,0 +1,299 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include /* Implemented in terms of BOOLEAN type */ + +/* + * NULL basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NULL_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (5 << 2)) +}; +asn_TYPE_operation_t asn_OP_NULL = { + BOOLEAN_free, + NULL_print, + NULL_compare, + BOOLEAN_decode_ber, /* Implemented in terms of BOOLEAN */ + NULL_encode_der, /* Special handling of DER encoding */ + NULL_decode_xer, + NULL_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NULL_decode_oer, + NULL_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NULL_decode_uper, /* Unaligned PER decoder */ + NULL_encode_uper, /* Unaligned PER encoder */ + NULL_decode_aper, /* Aligned PER decoder */ + NULL_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NULL_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NULL = { + "NULL", + "NULL", + &asn_OP_NULL, + asn_DEF_NULL_tags, + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + asn_DEF_NULL_tags, /* Same as above */ + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, + ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval; + + erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = ptr; + } + + ASN__ENCODED_OK(erval); +} + +asn_enc_rval_t +NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er; + + (void)td; + (void)sptr; + (void)ilevel; + (void)flags; + (void)cb; + (void)app_key; + + /* XMLNullValue is empty */ + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +static enum xer_pbd_rval +NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + (void)td; + (void)sptr; + (void)chunk_buf; /* Going to be empty according to the rules below. */ + + /* + * There must be no content in self-terminating tag. + */ + if(chunk_size) + return XPBD_BROKEN_ENCODING; + else + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(NULL_t), opt_mname, buf_ptr, size, + NULL__xer_body_decode); +} + +int +NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) { + (void)td; + (void)a; + (void)b; + return 0; +} + +int +NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(sptr) { + return (cb("", 9, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +#ifndef ASN_DISABLE_OER_SUPPORT + +asn_dec_rval_t +NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t rv = {RC_OK, 0}; + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)ptr; + (void)size; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + return rv; +} + +asn_enc_rval_t +NULL_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er; + + (void)td; + (void)sptr; + (void)constraints; + (void)cb; + (void)app_key; + + er.encoded = 0; /* Encoding in 0 bytes. */ + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +NULL_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + asn_enc_rval_t er; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + + +asn_enc_rval_t +NULL_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + asn_enc_rval_t er; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + NULL_t *st = *sptr; + + (void)td; + (void)constr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + return result_ok; +} + diff --git a/lib/s1ap3/asn1c/NULL.h b/lib/s1ap3/asn1c/NULL.h new file mode 100644 index 0000000000..802d12c007 --- /dev/null +++ b/lib/s1ap3/asn1c/NULL.h @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_NULL_H +#define ASN_TYPE_NULL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The value of the NULL type is meaningless: see BOOLEAN if you want to + * carry true/false semantics. + */ +typedef int NULL_t; + +extern asn_TYPE_descriptor_t asn_DEF_NULL; +extern asn_TYPE_operation_t asn_OP_NULL; + +asn_struct_print_f NULL_print; +asn_struct_compare_f NULL_compare; +der_type_encoder_f NULL_encode_der; +xer_type_decoder_f NULL_decode_xer; +xer_type_encoder_f NULL_encode_xer; +oer_type_decoder_f NULL_decode_oer; +oer_type_encoder_f NULL_encode_oer; +per_type_decoder_f NULL_decode_uper; +per_type_encoder_f NULL_encode_uper; +per_type_decoder_f NULL_decode_aper; +per_type_encoder_f NULL_encode_aper; +asn_random_fill_f NULL_random_fill; + +#define NULL_free BOOLEAN_free +#define NULL_decode_ber BOOLEAN_decode_ber +#define NULL_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* NULL_H */ diff --git a/lib/s1ap3/asn1c/NativeEnumerated.c b/lib/s1ap3/asn1c/NativeEnumerated.c new file mode 100644 index 0000000000..7c069e78da --- /dev/null +++ b/lib/s1ap3/asn1c/NativeEnumerated.c @@ -0,0 +1,367 @@ +/*- + * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeEnumerated basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeEnumerated = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeEnumerated_decode_oer, + NativeEnumerated_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeEnumerated_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { + "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ + "ENUMERATED", + &asn_OP_NativeEnumerated, + asn_DEF_NativeEnumerated_tags, + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + asn_DEF_NativeEnumerated_tags, /* Same as above */ + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +static int +NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { + const asn_INTEGER_enum_map_t *a = ap; + const asn_INTEGER_enum_map_t *b = bp; + if(a->nat_value == b->nat_value) + return 0; + if(a->nat_value < b->nat_value) + return -1; + return 1; +} + +asn_enc_rval_t +NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + const asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + /* Deal with APER padding */ + if(ct && ct->upper_bound >= 255) { + int padding = 0; + padding = (8 - (pd->moved % 8)) % 8; + ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); + ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); + if(padding > 0) + per_get_few_bits(pd, padding); + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + if(native < 0) ASN__ENCODE_FAILED; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/lib/s1ap3/asn1c/NativeEnumerated.h b/lib/s1ap3/asn1c/NativeEnumerated.h new file mode 100644 index 0000000000..459f0e633f --- /dev/null +++ b/lib/s1ap3/asn1c/NativeEnumerated.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard ENUMERATED in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeEnumerated_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeEnumerated_H_ +#define _NativeEnumerated_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; +extern asn_TYPE_operation_t asn_OP_NativeEnumerated; + +xer_type_encoder_f NativeEnumerated_encode_xer; +oer_type_decoder_f NativeEnumerated_decode_oer; +oer_type_encoder_f NativeEnumerated_encode_oer; +per_type_decoder_f NativeEnumerated_decode_uper; +per_type_encoder_f NativeEnumerated_encode_uper; +per_type_decoder_f NativeEnumerated_decode_aper; +per_type_encoder_f NativeEnumerated_encode_aper; + +#define NativeEnumerated_free NativeInteger_free +#define NativeEnumerated_print NativeInteger_print +#define NativeEnumerated_compare NativeInteger_compare +#define NativeEnumerated_random_fill NativeInteger_random_fill +#define NativeEnumerated_constraint asn_generic_no_constraint +#define NativeEnumerated_decode_ber NativeInteger_decode_ber +#define NativeEnumerated_encode_der NativeInteger_encode_der +#define NativeEnumerated_decode_xer NativeInteger_decode_xer + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/lib/s1ap3/asn1c/NativeEnumerated_oer.c b/lib/s1ap3/asn1c/NativeEnumerated_oer.c new file mode 100644 index 0000000000..3222348d17 --- /dev/null +++ b/lib/s1ap3/asn1c/NativeEnumerated_oer.c @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_DISABLE_OER_SUPPORT + +#include +#include +#include + +static long +asn__nativeenumerated_convert(const uint8_t *b, const uint8_t *end) { + unsigned long value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (unsigned long)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +asn_dec_rval_t +NativeEnumerated_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + void **nint_ptr, const void *ptr, size_t size) { + asn_dec_rval_t rval = {RC_OK, 0}; + long *native = (long *)*nint_ptr; + const uint8_t *b = ptr; + + (void)opt_codec_ctx; + (void)constraints; + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if((*b & 0x80) == 0) { + /* + * X.696 (08/2015) #11.2 Short form for Enumerated. + */ + if(!native) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + *native = *b; + rval.consumed = 1; + } else { + /* + * X.696 (08/2015) #11.4 Long form for Enumerated. + */ + size_t length = *b & 0x7f; + const uint8_t *bend; + long value; + + if(length < 1 || length > sizeof(*native)) { + ASN__DECODE_FAILED; + } + if((1 + length) > size) { + ASN__DECODE_STARVED; + } + b++; + bend = b + length; + + value = asn__nativeenumerated_convert(b, bend); + if(value < 0) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + ASN__DECODE_FAILED; + } + } + + if(!native) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + *native = value; + + rval.consumed = (1 + length); + } + + return rval; +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +NativeEnumerated_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er; + long native; + + (void)constraints; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + if(native >= 0 && native <= 127) { + /* #11.2 Short form */ + uint8_t b = native; + er.encoded = 1; + if(cb(&b, er.encoded, app_key) < 0) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } else { + /* #11.2 Long form */ + uint8_t buf[1 + sizeof(native)]; + uint8_t *b = &buf[sizeof(native)]; /* Last addressable */ + long final_pattern = -1 * (native < 0); + + for(;;) { + *b-- = native; + native >>= 8; + if(native == final_pattern) { + if(final_pattern) { + if((b[1] & 0x80)) break; + } else { + if(!(b[1] & 0x80)) break; + } + } + } + *b = 0x80 | (&buf[sizeof(native)] - b); + er.encoded = 1 + (&buf[sizeof(native)] - b); + if(cb(b, er.encoded, app_key) < 0) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/lib/s1ap3/asn1c/NativeInteger.c b/lib/s1ap3/asn1c/NativeInteger.c new file mode 100644 index 0000000000..8c00d54c3b --- /dev/null +++ b/lib/s1ap3/asn1c/NativeInteger.c @@ -0,0 +1,550 @@ +/*- + * Copyright (c) 2004, 2005, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeInteger basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeInteger = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeInteger_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeInteger_decode_oer, /* OER decoder */ + NativeInteger_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeInteger_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeInteger = { + "INTEGER", /* The ASN.1 type is still INTEGER */ + "INTEGER", + &asn_OP_NativeInteger, + asn_DEF_NativeInteger_tags, + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + asn_DEF_NativeInteger_tags, /* Same as above */ + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode INTEGER type. + */ +asn_dec_rval_t +NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **nint_ptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + long *native = (long *)*nint_ptr; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + /* + * If the structure is not there, allocate it. + */ + if(native == NULL) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(native == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * ASN.1 encoded INTEGER: buf_ptr, length + * Fill the native, at the same time checking for overflow. + * If overflow occured, return with RC_FAIL. + */ + { + INTEGER_t tmp; + union { + const void *constbuf; + void *nonconstbuf; + } unconst_buf; + long l; + + unconst_buf.constbuf = buf_ptr; + tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; + tmp.size = length; + + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&tmp, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + *native = l; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", + (long)rval.consumed, (long)length, td->name, (long)*native); + + return rval; +} + +/* + * Encode the NativeInteger using the standard INTEGER type DER encoder. + */ +asn_enc_rval_t +NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ + asn_enc_rval_t erval; + INTEGER_t tmp; + +#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ + + tmp.buf = (uint8_t *)&native; + tmp.size = sizeof(native); + +#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ + uint8_t buf[sizeof(native)]; + uint8_t *p; + + /* Prepare a fake INTEGER */ + for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) + *p = (uint8_t)native; + + tmp.buf = buf; + tmp.size = sizeof(buf); +#endif /* WORDS_BIGENDIAN */ + + /* Encode fake INTEGER */ + erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); + if(erval.structure_ptr == &tmp) { + erval.structure_ptr = ptr; + } + return erval; +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +asn_dec_rval_t +NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + INTEGER_t st; + void *st_ptr = (void *)&st; + long *native = (long *)*sptr; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&st, 0, sizeof(st)); + rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, + opt_mname, buf_ptr, size); + if(rval.code == RC_OK) { + long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&st, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + } else { + *native = l; + } + } else { + /* + * Cannot restart from the middle; + * there is no place to save state in the native type. + * Request a continuation from the very beginning. + */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); + return rval; +} + + +asn_enc_rval_t +NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_uper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +asn_dec_rval_t +NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_aper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +/* + * INTEGER specific human-readable output. + */ +int +NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + const long *native = (const long *)sptr; + char scratch[32]; /* Enough for 64-bit int */ + int ret; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(native) { + long value = *native; + ret = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) ? "%lu" : "%ld", value); + assert(ret > 0 && (size_t)ret < sizeof(scratch)); + if(cb(scratch, ret, app_key) < 0) return -1; + if(specs && (value >= 0 || !specs->field_unsigned)) { + const asn_INTEGER_enum_map_t *el = + INTEGER_map_value2enum(specs, value); + if(el) { + if(cb(" (", 2, app_key) < 0) return -1; + if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; + if(cb(")", 1, app_key) < 0) return -1; + } + } + return 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", + td->name, method, ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(long)); + break; + } +} + +int +NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + (void)td; + + if(aptr && bptr) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + const unsigned long *a = aptr; + const unsigned long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } else { + const long *a = aptr; + const long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } + } else if(!aptr) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + long *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (long *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + *sptr = st; + *st = value; + return result_ok; +} diff --git a/lib/s1ap3/asn1c/NativeInteger.h b/lib/s1ap3/asn1c/NativeInteger.h new file mode 100644 index 0000000000..c74406a8a9 --- /dev/null +++ b/lib/s1ap3/asn1c/NativeInteger.h @@ -0,0 +1,46 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard INTEGER in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeInteger_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeInteger_H_ +#define _NativeInteger_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; +extern asn_TYPE_operation_t asn_OP_NativeInteger; + +asn_struct_free_f NativeInteger_free; +asn_struct_print_f NativeInteger_print; +asn_struct_compare_f NativeInteger_compare; +ber_type_decoder_f NativeInteger_decode_ber; +der_type_encoder_f NativeInteger_encode_der; +xer_type_decoder_f NativeInteger_decode_xer; +xer_type_encoder_f NativeInteger_encode_xer; +oer_type_decoder_f NativeInteger_decode_oer; +oer_type_encoder_f NativeInteger_encode_oer; +per_type_decoder_f NativeInteger_decode_uper; +per_type_encoder_f NativeInteger_encode_uper; +per_type_decoder_f NativeInteger_decode_aper; +per_type_encoder_f NativeInteger_encode_aper; +asn_random_fill_f NativeInteger_random_fill; + +#define NativeInteger_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/lib/s1ap3/asn1c/NativeInteger_oer.c b/lib/s1ap3/asn1c/NativeInteger_oer.c new file mode 100644 index 0000000000..411413a246 --- /dev/null +++ b/lib/s1ap3/asn1c/NativeInteger_oer.c @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_DISABLE_OER_SUPPORT + +#include +#include +#include + +asn_dec_rval_t +NativeInteger_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + void **nint_ptr, const void *ptr, size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + long *native = (long *)*nint_ptr; + INTEGER_t tmpint; + INTEGER_t *tmpintptr = &tmpint; + + memset(&tmpint, 0, sizeof(tmpint)); + + if(!native) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + /* + * OPTIMIZATION: Encode directly rather than passing through INTEGER. + * Saves a memory allocation. + */ + rval = INTEGER_decode_oer(opt_codec_ctx, td, constraints, + (void **)&tmpintptr, ptr, size); + if(rval.code != RC_OK) { + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return rval; + } + + if(specs && specs->field_unsigned) { + unsigned long ul; + int ok = asn_INTEGER2ulong(&tmpint, &ul) == 0; + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + if(ok) { + *native = ul; + } else { + rval.code = RC_FAIL; + return rval; + } + } else { + long l; + int ok = asn_INTEGER2long(&tmpint, &l) == 0; + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + if(ok) { + *native = l; + } else { + rval.code = RC_FAIL; + return rval; + } + } + + return rval; +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +NativeInteger_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t tmpint; + long native; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + memset(&tmpint, 0, sizeof(tmpint)); + + ASN_DEBUG("Encoding %s %ld as NativeInteger", td ? td->name : "", native); + + if((specs && specs->field_unsigned) ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) { + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t er = + INTEGER_encode_oer(td, constraints, &tmpint, cb, app_key); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; + } +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/lib/s1ap3/asn1c/OBJECT_IDENTIFIER.c b/lib/s1ap3/asn1c/OBJECT_IDENTIFIER.c new file mode 100644 index 0000000000..80ab797e79 --- /dev/null +++ b/lib/s1ap3/asn1c/OBJECT_IDENTIFIER.c @@ -0,0 +1,647 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include /* for CHAR_BIT */ +#include + +/* + * OBJECT IDENTIFIER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OBJECT_IDENTIFIER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)) +}; +asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER = { + ASN__PRIMITIVE_TYPE_free, + OBJECT_IDENTIFIER_print, + OCTET_STRING_compare, /* Implemented in terms of a string comparison */ + ber_decode_primitive, + der_encode_primitive, + OBJECT_IDENTIFIER_decode_xer, + OBJECT_IDENTIFIER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OBJECT_IDENTIFIER_decode_oer, + OBJECT_IDENTIFIER_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + OBJECT_IDENTIFIER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER = { + "OBJECT IDENTIFIER", + "OBJECT_IDENTIFIER", + &asn_OP_OBJECT_IDENTIFIER, + asn_DEF_OBJECT_IDENTIFIER_tags, + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + asn_DEF_OBJECT_IDENTIFIER_tags, /* Same as above */ + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + { 0, 0, OBJECT_IDENTIFIER_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +OBJECT_IDENTIFIER_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + if(st && st->buf) { + if(st->size < 1) { + ASN__CTFAIL(app_key, td, sptr, + "%s: at least one numerical value " + "expected (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static ssize_t +OBJECT_IDENTIFIER_get_first_arcs(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *arc0, asn_oid_arc_t *arc1) { + asn_oid_arc_t value; + + ssize_t rd = OBJECT_IDENTIFIER_get_single_arc(arcbuf, arcbuf_len, &value); + if(rd <= 0) return rd; + + if(value >= 80) { + *arc0 = 2; + *arc1 = value - 80; + } else if(value >= 40) { + *arc0 = 1; + *arc1 = value - 40; + } else { + *arc0 = 0; + *arc1 = value; + } + + return rd; +} + +ssize_t +OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *ret_value) { + const uint8_t *b = arcbuf; + const uint8_t *arcend = arcbuf + arcbuf_len; /* End of arc */ + + if(arcbuf == arcend) { + return 0; + } else { + asn_oid_arc_t accum; + /* Gather all bits into the accumulator */ + for(accum = 0; b < arcend; b++) { + accum = (accum << 7) | (*b & ~0x80); + if((*b & 0x80) == 0) { + if(accum <= ASN_OID_ARC_MAX) { + *ret_value = accum; + return 1 + (b - arcbuf); + } else { + errno = ERANGE; /* Overflow */ + return -1; + } + } + } + errno = EINVAL; + return -1; + } + +} + +static ssize_t +OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, + asn_app_consume_bytes_f *cb, void *app_key) { + char scratch[32]; + asn_oid_arc_t arc0, arc1; + size_t produced = 0; + size_t off = 0; + ssize_t rd; + int ret; + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + + ret = snprintf(scratch, sizeof(scratch), "%"PRIu32".%"PRIu32, arc0, arc1); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) + return -1; + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + assert(off <= st->size); + ret = snprintf(scratch, sizeof(scratch), ".%" PRIu32, arc); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) return -1; + } + } + + if(off != st->size) { + ASN_DEBUG("Could not scan to the end of Object Identifier"); + return -1; + } + + return produced; +} + +static enum xer_pbd_rval +OBJECT_IDENTIFIER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + OBJECT_IDENTIFIER_t *st = (OBJECT_IDENTIFIER_t *)sptr; + const char *chunk_end = (const char *)chunk_buf + chunk_size; + const char *endptr; + asn_oid_arc_t s_arcs[10]; + asn_oid_arc_t *arcs = s_arcs; + ssize_t num_arcs; + ssize_t ret; + + (void)td; + + num_arcs = OBJECT_IDENTIFIER_parse_arcs( + (const char *)chunk_buf, chunk_size, arcs, + sizeof(s_arcs) / sizeof(s_arcs[0]), &endptr); + if(num_arcs < 0) { + /* Expecting more than zero arcs */ + return XPBD_BROKEN_ENCODING; + } else if(num_arcs == 0) { + return XPBD_NOT_BODY_IGNORE; + } + assert(endptr == chunk_end); + + if((size_t)num_arcs > sizeof(s_arcs)/sizeof(s_arcs[0])) { + arcs = (asn_oid_arc_t *)MALLOC(num_arcs * sizeof(asn_oid_arc_t)); + if(!arcs) return XPBD_SYSTEM_FAILURE; + ret = OBJECT_IDENTIFIER_parse_arcs((const char *)chunk_buf, chunk_size, + arcs, num_arcs, &endptr); + if(ret != num_arcs) + return XPBD_SYSTEM_FAILURE; /* assert?.. */ + } + + /* + * Convert arcs into BER representation. + */ + ret = OBJECT_IDENTIFIER_set_arcs(st, arcs, num_arcs); + if(arcs != s_arcs) FREEMEM(arcs); + + return ret ? XPBD_SYSTEM_FAILURE : XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +OBJECT_IDENTIFIER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname, + buf_ptr, size, OBJECT_IDENTIFIER__xer_body_decode); +} + +asn_enc_rval_t +OBJECT_IDENTIFIER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + asn_enc_rval_t er; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) { + ASN__ENCODE_FAILED; + } + + er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +int +OBJECT_IDENTIFIER_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb("{ ", 2, app_key) < 0) + return -1; + + if(OBJECT_IDENTIFIER__dump_body(st, cb, app_key) < 0) { + return -1; + } + + return (cb(" }", 2, app_key) < 0) ? -1 : 0; +} + +ssize_t +OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *st, asn_oid_arc_t *arcs, + size_t arc_slots) { + asn_oid_arc_t arc0, arc1; + size_t num_arcs = 0; + size_t off; + ssize_t rd; + + if(!st || !st->buf) { + errno = EINVAL; + return -1; + } + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + num_arcs = 2; + switch(arc_slots) { + default: + case 2: + arcs[1] = arc1; + /* Fall through */ + case 1: + arcs[0] = arc0; + /* Fall through */ + case 0: + break; + } + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + if(num_arcs < arc_slots) { + arcs[num_arcs] = arc; + } + num_arcs++; + } + } + + if(off != st->size) { + return -1; + } + + return num_arcs; +} + + +/* + * Save the single value as an object identifier arc. + */ +ssize_t +OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t value) { + /* + * The following conditions must hold: + * assert(arcbuf); + */ + uint8_t scratch[((sizeof(value) * CHAR_BIT + 6) / 7)]; + uint8_t *scratch_end = &scratch[sizeof(scratch)-1]; + uint8_t *b; + size_t result_len; + uint8_t mask; + + for(b = scratch_end, mask = 0; ; mask = 0x80, b--) { + *b = mask | (value & 0x7f); + value >>= 7; + if(!value) { + break; + } + } + + result_len = (scratch_end - b) + 1; + + if(result_len > arcbuf_len) { + return -1; + } + + memcpy(arcbuf, b, result_len); + + return result_len; +} + +int +OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *st, const asn_oid_arc_t *arcs, + size_t arc_slots) { + uint8_t *buf; + uint8_t *bp; + ssize_t wrote; + asn_oid_arc_t arc0; + asn_oid_arc_t arc1; + size_t size; + size_t i; + + if(!st || !arcs || arc_slots < 2) { + errno = EINVAL; + return -1; + } + + arc0 = arcs[0]; + arc1 = arcs[1]; + + if(arc0 <= 1) { + if(arc1 >= 40) { + /* 8.19.4: At most 39 subsequent values (including 0) */ + errno = ERANGE; + return -1; + } + } else if(arc0 == 2) { + if(arc1 > ASN_OID_ARC_MAX - 80) { + errno = ERANGE; + return -1; + } + } else if(arc0 > 2) { + /* 8.19.4: Only three values are allocated from the root node */ + errno = ERANGE; + return -1; + } + + /* + * After above tests it is known that the value of arc0 is completely + * trustworthy (0..2). However, the arc1's value is still meaningless. + */ + + /* + * Roughly estimate the maximum size necessary to encode these arcs. + * This estimation implicitly takes in account the following facts, + * that cancel each other: + * * the first two arcs are encoded in a single value. + * * the first value may require more space (+1 byte) + * * the value of the first arc which is in range (0..2) + */ + size = ((sizeof(asn_oid_arc_t) * CHAR_BIT + 6) / 7) * arc_slots; + bp = buf = (uint8_t *)MALLOC(size + 1); + if(!buf) { + /* ENOMEM */ + return -1; + } + + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arc0 * 40 + arc1); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + + for(i = 2; i < arc_slots; i++) { + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arcs[i]); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + } + + /* + * Replace buffer. + */ + st->size = bp - buf; + bp = st->buf; + st->buf = buf; + st->buf[st->size] = '\0'; + if(bp) FREEMEM(bp); + + return 0; +} + +ssize_t +OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end) { + size_t num_arcs = 0; + const char *oid_end; + enum { + ST_LEADSPACE, + ST_TAILSPACE, + ST_AFTERVALUE, /* Next character ought to be '.' or a space */ + ST_WAITDIGITS /* Next character is expected to be a digit */ + } state = ST_LEADSPACE; + + if(!oid_text || oid_txt_length < -1 || (arcs_count && !arcs)) { + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + errno = EINVAL; + return -1; + } + + if(oid_txt_length == -1) + oid_txt_length = strlen(oid_text); + +#define _OID_CAPTURE_ARC(oid_text, oid_end) \ + do { \ + const char *endp = oid_end; \ + unsigned long value; \ + switch(asn_strtoul_lim(oid_text, &endp, &value)) { \ + case ASN_STRTOX_EXTRA_DATA: \ + case ASN_STRTOX_OK: \ + if(value <= ASN_OID_ARC_MAX) { \ + if(num_arcs < arcs_count) arcs[num_arcs] = value; \ + num_arcs++; \ + oid_text = endp - 1; \ + break; \ + } \ + /* Fall through */ \ + case ASN_STRTOX_ERROR_RANGE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = ERANGE; \ + return -1; \ + case ASN_STRTOX_ERROR_INVAL: \ + case ASN_STRTOX_EXPECT_MORE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = EINVAL; \ + return -1; \ + } \ + } while(0) + + for(oid_end = oid_text + oid_txt_length; oid_text broken OID */ + return -1; + case ST_LEADSPACE: + case ST_WAITDIGITS: + _OID_CAPTURE_ARC(oid_text, oid_end); + state = ST_AFTERVALUE; + continue; + } + break; + default: + /* Unexpected symbols */ + state = ST_WAITDIGITS; + break; + } /* switch() */ + break; + } /* for() */ + + + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + + /* Finalize last arc */ + switch(state) { + case ST_LEADSPACE: + return 0; /* No OID found in input data */ + case ST_WAITDIGITS: + errno = EINVAL; /* Broken OID */ + return -1; + case ST_AFTERVALUE: + case ST_TAILSPACE: + return num_arcs; + } + + errno = EINVAL; /* Broken OID */ + return -1; +} + +/* + * Generate values from the list of interesting values, or just a random + * value up to the upper limit. + */ +static asn_oid_arc_t +OBJECT_IDENTIFIER__biased_random_arc(asn_oid_arc_t upper_bound) { + const asn_oid_arc_t values[] = {0, 1, 127, 128, 129, 254, 255, 256}; + size_t idx; + + switch(asn_random_between(0, 2)) { + case 0: + idx = asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1); + if(values[idx] < upper_bound) { + return values[idx]; + } + /* Fall through */ + case 1: + return asn_random_between(0, upper_bound); + case 2: + default: + return upper_bound; + } +} + +asn_random_fill_result_t +OBJECT_IDENTIFIER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + OBJECT_IDENTIFIER_t *st; + asn_oid_arc_t arcs[5]; + size_t arcs_len = asn_random_between(2, 5); + size_t i; + + (void)constraints; + + if(max_length < arcs_len) return result_skipped; + + if(*sptr) { + st = *sptr; + } else { + st = CALLOC(1, sizeof(*st)); + } + + arcs[0] = asn_random_between(0, 2); + arcs[1] = OBJECT_IDENTIFIER__biased_random_arc( + arcs[0] <= 1 ? 39 : (ASN_OID_ARC_MAX - 80)); + for(i = 2; i < arcs_len; i++) { + arcs[i] = OBJECT_IDENTIFIER__biased_random_arc(ASN_OID_ARC_MAX); + } + + if(OBJECT_IDENTIFIER_set_arcs(st, arcs, arcs_len)) { + if(st != *sptr) { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } + + *sptr = st; + + result_ok.length = st->size; + return result_ok; +} diff --git a/lib/s1ap3/asn1c/OBJECT_IDENTIFIER.h b/lib/s1ap3/asn1c/OBJECT_IDENTIFIER.h new file mode 100644 index 0000000000..087c6fda14 --- /dev/null +++ b/lib/s1ap3/asn1c/OBJECT_IDENTIFIER.h @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OBJECT_IDENTIFIER_H_ +#define _OBJECT_IDENTIFIER_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint32_t asn_oid_arc_t; +#define ASN_OID_ARC_MAX (~((asn_oid_arc_t)0)) + +typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t; + +extern asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER; +extern asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER; + +asn_struct_print_f OBJECT_IDENTIFIER_print; +asn_constr_check_f OBJECT_IDENTIFIER_constraint; +der_type_encoder_f OBJECT_IDENTIFIER_encode_der; +xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer; +xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer; +asn_random_fill_f OBJECT_IDENTIFIER_random_fill; + +#define OBJECT_IDENTIFIER_free ASN__PRIMITIVE_TYPE_free +#define OBJECT_IDENTIFIER_compare OCTET_STRING_compare +#define OBJECT_IDENTIFIER_decode_ber ber_decode_primitive +#define OBJECT_IDENTIFIER_encode_der der_encode_primitive +#define OBJECT_IDENTIFIER_decode_oer oer_decode_primitive +#define OBJECT_IDENTIFIER_encode_oer oer_encode_primitive +#define OBJECT_IDENTIFIER_decode_uper OCTET_STRING_decode_uper +#define OBJECT_IDENTIFIER_encode_uper OCTET_STRING_encode_uper +#define OBJECT_IDENTIFIER_decode_aper OCTET_STRING_decode_aper +#define OBJECT_IDENTIFIER_encode_aper OCTET_STRING_encode_aper + +/********************************** + * Some handy conversion routines * + **********************************/ + +/* + * This function fills an (arcs) array with OBJECT IDENTIFIER arcs + * up to specified (arc_slots) elements. + * + * EXAMPLE: + * void print_arcs(OBJECT_IDENTIFIER_t *oid) { + * asn_oid_arc_t fixed_arcs[10]; // Try with fixed space first + * asn_oid_arc_t *arcs = fixed_arcs; + * size_t arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10 + * ssize_t count; // Real number of arcs. + * int i; + * + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * // If necessary, reallocate arcs array and try again. + * if(count > arc_slots) { + * arc_slots = count; + * arcs = malloc(sizeof(asn_oid_arc_t) * arc_slots); + * if(!arcs) return; + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * assert(count == arc_slots); + * } + * + * // Print the contents of the arcs array. + * for(i = 0; i < count; i++) + * printf("%"PRIu32"\n", arcs[i]); + * + * // Avoid memory leak. + * if(arcs != fixed_arcs) free(arcs); + * } + * + * RETURN VALUES: + * -1/EINVAL: Invalid arguments (oid is missing) + * -1/ERANGE: One or more arcs have value out of array cell type range. + * >=0: Number of arcs contained in the OBJECT IDENTIFIER + * + * WARNING: The function always returns the actual number of arcs, + * even if there is no sufficient (arc_slots) provided. + */ +ssize_t OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid, + asn_oid_arc_t *arcs, size_t arc_slots); + +/* + * This functions initializes the OBJECT IDENTIFIER object with + * the given set of arcs. + * The minimum of two arcs must be present; some restrictions apply. + * RETURN VALUES: + * -1/EINVAL: Invalid arguments + * -1/ERANGE: The first two arcs do not conform to ASN.1 restrictions. + * -1/ENOMEM: Memory allocation failed + * 0: The object was initialized with new arcs. + */ +int OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, + const asn_oid_arc_t *arcs, size_t arcs_count); + + +/* + * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363"). + * No arc can exceed the (0..ASN_OID_ARC_MAX, which is the same as UINT32_MAX). + * This function is not specific to OBJECT IDENTIFIER, it may be used to parse + * the RELATIVE-OID data, or any other data consisting of dot-separated + * series of numeric values. + * + * If (oid_txt_length == -1), the strlen() will be invoked to determine the + * size of the (oid_text) string. + * + * After return, the optional (opt_oid_text_end) is set to the character after + * the last parsed one. (opt_oid_text_end) is never less than (oid_text). + * + * RETURN VALUES: + * -1: Parse error. + * >= 0: Number of arcs contained in the OBJECT IDENTIFIER. + * + * WARNING: The function always returns the real number of arcs, + * even if there is no sufficient (arc_slots) provided. + * This is useful for (arc_slots) value estimation. + */ +ssize_t OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, + ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end); + +/* + * Internal functions. + * Used by RELATIVE-OID implementation in particular. + */ + +/* + * Retrieve a single arc of size from the (arcbuf) buffer. + * RETURN VALUES: + * -1: Failed to retrieve the value from the (arcbuf). + * >0: Number of bytes consumed from the (arcbuf), <= (arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, + size_t arcbuf_len, + asn_oid_arc_t *ret_value); + +/* + * Write the unterminated arc value into the (arcbuf) which has the size at + * least (arcbuf_len). + * RETURN VALUES: + * -1: (arcbuf_len) size is not sufficient to write the value. + * : Number of bytes appended to the arcbuf (<= arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t arc_value); + +#ifdef __cplusplus +} +#endif + +#endif /* _OBJECT_IDENTIFIER_H_ */ diff --git a/lib/s1ap3/asn1c/OCTET_STRING.c b/lib/s1ap3/asn1c/OCTET_STRING.c new file mode 100644 index 0000000000..5779330702 --- /dev/null +++ b/lib/s1ap3/asn1c/OCTET_STRING.c @@ -0,0 +1,2409 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ +#include + +/* + * OCTET STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { + sizeof(OCTET_STRING_t), + offsetof(OCTET_STRING_t, _asn_ctx), + ASN_OSUBV_STR +}; + +asn_TYPE_operation_t asn_OP_OCTET_STRING = { + OCTET_STRING_free, + OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, /* Unaligned PER decoder */ + OCTET_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { + "OCTET STRING", /* Canonical name */ + "OCTET_STRING", /* XML tag name */ + &asn_OP_OCTET_STRING, + asn_DEF_OCTET_STRING_tags, + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + asn_DEF_OCTET_STRING_tags, /* Same as above */ + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs +}; + +#undef _CH_PHASE +#undef NEXT_PHASE +#undef PREV_PHASE +#define _CH_PHASE(ctx, inc) do { \ + if(ctx->phase == 0) \ + ctx->context = 0; \ + ctx->phase += inc; \ + } while(0) +#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) +#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +#undef APPEND +#define APPEND(bufptr, bufsize) do { \ + size_t _bs = (bufsize); /* Append size */ \ + size_t _ns = ctx->context; /* Allocated now */ \ + size_t _es = st->size + _bs; /* Expected size */ \ + /* int is really a typeof(st->size): */ \ + if((int)_es < 0) RETURN(RC_FAIL); \ + if(_ns <= _es) { \ + void *ptr; \ + /* Be nice and round to the memory allocator */ \ + do { _ns = _ns ? _ns << 1 : 16; } \ + while(_ns <= _es); \ + /* int is really a typeof(st->size): */ \ + if((int)_ns < 0) RETURN(RC_FAIL); \ + ptr = REALLOC(st->buf, _ns); \ + if(ptr) { \ + st->buf = (uint8_t *)ptr; \ + ctx->context = _ns; \ + } else { \ + RETURN(RC_FAIL); \ + } \ + ASN_DEBUG("Reallocating into %ld", (long)_ns); \ + } \ + memcpy(st->buf + st->size, bufptr, _bs); \ + /* Convenient nul-termination */ \ + st->buf[_es] = '\0'; \ + st->size = _es; \ + } while(0) + +/* + * The main reason why ASN.1 is still alive is that too much time and effort + * is necessary for learning it more or less adequately, thus creating a gut + * necessity to demonstrate that aquired skill everywhere afterwards. + * No, I am not going to explain what the following stuff is. + */ +struct _stack_el { + ber_tlv_len_t left; /* What's left to read (or -1) */ + ber_tlv_len_t got; /* What was actually processed */ + unsigned cont_level; /* Depth of subcontainment */ + int want_nulls; /* Want null "end of content" octets? */ + int bits_chopped; /* Flag in BIT STRING mode */ + ber_tlv_tag_t tag; /* For debugging purposes */ + struct _stack_el *prev; + struct _stack_el *next; +}; +struct _stack { + struct _stack_el *tail; + struct _stack_el *cur_ptr; +}; + +static struct _stack_el * +OS__add_stack_el(struct _stack *st) { + struct _stack_el *nel; + + /* + * Reuse the old stack frame or allocate a new one. + */ + if(st->cur_ptr && st->cur_ptr->next) { + nel = st->cur_ptr->next; + nel->bits_chopped = 0; + nel->got = 0; + /* Retain the nel->cont_level, it's correct. */ + } else { + nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); + if(nel == NULL) + return NULL; + + if(st->tail) { + /* Increase a subcontainment depth */ + nel->cont_level = st->tail->cont_level + 1; + st->tail->next = nel; + } + nel->prev = st->tail; + st->tail = nel; + } + + st->cur_ptr = nel; + + return nel; +} + +static struct _stack * +_new_stack(void) { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + asn_dec_rval_t rval; + asn_struct_ctx_t *ctx; + ssize_t consumed_myself = 0; + struct _stack *stck; /* Expectations stack structure */ + struct _stack_el *sel = 0; /* Stack element */ + int tlv_constr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + + ASN_DEBUG("Decoding %s as %s (frame %ld)", + td->name, + (type_variant == ASN_OSUBV_STR) ? + "OCTET STRING" : "OS-SpecialCase", + (long)size); + + /* + * Create the string if does not exist. + */ + if(st == NULL) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) RETURN(RC_FAIL); + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + switch(ctx->phase) { + case 0: + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, ctx, + buf_ptr, size, tag_mode, -1, + &ctx->left, &tlv_constr); + if(rval.code != RC_OK) + return rval; + + if(tlv_constr) { + /* + * Complex operation, requires stack of expectations. + */ + ctx->ptr = _new_stack(); + if(!ctx->ptr) { + RETURN(RC_FAIL); + } + } else { + /* + * Jump into stackless primitive decoding. + */ + _CH_PHASE(ctx, 3); + if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) + APPEND(buf_ptr, rval.consumed); + ADVANCE(rval.consumed); + goto phase3; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + phase1: + /* + * Fill the stack with expectations. + */ + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + do { + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_tag_t expected_tag; + ssize_t tl, ll, tlvl; + /* This one works even if (sel->left == -1) */ + size_t Left = ((!sel||(size_t)sel->left >= size) + ?size:(size_t)sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)(sel?sel->got:0) + ); + if(sel && sel->left <= 0 && sel->want_nulls == 0) { + if(sel->prev) { + struct _stack_el *prev = sel->prev; + if(prev->left != -1) { + if(prev->left < sel->got) + RETURN(RC_FAIL); + prev->left -= sel->got; + } + prev->got += sel->got; + sel = stck->cur_ptr = prev; + if(!sel) break; + tlv_constr = 1; + continue; + } else { + sel = stck->cur_ptr = 0; + break; /* Nothing to wait */ + } + } + + tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); + ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", + (long)size, (long)Left, sel?"":"!", + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)tl); + switch(tl) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); + + ll = ber_fetch_length(tlv_constr, + (const char *)buf_ptr + tl,Left - tl,&tlv_len); + ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", + ber_tlv_tag_string(tlv_tag), tlv_constr, + (long)Left, (long)tl, (long)tlv_len, (long)ll); + switch(ll) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + if(sel && sel->want_nulls + && ((const uint8_t *)buf_ptr)[0] == 0 + && ((const uint8_t *)buf_ptr)[1] == 0) + { + + ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); + + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND("\0\0", 2); + + ADVANCE(2); + sel->got += 2; + if(sel->left != -1) { + sel->left -= 2; /* assert(sel->left >= 2) */ + } + + sel->want_nulls--; + if(sel->want_nulls == 0) { + /* Move to the next expectation */ + sel->left = 0; + tlv_constr = 1; + } + + continue; + } + + /* + * Set up expected tags, + * depending on ASN.1 type being decoded. + */ + switch(type_variant) { + case ASN_OSUBV_BIT: + /* X.690: 8.6.4.1, NOTE 2 */ + /* Fall through */ + case ASN_OSUBV_STR: + default: + if(sel) { + unsigned level = sel->cont_level; + if(level < td->all_tags_count) { + expected_tag = td->all_tags[level]; + break; + } else if(td->all_tags_count) { + expected_tag = td->all_tags + [td->all_tags_count - 1]; + break; + } + /* else, Fall through */ + } + /* Fall through */ + case ASN_OSUBV_ANY: + expected_tag = tlv_tag; + break; + } + + + if(tlv_tag != expected_tag) { + char buf[2][32]; + ber_tlv_tag_snprint(tlv_tag, + buf[0], sizeof(buf[0])); + ber_tlv_tag_snprint(td->tags[td->tags_count-1], + buf[1], sizeof(buf[1])); + ASN_DEBUG("Tag does not match expectation: %s != %s", + buf[0], buf[1]); + RETURN(RC_FAIL); + } + + tlvl = tl + ll; /* Combined length of T and L encoding */ + if((tlv_len + tlvl) < 0) { + /* tlv_len value is too big */ + ASN_DEBUG("TLV encoding + length (%ld) is too big", + (long)tlv_len); + RETURN(RC_FAIL); + } + + /* + * Append a new expectation. + */ + sel = OS__add_stack_el(stck); + if(!sel) RETURN(RC_FAIL); + + sel->tag = tlv_tag; + + sel->want_nulls = (tlv_len==-1); + if(sel->prev && sel->prev->left != -1) { + /* Check that the parent frame is big enough */ + if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) + RETURN(RC_FAIL); + if(tlv_len == -1) + sel->left = sel->prev->left - tlvl; + else + sel->left = tlv_len; + } else { + sel->left = tlv_len; + } + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND(buf_ptr, tlvl); + sel->got += tlvl; + ADVANCE(tlvl); + + ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", + (long)sel->got, (long)sel->left, + sel->want_nulls, sel->cont_level); + + } while(tlv_constr); + if(sel == NULL) { + /* Finished operation, "phase out" */ + ASN_DEBUG("Phase out"); + _CH_PHASE(ctx, +3); + break; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 2: + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", + (long)sel->left, (long)size, (long)sel->got, + sel->want_nulls); + { + ber_tlv_len_t len; + + assert(sel->left >= 0); + + len = ((ber_tlv_len_t)size < sel->left) + ? (ber_tlv_len_t)size : sel->left; + if(len > 0) { + if(type_variant == ASN_OSUBV_BIT + && sel->bits_chopped == 0) { + /* Put the unused-bits-octet away */ + st->bits_unused = *(const uint8_t *)buf_ptr; + APPEND(((const char *)buf_ptr+1), (len - 1)); + sel->bits_chopped = 1; + } else { + APPEND(buf_ptr, len); + } + ADVANCE(len); + sel->left -= len; + sel->got += len; + } + + if(sel->left) { + ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", + (long)sel->left, (long)size, sel->want_nulls); + RETURN(RC_WMORE); + } + + PREV_PHASE(ctx); + goto phase1; + } + break; + case 3: + phase3: + /* + * Primitive form, no stack required. + */ + assert(ctx->left >= 0); + + if(size < (size_t)ctx->left) { + if(!size) RETURN(RC_WMORE); + if(type_variant == ASN_OSUBV_BIT && !ctx->context) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, size); + assert(ctx->context > 0); + ctx->left -= size; + ADVANCE(size); + RETURN(RC_WMORE); + } else { + if(type_variant == ASN_OSUBV_BIT + && !ctx->context && ctx->left) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, ctx->left); + ADVANCE(ctx->left); + ctx->left = 0; + + NEXT_PHASE(ctx); + } + break; + } + + if(sel) { + ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", + (void *)sel->prev, sel->want_nulls, + (long)sel->left, (long)sel->got, (long)size); + if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { + RETURN(RC_WMORE); + } + } + + /* + * BIT STRING-specific processing. + */ + if(type_variant == ASN_OSUBV_BIT) { + if(st->size) { + if(st->bits_unused < 0 || st->bits_unused > 7) { + RETURN(RC_FAIL); + } + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } else { + if(st->bits_unused) { + RETURN(RC_FAIL); + } + } + } + + ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", + (long)consumed_myself, td->name, + (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", + (long)st->size); + + + RETURN(RC_OK); +} + +/* + * Encode OCTET STRING type using DER. + */ +asn_enc_rval_t +OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + int fix_last_byte = 0; + + ASN_DEBUG("%s %s as OCTET STRING", + cb?"Estimating":"Encoding", td->name); + + /* + * Write tags. + */ + if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { + er.encoded = der_write_tags(td, + (type_variant == ASN_OSUBV_BIT) + st->size, + tag_mode, type_variant == ASN_OSUBV_ANY, tag, + cb, app_key); + if(er.encoded == -1) { + er.failed_type = td; + er.structure_ptr = sptr; + return er; + } + } else { + /* Disallow: [] IMPLICIT ANY */ + assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); + er.encoded = 0; + } + + if(!cb) { + er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; + ASN__ENCODED_OK(er); + } + + /* + * Prepare to deal with the last octet of BIT STRING. + */ + if(type_variant == ASN_OSUBV_BIT) { + uint8_t b = st->bits_unused & 0x07; + if(b && st->size) fix_last_byte = 1; + ASN__CALLBACK(&b, 1); + } + + /* Invoke callback for the main part of the buffer */ + ASN__CALLBACK(st->buf, st->size - fix_last_byte); + + /* The last octet should be stripped off the unused bits */ + if(fix_last_byte) { + uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); + ASN__CALLBACK(&b, 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_enc_rval_t +OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + if(flags & XER_F_CANONICAL) { + char *scend = scratch + (sizeof(scratch) - 2); + for(; buf < end; buf++) { + if(p >= scend) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + ASN__TEXT_INDENT(1, ilevel); + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + if(p - scratch) { + p--; /* Remove the tail space */ + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + if(st->size > 16) + ASN__TEXT_INDENT(1, ilevel-1); + } + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__xer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__xer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +static int +OS__check_escaped_control_char(const void *buf, int size) { + size_t i; + /* + * Inefficient algorithm which translates the escape sequences + * defined above into characters. Returns -1 if not found. + * TODO: replace by a faster algorithm (bsearch(), hash or + * nested table lookups). + */ + for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { + const struct OCTET_STRING__xer_escape_table_s *el; + el = &OCTET_STRING__xer_escape_table[i]; + if(el->size == size && memcmp(buf, el->string, size) == 0) + return i; + } + return -1; +} + +static int +OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { + /* + * This might be one of the escape sequences + * for control characters. Check it out. + * #11.15.5 + */ + int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); + if(control_char >= 0) { + OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; + void *p = REALLOC(st->buf, st->size + 2); + if(p) { + st->buf = (uint8_t *)p; + st->buf[st->size++] = control_char; + st->buf[st->size] = '\0'; /* nul-termination */ + return 0; + } + } + + return -1; /* No, it's not */ +} + +asn_enc_rval_t +OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__xer_escape_table) + /sizeof(OCTET_STRING__xer_escape_table[0]) + && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, + app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + +/* + * Convert from hexadecimal format (cstring): "AB CD EF" + */ +static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *chunk_stop = (const char *)chunk_buf; + const char *p = chunk_stop; + const char *pend = p + chunk_size; + unsigned int clv = 0; + int half = 0; /* Half bit */ + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * If something like " a b c " appears here, the " a b":3 will be + * converted, and the rest skipped. That is, unless buf_size is greater + * than chunk_size, then it'll be equivalent to "ABC0". + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + continue; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + clv = (clv << 4) + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + clv = (clv << 4) + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + clv = (clv << 4) + (ch - 0x61 + 10); + break; + default: + *buf = 0; /* JIC */ + return -1; + } + if(half++) { + half = 0; + *buf++ = clv; + chunk_stop = p + 1; + } + } + + /* + * Check partial decoding. + */ + if(half) { + if(have_more) { + /* + * Partial specification is fine, + * because no more more PXER_TEXT data is available. + */ + *buf++ = clv << 4; + chunk_stop = p; + } + } else { + chunk_stop = p; + } + + st->size = buf - st->buf; /* Adjust the buffer size */ + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return (chunk_stop - (const char *)chunk_buf); /* Converted size */ +} + +/* + * Convert from binary format: "00101011101" + */ +static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + BIT_STRING_t *st = (BIT_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + int bits_unused = st->bits_unused & 0x7; + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 7) / 8; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + (void)have_more; + + if(bits_unused == 0) + bits_unused = 8; + else if(st->size) + buf--; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + break; + case 0x30: + case 0x31: + if(bits_unused-- <= 0) { + *++buf = 0; /* Clean the cell */ + bits_unused = 7; + } + *buf |= (ch&1) << bits_unused; + break; + default: + st->bits_unused = bits_unused; + return -1; + } + } + + if(bits_unused == 8) { + st->size = buf - st->buf; + st->bits_unused = 0; + } else { + st->size = buf - st->buf + 1; + st->bits_unused = bits_unused; + } + + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Something like strtod(), but with stricter rules. + */ +static int +OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { + const int32_t last_unicode_codepoint = 0x10ffff; + int32_t val = 0; + const char *p; + + for(p = buf; p < end; p++) { + int ch = *p; + + switch(ch) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + val = val * base + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + val = val * base + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + val = val * base + (ch - 0x61 + 10); + break; + case 0x3b: /* ';' */ + *ret_value = val; + return (p - buf) + 1; + default: + return -1; /* Character set error */ + } + + /* Value exceeds the Unicode range. */ + if(val > last_unicode_codepoint) { + return -1; + } + } + + *ret_value = -1; + return (p - buf); +} + +/* + * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" + */ +static ssize_t +OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, + size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + uint8_t *buf; + + /* Reallocate buffer */ + size_t new_size = st->size + chunk_size; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + int len; /* Length of the rest of the chunk */ + + if(ch != 0x26 /* '&' */) { + *buf++ = ch; + continue; /* That was easy... */ + } + + /* + * Process entity reference. + */ + len = chunk_size - (p - (const char *)chunk_buf); + if(len == 1 /* "&" */) goto want_more; + if(p[1] == 0x23 /* '#' */) { + const char *pval; /* Pointer to start of digits */ + int32_t val = 0; /* Entity reference value */ + int base; + + if(len == 2 /* "&#" */) goto want_more; + if(p[2] == 0x78 /* 'x' */) + pval = p + 3, base = 16; + else + pval = p + 2, base = 10; + len = OS__strtoent(base, pval, p + len, &val); + if(len == -1) { + /* Invalid charset. Just copy verbatim. */ + *buf++ = ch; + continue; + } + if(!len || pval[len-1] != 0x3b) goto want_more; + assert(val > 0); + p += (pval - p) + len - 1; /* Advance past entref */ + + if(val < 0x80) { + *buf++ = (char)val; + } else if(val < 0x800) { + *buf++ = 0xc0 | ((val >> 6)); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x10000) { + *buf++ = 0xe0 | ((val >> 12)); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x200000) { + *buf++ = 0xf0 | ((val >> 18)); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x4000000) { + *buf++ = 0xf8 | ((val >> 24)); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else { + *buf++ = 0xfc | ((val >> 30) & 0x1); + *buf++ = 0x80 | ((val >> 24) & 0x3f); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } + } else { + /* + * Ugly, limited parsing of & > < + */ + char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); + if(!sc) goto want_more; + if((sc - p) == 4 + && p[1] == 0x61 /* 'a' */ + && p[2] == 0x6d /* 'm' */ + && p[3] == 0x70 /* 'p' */) { + *buf++ = 0x26; + p = sc; + continue; + } + if((sc - p) == 3) { + if(p[1] == 0x6c) { + *buf = 0x3c; /* '<' */ + } else if(p[1] == 0x67) { + *buf = 0x3e; /* '>' */ + } else { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + if(p[2] != 0x74) { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + buf++; + p = sc; + continue; + } + /* Unsupported entity reference */ + *buf++ = ch; + } + + continue; + want_more: + if(have_more) { + /* + * We know that no more data (of the same type) + * is coming. Copy the rest verbatim. + */ + *buf++ = ch; + continue; + } + chunk_size = (p - (const char *)chunk_buf); + /* Processing stalled: need more data */ + break; + } + + st->size = buf - st->buf; + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Decode OCTET STRING from the XML element's body. + */ +static asn_dec_rval_t +OCTET_STRING__decode_xer( + const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size, int have_more)) { + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t *ctx; /* Per-structure parser context */ + asn_dec_rval_t rval; /* Return value from the decoder */ + int st_allocated; + + /* + * Create the string if does not exist. + */ + if(!st) { + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + *sptr = (void *)st; + if(!st) goto sta_failed; + st_allocated = 1; + } else { + st_allocated = 0; + } + if(!st->buf) { + /* This is separate from above section */ + st->buf = (uint8_t *)CALLOC(1, 1); + if(!st->buf) { + if(st_allocated) { + *sptr = 0; + goto stb_failed; + } else { + goto sta_failed; + } + } + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); + + return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, + buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); + +stb_failed: + FREEMEM(st); +sta_failed: + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; +} + +/* + * Decode OCTET STRING from the hexadecimal data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); +} + +/* + * Decode OCTET STRING from the binary (0/1) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_binary); +} + +/* + * Decode OCTET STRING from the string (ASCII/UTF-8) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, + OCTET_STRING__handle_control_chars, + OCTET_STRING__convert_entrefs); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +static int +OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", + (int)units, lb, ub, unit_bits); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Decode without translation */ + lb = 0; + } else if(pc && pc->code2value) { + if(unit_bits > 16) + return 1; /* FATAL: can't have constrained + * UniversalString with more than + * 16 million code points */ + for(; buf < end; buf += bpc) { + int value; + int code = per_get_few_bits(po, unit_bits); + if(code < 0) return -1; /* WMORE */ + value = pc->code2value(code); + if(value < 0) { + ASN_DEBUG("Code %d (0x%02x) is" + " not in map (%ld..%ld)", + code, code, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = value; break; + case 2: buf[0] = value >> 8; buf[1] = value; break; + case 4: buf[0] = value >> 24; buf[1] = value >> 16; + buf[2] = value >> 8; buf[3] = value; break; + } + } + return 0; + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_get_many_bits(po, buf, 0, unit_bits * units); + } + + for(; buf < end; buf += bpc) { + int32_t code = per_get_few_bits(po, unit_bits); + int32_t ch = code + lb; + if(code < 0) return -1; /* WMORE */ + if(ch > ub) { + ASN_DEBUG("Code %d is out of range (%ld..%ld)", + ch, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = ch; break; + case 2: buf[0] = ch >> 8; buf[1] = ch; break; + case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; + buf[2] = ch >> 8; buf[3] = ch; break; + } + } + + return 0; +} + +static int +OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + const uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", + (int)units, lb, ub, unit_bits, bpc); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Encode as is */ + lb = 0; + } else if(pc && pc->value2code) { + for(; buf < end; buf += bpc) { + int code; + uint32_t value; + switch(bpc) { + case 1: value = *(const uint8_t *)buf; break; + case 2: value = (buf[0] << 8) | buf[1]; break; + case 4: value = (buf[0] << 24) | (buf[1] << 16) + | (buf[2] << 8) | buf[3]; break; + default: return -1; + } + code = pc->value2code(value); + if(code < 0) { + ASN_DEBUG("Character %d (0x%02x) is" + " not in map (%ld..%ld)", + *buf, *buf, lb, ub); + return -1; + } + if(per_put_few_bits(po, code, unit_bits)) + return -1; + } + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_put_many_bits(po, buf, unit_bits * units); + } + + for(ub -= lb; buf < end; buf += bpc) { + int ch; + uint32_t value; + switch(bpc) { + case 1: + value = *(const uint8_t *)buf; + break; + case 2: + value = (buf[0] << 8) | buf[1]; + break; + case 4: + value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + break; + default: + return -1; + } + ch = value - lb; + if(ch < 0 || ch > ub) { + ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, + value, lb, ub + lb); + return -1; + } + if(per_put_few_bits(po, ch, unit_bits)) return -1; + } + + return 0; +} + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); + break; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if(bpc) { + ASN_DEBUG("Encoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Encoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len * bpc; + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, + bpc, unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + size_t size_in_units; + const uint8_t *buf; + int ret; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN__ENCODE_FAILED; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + size_in_units = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + size_in_units = st->size >> 1; + if(st->size & 1) { + ASN_DEBUG("%s string size is not modulo 2", td->name); + ASN__ENCODE_FAILED; + } + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + size_in_units = st->size >> 2; + if(st->size & 3) { + ASN_DEBUG("%s string size is not modulo 4", td->name); + ASN__ENCODE_FAILED; + } + break; + } + + ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_units, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_units < csiz->lower_bound + || (ssize_t)size_in_units > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, + size_in_units - csiz->lower_bound, csiz->effective_bits); + ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, + unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, + need_eom ? ",+EOM" : ""); + + ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save * bpc; + size_in_units -= may_save; + assert(!(may_save & 0x07) || !size_in_units); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_units); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: +/* case ASN_OSUBV_ANY: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; +*/ + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + cval = &asn_DEF_OCTET_STRING_constraints.value; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + if(bpc) { + ASN_DEBUG("Decoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Decoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + if(bpc == 0) { + int ubs = (csiz->upper_bound & 0x7); + st->bits_unused = ubs ? 8 - ubs : 0; + } + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + if (csiz->upper_bound - csiz->lower_bound == 0) + /* Indefinite length case */ + raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); + else + raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); + repeat = 0; + if(raw_len < 0) RETURN(RC_WMORE); + raw_len += csiz->lower_bound; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + + if (raw_len > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + + if(bpc) { + len_bytes = raw_len * bpc; + len_bits = len_bytes * unit_bits; + } else { + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) + st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + } + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + if(bpc) { + ret = OCTET_STRING_per_get_characters(pd, + &st->buf[st->size], raw_len, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ret = per_get_many_bits(pd, &st->buf[st->size], + 0, len_bits); + } + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + unsigned int sizeinunits; + const uint8_t *buf; + int ret; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + /* case ASN_OSUBV_ANY: + ASN__ENCODE_FAILED; + */ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + sizeinunits = st->size * 8 - (st->bits_unused & 0x07); + ASN_DEBUG("BIT STRING of %d bytes", + sizeinunits); + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = 8; +*/ + bpc = OS__BPC_CHAR; + sizeinunits = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + sizeinunits = st->size / 2; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + sizeinunits = st->size / 4; + break; + } + + ASN_DEBUG("Encoding %s into %d units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, sizeinunits, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out wheter size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((int)sizeinunits < csiz->lower_bound + || (int)sizeinunits > csiz->upper_bound) { + if(ct_extensible) { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else + ASN__ENCODE_FAILED; + } + } else { + inext = 0; + } + + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits >= 0) { + ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", + st->size, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + if (csiz->effective_bits > 0) { + ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); + if(ret) ASN__ENCODE_FAILED; + } + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + } + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, st->buf, + sizeinunits, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, st->buf, + sizeinunits * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %lu bytes", st->size); + + if(sizeinunits == 0) { + if(aper_put_length(po, -1, 0)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + ssize_t maySave = aper_put_length(po, -1, sizeinunits); + + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %ld of %ld", + (long)maySave, (long)sizeinunits); + + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, buf, + maySave, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, buf, maySave * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + + if(bpc) + buf += maySave * bpc; + else + buf += maySave >> 3; + sizeinunits -= maySave; + assert(!(maySave & 0x07) || !sizeinunits); + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + (void)td; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + _i_INDENT(1); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Remove the tail space */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + return 0; +} + +int +OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st && (st->buf || !st->size)) { + return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + struct _stack *stck; + + if(!td || !st) + return; + + specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + ASN_DEBUG("Freeing %s as OCTET STRING", td->name); + + if(st->buf) { + FREEMEM(st->buf); + st->buf = 0; + } + + /* + * Remove decode-time stack. + */ + stck = (struct _stack *)ctx->ptr; + if(stck) { + while(stck->tail) { + struct _stack_el *sel = stck->tail; + stck->tail = sel->prev; + FREEMEM(sel); + } + FREEMEM(stck); + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, + td->specifics + ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) + ->struct_size + : sizeof(OCTET_STRING_t)); + break; + } +} + +/* + * Conversion routines. + */ +int +OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { + void *buf; + + if(st == 0 || (str == 0 && len)) { + errno = EINVAL; + return -1; + } + + /* + * Clear the OCTET STRING. + */ + if(str == NULL) { + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + return 0; + } + + /* Determine the original string size, if not explicitly given */ + if(len < 0) + len = strlen(str); + + /* Allocate and fill the memory */ + buf = MALLOC(len + 1); + if(buf == NULL) + return -1; + + memcpy(buf, str, len); + ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ + FREEMEM(st->buf); + st->buf = (uint8_t *)buf; + st->size = len; + + return 0; +} + +OCTET_STRING_t * +OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, + int len) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st; + + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + if(st && str && OCTET_STRING_fromBuf(st, str, len)) { + FREEMEM(st); + st = NULL; + } + + return st; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + const OCTET_STRING_t *a = aptr; + const OCTET_STRING_t *b = bptr; + + assert(!specs || specs->subvariant != ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + return 0; + } + } else { + return ret < 0 ? -1 : 1; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +/* + * Biased function for randomizing character values around their limits. + */ +static uint32_t +OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { + assert(lb <= ub); + switch(asn_random_between(0, 16)) { + case 0: + if(lb < ub) return lb + 1; + /* Fall through */ + case 1: + return lb; + case 2: + if(lb < ub) return ub - 1; + /* Fall through */ + case 3: + return ub; + default: + return asn_random_between(lb, ub); + } +} + + +size_t +OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *td, + const asn_encoding_constraints_t *constraints, size_t max_length) { + const unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + size_t rnd_len; + + /* Figure out how far we should go */ + rnd_len = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length <= (size_t)pc->lower_bound) { + return pc->lower_bound; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_len = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_len = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_len from the table */ + if(rnd_len <= max_length) { + break; + } + /* Fall through */ + default: + rnd_len = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_len = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_len = asn_random_between(0, max_length); + } + } else if(rnd_len > max_length) { + rnd_len = asn_random_between(0, max_length); + } + + return rnd_len; +} + +asn_random_fill_result_t +OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + unsigned int unit_bytes = 1; + unsigned long clb = 0; /* Lower bound on char */ + unsigned long cub = 255; /* Higher bound on char value */ + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_len; + OCTET_STRING_t *st; + + if(max_length == 0 && !*sptr) return result_skipped; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + /* Handled by BIT_STRING itself. */ + return result_failed; + case ASN_OSUBV_STR: + unit_bytes = 1; + clb = 0; + cub = 255; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + clb = 0; + cub = 65535; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + clb = 0; + cub = 0x10FFFF; + break; + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_SEMI_CONSTRAINED) { + clb = pc->lower_bound; + } else if(pc->flags & APC_CONSTRAINED) { + clb = pc->lower_bound; + cub = pc->upper_bound; + } + } + + rnd_len = + OCTET_STRING_random_length_constrained(td, constraints, max_length); + + buf = CALLOC(unit_bytes, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[unit_bytes * rnd_len]; + + switch(unit_bytes) { + case 1: + for(b = buf; b < bend; b += unit_bytes) { + *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); + } + *(uint8_t *)b = 0; + break; + case 2: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 8; + b[1] = code; + } + *(uint16_t *)b = 0; + break; + case 4: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 24; + b[1] = code >> 16; + b[2] = code >> 8; + b[3] = code; + } + *(uint32_t *)b = 0; + break; + } + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = unit_bytes * rnd_len; + + result_ok.length = st->size; + return result_ok; +} diff --git a/lib/s1ap3/asn1c/OCTET_STRING.h b/lib/s1ap3/asn1c/OCTET_STRING.h new file mode 100644 index 0000000000..c2f8baed1d --- /dev/null +++ b/lib/s1ap3/asn1c/OCTET_STRING.h @@ -0,0 +1,102 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OCTET_STRING_H_ +#define _OCTET_STRING_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct OCTET_STRING { + uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ + size_t size; /* Size of the buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} OCTET_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; +extern asn_TYPE_operation_t asn_OP_OCTET_STRING; + +asn_struct_free_f OCTET_STRING_free; +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +asn_struct_compare_f OCTET_STRING_compare; +ber_type_decoder_f OCTET_STRING_decode_ber; +der_type_encoder_f OCTET_STRING_encode_der; +xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ +xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ +xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ +xer_type_encoder_f OCTET_STRING_encode_xer; +xer_type_encoder_f OCTET_STRING_encode_xer_utf8; +oer_type_decoder_f OCTET_STRING_decode_oer; +oer_type_encoder_f OCTET_STRING_encode_oer; +per_type_decoder_f OCTET_STRING_decode_uper; +per_type_encoder_f OCTET_STRING_encode_uper; +per_type_decoder_f OCTET_STRING_decode_aper; +per_type_encoder_f OCTET_STRING_encode_aper; +asn_random_fill_f OCTET_STRING_random_fill; + +#define OCTET_STRING_constraint asn_generic_no_constraint +#define OCTET_STRING_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* + * This function clears the previous value of the OCTET STRING (if any) + * and then allocates a new memory with the specified content (str/size). + * If size = -1, the size of the original string will be determined + * using strlen(str). + * If str equals to NULL, the function will silently clear the + * current contents of the OCTET STRING. + * Returns 0 if it was possible to perform operation, -1 otherwise. + */ +int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); + +/* Handy conversion from the C string into the OCTET STRING. */ +#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) + +/* + * Allocate and fill the new OCTET STRING and return a pointer to the newly + * allocated object. NULL is permitted in str: the function will just allocate + * empty OCTET STRING. + */ +OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, + const char *str, int size); + +/**************************** + * Internally useful stuff. * + ****************************/ + +typedef struct asn_OCTET_STRING_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the structure */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + enum asn_OS_Subvariant { + ASN_OSUBV_ANY, /* The open type (ANY) */ + ASN_OSUBV_BIT, /* BIT STRING */ + ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ + ASN_OSUBV_U16, /* 16-bit character (BMPString) */ + ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ + } subvariant; +} asn_OCTET_STRING_specifics_t; + +extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; + +size_t OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, + size_t max_length); + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/lib/s1ap3/asn1c/OCTET_STRING_oer.c b/lib/s1ap3/asn1c/OCTET_STRING_oer.c new file mode 100644 index 0000000000..c16faeafbe --- /dev/null +++ b/lib/s1ap3/asn1c/OCTET_STRING_oer.c @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_DISABLE_OER_SUPPORT + +#include +#include +#include + +asn_dec_rval_t +OCTET_STRING_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + asn_dec_rval_t rval = {RC_OK, 0}; + size_t expected_length = 0; + + size_t unit_bytes; + switch(specs->subvariant) { + default: + case ASN_OSUBV_BIT: + ASN_DEBUG("Invalid use of OCTET STRING to decode BIT STRING"); + ASN__DECODE_FAILED; + case ASN_OSUBV_ANY: + /* Fall through */ + case ASN_OSUBV_STR: + unit_bytes = 1; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + break; + } + + (void)opt_codec_ctx; + + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) ASN__DECODE_FAILED; + } + + if(ct_size >= 0) { + expected_length = unit_bytes * ct_size; + } else { + /* + * X.696 (08/2015) #27.2 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + ssize_t len_len = oer_fetch_length(ptr, size, &expected_length); + if(len_len > 0) { + rval.consumed = len_len; + ptr = (const char *)ptr + len_len; + size -= len_len; + } else if(len_len == 0) { + ASN__DECODE_STARVED; + } else if(len_len < 0) { + ASN__DECODE_FAILED; + } + + if(expected_length % unit_bytes != 0) { + ASN_DEBUG( + "Data size %" ASN_PRI_SIZE " bytes is not consistent with multiplier %" ASN_PRI_SIZE "", + expected_length, unit_bytes); + ASN__DECODE_FAILED; + } + } + + if(size < expected_length) { + ASN__DECODE_STARVED; + } else { + uint8_t *buf = MALLOC(expected_length + 1); + if(buf == NULL) { + ASN__DECODE_FAILED; + } else { + memcpy(buf, ptr, expected_length); + buf[expected_length] = '\0'; + } + FREEMEM(st->buf); + st->buf = buf; + st->size = expected_length; + + rval.consumed += expected_length; + return rval; + } +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +OCTET_STRING_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + const asn_oer_constraints_t *cts = + constraints ? constraints : td->encoding_constraints.oer_constraints; + ssize_t ct_size = cts ? cts->size : -1; + asn_enc_rval_t er = {0, 0, 0}; + + if(!st) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s %" ASN_PRI_SIZE " as OCTET STRING", td ? td->name : "", st->size); + + if(ct_size >= 0) { + /* + * Check that available data matches the constraint + */ + size_t unit_bytes; + switch(specs->subvariant) { + default: + case ASN_OSUBV_BIT: + ASN_DEBUG("Invalid use of OCTET STRING to encode BIT STRING"); + ASN__ENCODE_FAILED; + case ASN_OSUBV_ANY: + /* Fall through */ + case ASN_OSUBV_STR: + unit_bytes = 1; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + break; + } + + if(st->size != unit_bytes * (size_t)ct_size) { + ASN_DEBUG( + "Trying to encode %s (%" ASN_PRI_SIZE " bytes) which doesn't fit SIZE " + "constraint (%" ASN_PRI_SIZE ")", + td->name, st->size, ct_size); + ASN__ENCODE_FAILED; + } + } else { + /* + * X.696 (08/2015) #27.2 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + ssize_t ret = oer_serialize_length(st->size, cb, app_key); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + er.encoded += ret; + } + + er.encoded += st->size; + if(cb(st->buf, st->size, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/lib/s1ap3/asn1c/OPEN_TYPE.c b/lib/s1ap3/asn1c/OPEN_TYPE.c new file mode 100644 index 0000000000..68b6d2fc3d --- /dev/null +++ b/lib/s1ap3/asn1c/OPEN_TYPE.c @@ -0,0 +1,521 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include + +asn_TYPE_operation_t asn_OP_OPEN_TYPE = { + OPEN_TYPE_free, + OPEN_TYPE_print, + OPEN_TYPE_compare, + OPEN_TYPE_decode_ber, + OPEN_TYPE_encode_der, + OPEN_TYPE_decode_xer, + OPEN_TYPE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, 0, /* No OER support, use "-gen-OER" to enable */ +#else + OPEN_TYPE_decode_oer, + OPEN_TYPE_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + OPEN_TYPE_decode_uper, + OPEN_TYPE_encode_uper, + OPEN_TYPE_decode_aper, + OPEN_TYPE_encode_aper, +#endif + 0, /* Random fill is not supported for open type */ + 0 /* Use generic outmost tag fetcher */ +}; + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +asn_dec_rval_t +OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ASN_DEBUG("presence %d\n", selected.presence_index); + + rv = selected.type_descriptor->op->ber_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, + elm->tag_mode); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = consumed_myself; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case RC_FAIL: + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + break; + } + + if(*memb_ptr2) { + const asn_CHOICE_specifics_t *specs = + selected.type_descriptor->specifics; + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_FREE_CONTENTS_ONLY(*selected.type_descriptor, + inner_value); + memset(*memb_ptr2, 0, specs->struct_size); + } + } + return rv; +} + +asn_dec_rval_t +OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + int xer_context = 0; + ssize_t ch_size; + pxer_chunk_type_e ch_type; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + /* + * Confirm wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_OPENING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = selected.type_descriptor->op->xer_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_FAIL: + /* Point to a best position where failure occurred */ + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + /* Wrt. rv.consumed==0: + * In case a genuine RC_WMORE, the whole Open Type decoding + * will have to be restarted. + */ + if(*memb_ptr2) { + const asn_CHOICE_specifics_t *specs = + selected.type_descriptor->specifics; + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_FREE_CONTENTS_ONLY(*selected.type_descriptor, + inner_value); + memset(*memb_ptr2, 0, specs->struct_size); + } + } + return rv; + } + + /* + * Finalize wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_CLOSING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + rv.consumed += consumed_myself; + + return rv; +} + + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + const asn_CHOICE_specifics_t *specs = + selected.type_descriptor->specifics; + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_FREE_CONTENTS_ONLY(*selected.type_descriptor, + inner_value); + memset(*memb_ptr2, 0, specs->struct_size); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + const asn_CHOICE_specifics_t *specs = + selected.type_descriptor->specifics; + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_FREE_CONTENTS_ONLY(*selected.type_descriptor, + inner_value); + memset(*memb_ptr2, 0, specs->struct_size); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/lib/s1ap3/asn1c/OPEN_TYPE.h b/lib/s1ap3/asn1c/OPEN_TYPE.h new file mode 100644 index 0000000000..b0d023c1f5 --- /dev/null +++ b/lib/s1ap3/asn1c/OPEN_TYPE.h @@ -0,0 +1,77 @@ +/*- + * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_OPEN_TYPE_H +#define ASN_OPEN_TYPE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OPEN_TYPE_free CHOICE_free +#define OPEN_TYPE_print CHOICE_print +#define OPEN_TYPE_compare CHOICE_compare +#define OPEN_TYPE_constraint CHOICE_constraint +#define OPEN_TYPE_decode_ber NULL +#define OPEN_TYPE_encode_der CHOICE_encode_der +#define OPEN_TYPE_decode_xer NULL +#define OPEN_TYPE_encode_xer CHOICE_encode_xer +#define OPEN_TYPE_decode_oer NULL +#define OPEN_TYPE_encode_oer CHOICE_encode_oer +#define OPEN_TYPE_decode_uper NULL +#define OPEN_TYPE_decode_aper NULL + +extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; + +/* + * Decode an Open Type which is potentially constraiend + * by the other members of the parent structure. + */ +asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + asn_TYPE_member_t *element, const void *ptr, + size_t size); + +asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_enc_rval_t OPEN_TYPE_encode_uper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +asn_enc_rval_t OPEN_TYPE_encode_aper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_OPEN_TYPE_H */ diff --git a/lib/s1ap3/asn1c/OPEN_TYPE_oer.c b/lib/s1ap3/asn1c/OPEN_TYPE_oer.c new file mode 100644 index 0000000000..dd2f5c6445 --- /dev/null +++ b/lib/s1ap3/asn1c/OPEN_TYPE_oer.c @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +asn_dec_rval_t +OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + asn_TYPE_member_t *elm, const void *ptr, size_t size) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + size_t ot_ret; + + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ot_ret = oer_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, ptr, size); + switch(ot_ret) { + default: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = ot_ret; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case -1: + rv.code = RC_FAIL; + rv.consumed = ot_ret; + break; + case 0: + rv.code = RC_WMORE; + rv.consumed = 0; + break; + } + + if(*memb_ptr2) { + const asn_CHOICE_specifics_t *specs = + selected.type_descriptor->specifics; + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_FREE_CONTENTS_ONLY(*selected.type_descriptor, + inner_value); + memset(*memb_ptr2, 0, specs->struct_size); + } + } + return rv; +} diff --git a/lib/s1ap3/asn1c/PrintableString.c b/lib/s1ap3/asn1c/PrintableString.c new file mode 100644 index 0000000000..8fc39399e8 --- /dev/null +++ b/lib/s1ap3/asn1c/PrintableString.c @@ -0,0 +1,130 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * ASN.1:1984 (X.409) + */ +static const int _PrintableString_alphabet[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int _PrintableString_code2value[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122}; + +/* + * PrintableString basic type description. + */ +static const ber_tlv_tag_t asn_DEF_PrintableString_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), /* [UNIVERSAL 19] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +static int asn_DEF_PrintableString_v2c(unsigned int value) { + return _PrintableString_alphabet[value > 255 ? 0 : value] - 1; +} +static int asn_DEF_PrintableString_c2v(unsigned int code) { + if(code < 74) + return _PrintableString_code2value[code]; + return -1; +} +static asn_per_constraints_t asn_DEF_PrintableString_per_constraints = { + { APC_CONSTRAINED, 4, 4, 0x20, 0x39 }, /* Value */ + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ + asn_DEF_PrintableString_v2c, + asn_DEF_PrintableString_c2v +}; +asn_TYPE_operation_t asn_OP_PrintableString = { + OCTET_STRING_free, + OCTET_STRING_print_utf8, /* ASCII subset */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_PrintableString = { + "PrintableString", + "PrintableString", + &asn_OP_PrintableString, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]) - 1, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]), + { 0, &asn_DEF_PrintableString_per_constraints, PrintableString_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + + +int +PrintableString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + + if(st && st->buf) { + uint8_t *buf = st->buf; + uint8_t *end = buf + st->size; + + /* + * Check the alphabet of the PrintableString. + * ASN.1:1984 (X.409) + */ + for(; buf < end; buf++) { + if(!_PrintableString_alphabet[*buf]) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value byte %ld (%d) " + "not in PrintableString alphabet " + "(%s:%d)", + td->name, + (long)((buf - st->buf) + 1), + *buf, + __FILE__, __LINE__); + return -1; + } + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} diff --git a/lib/s1ap3/asn1c/PrintableString.h b/lib/s1ap3/asn1c/PrintableString.h new file mode 100644 index 0000000000..8c2b61ab25 --- /dev/null +++ b/lib/s1ap3/asn1c/PrintableString.h @@ -0,0 +1,37 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PrintableString_H_ +#define _PrintableString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t PrintableString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_PrintableString; +extern asn_TYPE_operation_t asn_OP_PrintableString; + +asn_constr_check_f PrintableString_constraint; + +#define PrintableString_free OCTET_STRING_free +#define PrintableString_print OCTET_STRING_print_utf8 +#define PrintableString_compare OCTET_STRING_compare +#define PrintableString_decode_ber OCTET_STRING_decode_ber +#define PrintableString_encode_der OCTET_STRING_encode_der +#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8 +#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8 +#define PrintableString_decode_uper OCTET_STRING_decode_uper +#define PrintableString_encode_uper OCTET_STRING_encode_uper +#define PrintableString_decode_aper OCTET_STRING_decode_aper +#define PrintableString_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _PrintableString_H_ */ diff --git a/lib/s1ap3/asn1c/S1AP_Additional-GUTI.c b/lib/s1ap3/asn1c/S1AP_Additional-GUTI.c new file mode 100644 index 0000000000..af3c1abdb6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Additional-GUTI.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Additional-GUTI.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_Additional_GUTI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Additional_GUTI, gUMMEI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gUMMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Additional_GUTI, m_TMSI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M_TMSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m-TMSI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_Additional_GUTI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_Additional_GUTI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_Additional_GUTI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Additional_GUTI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gUMMEI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m-TMSI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_Additional_GUTI_specs_1 = { + sizeof(struct S1AP_Additional_GUTI), + offsetof(struct S1AP_Additional_GUTI, _asn_ctx), + asn_MAP_S1AP_Additional_GUTI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_Additional_GUTI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Additional_GUTI = { + "Additional-GUTI", + "Additional-GUTI", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Additional_GUTI_tags_1, + sizeof(asn_DEF_S1AP_Additional_GUTI_tags_1) + /sizeof(asn_DEF_S1AP_Additional_GUTI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Additional_GUTI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Additional_GUTI_tags_1) + /sizeof(asn_DEF_S1AP_Additional_GUTI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Additional_GUTI_1, + 3, /* Elements count */ + &asn_SPC_S1AP_Additional_GUTI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Additional-GUTI.h b/lib/s1ap3/asn1c/S1AP_Additional-GUTI.h new file mode 100644 index 0000000000..92ced72779 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Additional-GUTI.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Additional_GUTI_H_ +#define _S1AP_Additional_GUTI_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_GUMMEI.h" +#include "S1AP_M-TMSI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_Additional-GUTI */ +typedef struct S1AP_Additional_GUTI { + S1AP_GUMMEI_t gUMMEI; + S1AP_M_TMSI_t m_TMSI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Additional_GUTI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Additional_GUTI; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Additional_GUTI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_AdditionalCSFallbackIndicator.c b/lib/s1ap3/asn1c/S1AP_AdditionalCSFallbackIndicator.c new file mode 100644 index 0000000000..7da80663e6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AdditionalCSFallbackIndicator.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_AdditionalCSFallbackIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_AdditionalCSFallbackIndicator_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_AdditionalCSFallbackIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_AdditionalCSFallbackIndicator_value2enum_1[] = { + { 0, 14, "no-restriction" }, + { 1, 11, "restriction" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_AdditionalCSFallbackIndicator_enum2value_1[] = { + 0, /* no-restriction(0) */ + 1 /* restriction(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_AdditionalCSFallbackIndicator_specs_1 = { + asn_MAP_S1AP_AdditionalCSFallbackIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_AdditionalCSFallbackIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_AdditionalCSFallbackIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_AdditionalCSFallbackIndicator = { + "AdditionalCSFallbackIndicator", + "AdditionalCSFallbackIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_AdditionalCSFallbackIndicator_tags_1, + sizeof(asn_DEF_S1AP_AdditionalCSFallbackIndicator_tags_1) + /sizeof(asn_DEF_S1AP_AdditionalCSFallbackIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1AP_AdditionalCSFallbackIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_AdditionalCSFallbackIndicator_tags_1) + /sizeof(asn_DEF_S1AP_AdditionalCSFallbackIndicator_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_AdditionalCSFallbackIndicator_constr_1, &asn_PER_type_S1AP_AdditionalCSFallbackIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_AdditionalCSFallbackIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_AdditionalCSFallbackIndicator.h b/lib/s1ap3/asn1c/S1AP_AdditionalCSFallbackIndicator.h new file mode 100644 index 0000000000..a854d23a34 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AdditionalCSFallbackIndicator.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_AdditionalCSFallbackIndicator_H_ +#define _S1AP_AdditionalCSFallbackIndicator_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_AdditionalCSFallbackIndicator { + S1AP_AdditionalCSFallbackIndicator_no_restriction = 0, + S1AP_AdditionalCSFallbackIndicator_restriction = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_AdditionalCSFallbackIndicator; + +/* S1AP_AdditionalCSFallbackIndicator */ +typedef long S1AP_AdditionalCSFallbackIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_AdditionalCSFallbackIndicator; +asn_struct_free_f S1AP_AdditionalCSFallbackIndicator_free; +asn_struct_print_f S1AP_AdditionalCSFallbackIndicator_print; +asn_constr_check_f S1AP_AdditionalCSFallbackIndicator_constraint; +ber_type_decoder_f S1AP_AdditionalCSFallbackIndicator_decode_ber; +der_type_encoder_f S1AP_AdditionalCSFallbackIndicator_encode_der; +xer_type_decoder_f S1AP_AdditionalCSFallbackIndicator_decode_xer; +xer_type_encoder_f S1AP_AdditionalCSFallbackIndicator_encode_xer; +oer_type_decoder_f S1AP_AdditionalCSFallbackIndicator_decode_oer; +oer_type_encoder_f S1AP_AdditionalCSFallbackIndicator_encode_oer; +per_type_decoder_f S1AP_AdditionalCSFallbackIndicator_decode_uper; +per_type_encoder_f S1AP_AdditionalCSFallbackIndicator_encode_uper; +per_type_decoder_f S1AP_AdditionalCSFallbackIndicator_decode_aper; +per_type_encoder_f S1AP_AdditionalCSFallbackIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_AdditionalCSFallbackIndicator_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_AllocationAndRetentionPriority.c b/lib/s1ap3/asn1c/S1AP_AllocationAndRetentionPriority.c new file mode 100644 index 0000000000..9ba5bb8595 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AllocationAndRetentionPriority.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_AllocationAndRetentionPriority.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_AllocationAndRetentionPriority_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AllocationAndRetentionPriority, priorityLevel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PriorityLevel, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "priorityLevel" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AllocationAndRetentionPriority, pre_emptionCapability), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Pre_emptionCapability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pre-emptionCapability" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AllocationAndRetentionPriority, pre_emptionVulnerability), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Pre_emptionVulnerability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pre-emptionVulnerability" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_AllocationAndRetentionPriority, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_AllocationAndRetentionPriority_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_AllocationAndRetentionPriority_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_AllocationAndRetentionPriority_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* priorityLevel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pre-emptionCapability */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pre-emptionVulnerability */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_AllocationAndRetentionPriority_specs_1 = { + sizeof(struct S1AP_AllocationAndRetentionPriority), + offsetof(struct S1AP_AllocationAndRetentionPriority, _asn_ctx), + asn_MAP_S1AP_AllocationAndRetentionPriority_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_AllocationAndRetentionPriority_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_AllocationAndRetentionPriority = { + "AllocationAndRetentionPriority", + "AllocationAndRetentionPriority", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_AllocationAndRetentionPriority_tags_1, + sizeof(asn_DEF_S1AP_AllocationAndRetentionPriority_tags_1) + /sizeof(asn_DEF_S1AP_AllocationAndRetentionPriority_tags_1[0]), /* 1 */ + asn_DEF_S1AP_AllocationAndRetentionPriority_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_AllocationAndRetentionPriority_tags_1) + /sizeof(asn_DEF_S1AP_AllocationAndRetentionPriority_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_AllocationAndRetentionPriority_1, + 4, /* Elements count */ + &asn_SPC_S1AP_AllocationAndRetentionPriority_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_AllocationAndRetentionPriority.h b/lib/s1ap3/asn1c/S1AP_AllocationAndRetentionPriority.h new file mode 100644 index 0000000000..d607ac39d8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AllocationAndRetentionPriority.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_AllocationAndRetentionPriority_H_ +#define _S1AP_AllocationAndRetentionPriority_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PriorityLevel.h" +#include "S1AP_Pre-emptionCapability.h" +#include "S1AP_Pre-emptionVulnerability.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_AllocationAndRetentionPriority */ +typedef struct S1AP_AllocationAndRetentionPriority { + S1AP_PriorityLevel_t priorityLevel; + S1AP_Pre_emptionCapability_t pre_emptionCapability; + S1AP_Pre_emptionVulnerability_t pre_emptionVulnerability; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_AllocationAndRetentionPriority_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_AllocationAndRetentionPriority; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_AllocationAndRetentionPriority_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_AllocationAndRetentionPriority_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_AllocationAndRetentionPriority_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.c b/lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.c new file mode 100644 index 0000000000..1fefb4ec43 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_AreaScopeOfMDT.h" + +#include "S1AP_CellBasedMDT.h" +#include "S1AP_TABasedMDT.h" +#include "S1AP_TAIBasedMDT.h" +static asn_oer_constraints_t asn_OER_type_S1AP_AreaScopeOfMDT_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_AreaScopeOfMDT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_AreaScopeOfMDT_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_AreaScopeOfMDT, choice.cellBased), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CellBasedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellBased" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_AreaScopeOfMDT, choice.tABased), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TABasedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tABased" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AreaScopeOfMDT, choice.pLMNWide), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNWide" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_AreaScopeOfMDT, choice.tAIBased), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAIBasedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIBased" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_AreaScopeOfMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellBased */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tABased */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pLMNWide */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* tAIBased */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_AreaScopeOfMDT_specs_1 = { + sizeof(struct S1AP_AreaScopeOfMDT), + offsetof(struct S1AP_AreaScopeOfMDT, _asn_ctx), + offsetof(struct S1AP_AreaScopeOfMDT, present), + sizeof(((struct S1AP_AreaScopeOfMDT *)0)->present), + asn_MAP_S1AP_AreaScopeOfMDT_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_AreaScopeOfMDT = { + "AreaScopeOfMDT", + "AreaScopeOfMDT", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_AreaScopeOfMDT_constr_1, &asn_PER_type_S1AP_AreaScopeOfMDT_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_AreaScopeOfMDT_1, + 4, /* Elements count */ + &asn_SPC_S1AP_AreaScopeOfMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.h b/lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.h new file mode 100644 index 0000000000..408407d47b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AreaScopeOfMDT.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_AreaScopeOfMDT_H_ +#define _S1AP_AreaScopeOfMDT_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_AreaScopeOfMDT_PR { + AreaScopeOfMDT_PR_NOTHING, /* No components present */ + AreaScopeOfMDT_PR_cellBased, + AreaScopeOfMDT_PR_tABased, + AreaScopeOfMDT_PR_pLMNWide, + /* Extensions may appear below */ + AreaScopeOfMDT_PR_tAIBased +} S1AP_AreaScopeOfMDT_PR; + +/* Forward declarations */ +struct S1AP_CellBasedMDT; +struct S1AP_TABasedMDT; +struct S1AP_TAIBasedMDT; + +/* S1AP_AreaScopeOfMDT */ +typedef struct S1AP_AreaScopeOfMDT { + S1AP_AreaScopeOfMDT_PR present; + union S1AP_AreaScopeOfMDT_u { + struct S1AP_CellBasedMDT *cellBased; + struct S1AP_TABasedMDT *tABased; + NULL_t pLMNWide; + /* + * This type is extensible, + * possible extensions are below. + */ + struct S1AP_TAIBasedMDT *tAIBased; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_AreaScopeOfMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_AreaScopeOfMDT; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_AreaScopeOfMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_AreaScopeOfMDT_1[4]; +extern asn_per_constraints_t asn_PER_type_S1AP_AreaScopeOfMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_AreaScopeOfMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_AssistanceDataForCECapableUEs.c b/lib/s1ap3/asn1c/S1AP_AssistanceDataForCECapableUEs.c new file mode 100644 index 0000000000..f3e0d02d6a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AssistanceDataForCECapableUEs.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_AssistanceDataForCECapableUEs.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_AssistanceDataForCECapableUEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AssistanceDataForCECapableUEs, cellIdentifierAndCELevelForCECapableUEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellIdentifierAndCELevelForCECapableUEs" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_AssistanceDataForCECapableUEs, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P22, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_AssistanceDataForCECapableUEs_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_AssistanceDataForCECapableUEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_AssistanceDataForCECapableUEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdentifierAndCELevelForCECapableUEs */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_AssistanceDataForCECapableUEs_specs_1 = { + sizeof(struct S1AP_AssistanceDataForCECapableUEs), + offsetof(struct S1AP_AssistanceDataForCECapableUEs, _asn_ctx), + asn_MAP_S1AP_AssistanceDataForCECapableUEs_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_AssistanceDataForCECapableUEs_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForCECapableUEs = { + "AssistanceDataForCECapableUEs", + "AssistanceDataForCECapableUEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_AssistanceDataForCECapableUEs_tags_1, + sizeof(asn_DEF_S1AP_AssistanceDataForCECapableUEs_tags_1) + /sizeof(asn_DEF_S1AP_AssistanceDataForCECapableUEs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_AssistanceDataForCECapableUEs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_AssistanceDataForCECapableUEs_tags_1) + /sizeof(asn_DEF_S1AP_AssistanceDataForCECapableUEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_AssistanceDataForCECapableUEs_1, + 2, /* Elements count */ + &asn_SPC_S1AP_AssistanceDataForCECapableUEs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_AssistanceDataForCECapableUEs.h b/lib/s1ap3/asn1c/S1AP_AssistanceDataForCECapableUEs.h new file mode 100644 index 0000000000..2b7a793c14 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AssistanceDataForCECapableUEs.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_AssistanceDataForCECapableUEs_H_ +#define _S1AP_AssistanceDataForCECapableUEs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_CellIdentifierAndCELevelForCECapableUEs.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_AssistanceDataForCECapableUEs */ +typedef struct S1AP_AssistanceDataForCECapableUEs { + S1AP_CellIdentifierAndCELevelForCECapableUEs_t cellIdentifierAndCELevelForCECapableUEs; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_AssistanceDataForCECapableUEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForCECapableUEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_AssistanceDataForCECapableUEs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_AssistanceDataForCECapableUEs_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_AssistanceDataForCECapableUEs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_AssistanceDataForPaging.c b/lib/s1ap3/asn1c/S1AP_AssistanceDataForPaging.c new file mode 100644 index 0000000000..7dc24d70ab --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AssistanceDataForPaging.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_AssistanceDataForPaging.h" + +#include "S1AP_AssistanceDataForRecommendedCells.h" +#include "S1AP_AssistanceDataForCECapableUEs.h" +#include "S1AP_PagingAttemptInformation.h" +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_AssistanceDataForPaging_1[] = { + { ATF_POINTER, 4, offsetof(struct S1AP_AssistanceDataForPaging, assistanceDataForRecommendedCells), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_AssistanceDataForRecommendedCells, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "assistanceDataForRecommendedCells" + }, + { ATF_POINTER, 3, offsetof(struct S1AP_AssistanceDataForPaging, assistanceDataForCECapableUEs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_AssistanceDataForCECapableUEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "assistanceDataForCECapableUEs" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_AssistanceDataForPaging, pagingAttemptInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PagingAttemptInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pagingAttemptInformation" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_AssistanceDataForPaging, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_AssistanceDataForPaging_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_AssistanceDataForPaging_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_AssistanceDataForPaging_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* assistanceDataForRecommendedCells */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* assistanceDataForCECapableUEs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pagingAttemptInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_AssistanceDataForPaging_specs_1 = { + sizeof(struct S1AP_AssistanceDataForPaging), + offsetof(struct S1AP_AssistanceDataForPaging, _asn_ctx), + asn_MAP_S1AP_AssistanceDataForPaging_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_AssistanceDataForPaging_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForPaging = { + "AssistanceDataForPaging", + "AssistanceDataForPaging", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_AssistanceDataForPaging_tags_1, + sizeof(asn_DEF_S1AP_AssistanceDataForPaging_tags_1) + /sizeof(asn_DEF_S1AP_AssistanceDataForPaging_tags_1[0]), /* 1 */ + asn_DEF_S1AP_AssistanceDataForPaging_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_AssistanceDataForPaging_tags_1) + /sizeof(asn_DEF_S1AP_AssistanceDataForPaging_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_AssistanceDataForPaging_1, + 4, /* Elements count */ + &asn_SPC_S1AP_AssistanceDataForPaging_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_AssistanceDataForPaging.h b/lib/s1ap3/asn1c/S1AP_AssistanceDataForPaging.h new file mode 100644 index 0000000000..54cc99e454 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AssistanceDataForPaging.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_AssistanceDataForPaging_H_ +#define _S1AP_AssistanceDataForPaging_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_AssistanceDataForRecommendedCells; +struct S1AP_AssistanceDataForCECapableUEs; +struct S1AP_PagingAttemptInformation; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_AssistanceDataForPaging */ +typedef struct S1AP_AssistanceDataForPaging { + struct S1AP_AssistanceDataForRecommendedCells *assistanceDataForRecommendedCells; /* OPTIONAL */ + struct S1AP_AssistanceDataForCECapableUEs *assistanceDataForCECapableUEs; /* OPTIONAL */ + struct S1AP_PagingAttemptInformation *pagingAttemptInformation; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_AssistanceDataForPaging_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForPaging; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_AssistanceDataForPaging_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_AssistanceDataForRecommendedCells.c b/lib/s1ap3/asn1c/S1AP_AssistanceDataForRecommendedCells.c new file mode 100644 index 0000000000..2878e97a05 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AssistanceDataForRecommendedCells.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_AssistanceDataForRecommendedCells.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_AssistanceDataForRecommendedCells_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AssistanceDataForRecommendedCells, recommendedCellsForPaging), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RecommendedCellsForPaging, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "recommendedCellsForPaging" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_AssistanceDataForRecommendedCells, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P24, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_AssistanceDataForRecommendedCells_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_AssistanceDataForRecommendedCells_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_AssistanceDataForRecommendedCells_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* recommendedCellsForPaging */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_AssistanceDataForRecommendedCells_specs_1 = { + sizeof(struct S1AP_AssistanceDataForRecommendedCells), + offsetof(struct S1AP_AssistanceDataForRecommendedCells, _asn_ctx), + asn_MAP_S1AP_AssistanceDataForRecommendedCells_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_AssistanceDataForRecommendedCells_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForRecommendedCells = { + "AssistanceDataForRecommendedCells", + "AssistanceDataForRecommendedCells", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_AssistanceDataForRecommendedCells_tags_1, + sizeof(asn_DEF_S1AP_AssistanceDataForRecommendedCells_tags_1) + /sizeof(asn_DEF_S1AP_AssistanceDataForRecommendedCells_tags_1[0]), /* 1 */ + asn_DEF_S1AP_AssistanceDataForRecommendedCells_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_AssistanceDataForRecommendedCells_tags_1) + /sizeof(asn_DEF_S1AP_AssistanceDataForRecommendedCells_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_AssistanceDataForRecommendedCells_1, + 2, /* Elements count */ + &asn_SPC_S1AP_AssistanceDataForRecommendedCells_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_AssistanceDataForRecommendedCells.h b/lib/s1ap3/asn1c/S1AP_AssistanceDataForRecommendedCells.h new file mode 100644 index 0000000000..ef184bc068 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_AssistanceDataForRecommendedCells.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_AssistanceDataForRecommendedCells_H_ +#define _S1AP_AssistanceDataForRecommendedCells_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_RecommendedCellsForPaging.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_AssistanceDataForRecommendedCells */ +typedef struct S1AP_AssistanceDataForRecommendedCells { + S1AP_RecommendedCellsForPaging_t recommendedCellsForPaging; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_AssistanceDataForRecommendedCells_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForRecommendedCells; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_AssistanceDataForRecommendedCells_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_AssistanceDataForRecommendedCells_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_AssistanceDataForRecommendedCells_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_BPLMNs.c b/lib/s1ap3/asn1c/S1AP_BPLMNs.c new file mode 100644 index 0000000000..2478d4445f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BPLMNs.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_BPLMNs.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_BPLMNs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..6)) */}; +asn_per_constraints_t asn_PER_type_S1AP_BPLMNs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 6 } /* (SIZE(1..6)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_BPLMNs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_BPLMNs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_BPLMNs_specs_1 = { + sizeof(struct S1AP_BPLMNs), + offsetof(struct S1AP_BPLMNs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_BPLMNs = { + "BPLMNs", + "BPLMNs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_BPLMNs_tags_1, + sizeof(asn_DEF_S1AP_BPLMNs_tags_1) + /sizeof(asn_DEF_S1AP_BPLMNs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_BPLMNs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_BPLMNs_tags_1) + /sizeof(asn_DEF_S1AP_BPLMNs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_BPLMNs_constr_1, &asn_PER_type_S1AP_BPLMNs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_BPLMNs_1, + 1, /* Single element */ + &asn_SPC_S1AP_BPLMNs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_BPLMNs.h b/lib/s1ap3/asn1c/S1AP_BPLMNs.h new file mode 100644 index 0000000000..c084038f12 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BPLMNs.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_BPLMNs_H_ +#define _S1AP_BPLMNs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_BPLMNs */ +typedef struct S1AP_BPLMNs { + A_SEQUENCE_OF(S1AP_PLMNidentity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_BPLMNs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_BPLMNs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_BPLMNs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_BPLMNs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_BPLMNs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_BPLMNs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_BearerType.c b/lib/s1ap3/asn1c/S1AP_BearerType.c new file mode 100644 index 0000000000..823eedcf2c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BearerType.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_BearerType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_BearerType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_BearerType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_BearerType_value2enum_1[] = { + { 0, 6, "non-IP" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_BearerType_enum2value_1[] = { + 0 /* non-IP(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_BearerType_specs_1 = { + asn_MAP_S1AP_BearerType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_BearerType_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_BearerType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_BearerType = { + "BearerType", + "BearerType", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_BearerType_tags_1, + sizeof(asn_DEF_S1AP_BearerType_tags_1) + /sizeof(asn_DEF_S1AP_BearerType_tags_1[0]), /* 1 */ + asn_DEF_S1AP_BearerType_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_BearerType_tags_1) + /sizeof(asn_DEF_S1AP_BearerType_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_BearerType_constr_1, &asn_PER_type_S1AP_BearerType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_BearerType_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_BearerType.h b/lib/s1ap3/asn1c/S1AP_BearerType.h new file mode 100644 index 0000000000..0d6b6af3ef --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BearerType.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_BearerType_H_ +#define _S1AP_BearerType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_BearerType { + S1AP_BearerType_non_IP = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_BearerType; + +/* S1AP_BearerType */ +typedef long S1AP_BearerType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_BearerType; +asn_struct_free_f S1AP_BearerType_free; +asn_struct_print_f S1AP_BearerType_print; +asn_constr_check_f S1AP_BearerType_constraint; +ber_type_decoder_f S1AP_BearerType_decode_ber; +der_type_encoder_f S1AP_BearerType_encode_der; +xer_type_decoder_f S1AP_BearerType_decode_xer; +xer_type_encoder_f S1AP_BearerType_encode_xer; +oer_type_decoder_f S1AP_BearerType_decode_oer; +oer_type_encoder_f S1AP_BearerType_encode_oer; +per_type_decoder_f S1AP_BearerType_decode_uper; +per_type_encoder_f S1AP_BearerType_encode_uper; +per_type_decoder_f S1AP_BearerType_decode_aper; +per_type_encoder_f S1AP_BearerType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_BearerType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransfer-Item.c b/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransfer-Item.c new file mode 100644 index 0000000000..df8a466675 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransfer-Item.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Bearers-SubjectToStatusTransfer-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_Bearers_SubjectToStatusTransfer_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_Item, uL_COUNTvalue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_COUNTvalue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-COUNTvalue" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_Item, dL_COUNTvalue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_COUNTvalue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-COUNTvalue" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_Item, receiveStatusofULPDCPSDUs), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "receiveStatusofULPDCPSDUs" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_Bearers_SubjectToStatusTransfer_Item_oms_1[] = { 3, 4 }; +static const ber_tlv_tag_t asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Bearers_SubjectToStatusTransfer_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-COUNTvalue */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-COUNTvalue */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* receiveStatusofULPDCPSDUs */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_Bearers_SubjectToStatusTransfer_Item_specs_1 = { + sizeof(struct S1AP_Bearers_SubjectToStatusTransfer_Item), + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_Item, _asn_ctx), + asn_MAP_S1AP_Bearers_SubjectToStatusTransfer_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_Bearers_SubjectToStatusTransfer_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item = { + "Bearers-SubjectToStatusTransfer-Item", + "Bearers-SubjectToStatusTransfer-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item_tags_1, + sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item_tags_1) + /sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item_tags_1) + /sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Bearers_SubjectToStatusTransfer_Item_1, + 5, /* Elements count */ + &asn_SPC_S1AP_Bearers_SubjectToStatusTransfer_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransfer-Item.h b/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransfer-Item.h new file mode 100644 index 0000000000..105358d2d4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransfer-Item.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Bearers_SubjectToStatusTransfer_Item_H_ +#define _S1AP_Bearers_SubjectToStatusTransfer_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_COUNTvalue.h" +#include "S1AP_ReceiveStatusofULPDCPSDUs.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_Bearers-SubjectToStatusTransfer-Item */ +typedef struct S1AP_Bearers_SubjectToStatusTransfer_Item { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_COUNTvalue_t uL_COUNTvalue; + S1AP_COUNTvalue_t dL_COUNTvalue; + S1AP_ReceiveStatusofULPDCPSDUs_t *receiveStatusofULPDCPSDUs; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Bearers_SubjectToStatusTransfer_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Bearers_SubjectToStatusTransfer_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransferList.c b/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransferList.c new file mode 100644 index 0000000000..0fabea5f04 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransferList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Bearers-SubjectToStatusTransferList.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_Bearers_SubjectToStatusTransferList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_Bearers_SubjectToStatusTransferList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_Bearers_SubjectToStatusTransferList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Bearers_SubjectToStatusTransferList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_Bearers_SubjectToStatusTransferList_specs_1 = { + sizeof(struct S1AP_Bearers_SubjectToStatusTransferList), + offsetof(struct S1AP_Bearers_SubjectToStatusTransferList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Bearers_SubjectToStatusTransferList = { + "Bearers-SubjectToStatusTransferList", + "Bearers-SubjectToStatusTransferList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_Bearers_SubjectToStatusTransferList_tags_1, + sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransferList_tags_1) + /sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransferList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Bearers_SubjectToStatusTransferList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransferList_tags_1) + /sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransferList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Bearers_SubjectToStatusTransferList_constr_1, &asn_PER_type_S1AP_Bearers_SubjectToStatusTransferList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_Bearers_SubjectToStatusTransferList_1, + 1, /* Single element */ + &asn_SPC_S1AP_Bearers_SubjectToStatusTransferList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransferList.h b/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransferList.h new file mode 100644 index 0000000000..c65027d1c4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Bearers-SubjectToStatusTransferList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Bearers_SubjectToStatusTransferList_H_ +#define _S1AP_Bearers_SubjectToStatusTransferList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_Bearers-SubjectToStatusTransferList */ +typedef struct S1AP_Bearers_SubjectToStatusTransferList { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Bearers_SubjectToStatusTransferList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Bearers_SubjectToStatusTransferList; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_Bearers_SubjectToStatusTransferList_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_Bearers_SubjectToStatusTransferList_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_Bearers_SubjectToStatusTransferList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Bearers_SubjectToStatusTransferList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_BitRate.c b/lib/s1ap3/asn1c/S1AP_BitRate.c new file mode 100644 index 0000000000..db8d62f0a9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BitRate.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_BitRate.h" + +int +S1AP_BitRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 10000000000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_BitRate_constr_1 CC_NOTUSED = { + { 8, 1 } /* (0..10000000000) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_BitRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 34, -1, 0, 10000000000 } /* (0..10000000000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_BitRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_BitRate = { + "BitRate", + "BitRate", + &asn_OP_INTEGER, + asn_DEF_S1AP_BitRate_tags_1, + sizeof(asn_DEF_S1AP_BitRate_tags_1) + /sizeof(asn_DEF_S1AP_BitRate_tags_1[0]), /* 1 */ + asn_DEF_S1AP_BitRate_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_BitRate_tags_1) + /sizeof(asn_DEF_S1AP_BitRate_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_BitRate_constr_1, &asn_PER_type_S1AP_BitRate_constr_1, S1AP_BitRate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_BitRate.h b/lib/s1ap3/asn1c/S1AP_BitRate.h new file mode 100644 index 0000000000..c709c6e851 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BitRate.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_BitRate_H_ +#define _S1AP_BitRate_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_BitRate */ +typedef INTEGER_t S1AP_BitRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_BitRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_BitRate; +asn_struct_free_f S1AP_BitRate_free; +asn_struct_print_f S1AP_BitRate_print; +asn_constr_check_f S1AP_BitRate_constraint; +ber_type_decoder_f S1AP_BitRate_decode_ber; +der_type_encoder_f S1AP_BitRate_encode_der; +xer_type_decoder_f S1AP_BitRate_decode_xer; +xer_type_encoder_f S1AP_BitRate_encode_xer; +oer_type_decoder_f S1AP_BitRate_decode_oer; +oer_type_encoder_f S1AP_BitRate_encode_oer; +per_type_decoder_f S1AP_BitRate_decode_uper; +per_type_encoder_f S1AP_BitRate_encode_uper; +per_type_decoder_f S1AP_BitRate_decode_aper; +per_type_encoder_f S1AP_BitRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_BitRate_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_BroadcastCancelledAreaList.c b/lib/s1ap3/asn1c/S1AP_BroadcastCancelledAreaList.c new file mode 100644 index 0000000000..ba6437d9fb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BroadcastCancelledAreaList.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_BroadcastCancelledAreaList.h" + +#include "S1AP_CellID-Cancelled.h" +#include "S1AP_TAI-Cancelled.h" +#include "S1AP_EmergencyAreaID-Cancelled.h" +static asn_oer_constraints_t asn_OER_type_S1AP_BroadcastCancelledAreaList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_BroadcastCancelledAreaList_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_BroadcastCancelledAreaList_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_BroadcastCancelledAreaList, choice.cellID_Cancelled), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CellID_Cancelled, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellID-Cancelled" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_BroadcastCancelledAreaList, choice.tAI_Cancelled), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAI_Cancelled, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAI-Cancelled" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_BroadcastCancelledAreaList, choice.emergencyAreaID_Cancelled), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EmergencyAreaID_Cancelled, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "emergencyAreaID-Cancelled" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_BroadcastCancelledAreaList_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellID-Cancelled */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tAI-Cancelled */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* emergencyAreaID-Cancelled */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_BroadcastCancelledAreaList_specs_1 = { + sizeof(struct S1AP_BroadcastCancelledAreaList), + offsetof(struct S1AP_BroadcastCancelledAreaList, _asn_ctx), + offsetof(struct S1AP_BroadcastCancelledAreaList, present), + sizeof(((struct S1AP_BroadcastCancelledAreaList *)0)->present), + asn_MAP_S1AP_BroadcastCancelledAreaList_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_BroadcastCancelledAreaList = { + "BroadcastCancelledAreaList", + "BroadcastCancelledAreaList", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_BroadcastCancelledAreaList_constr_1, &asn_PER_type_S1AP_BroadcastCancelledAreaList_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_BroadcastCancelledAreaList_1, + 3, /* Elements count */ + &asn_SPC_S1AP_BroadcastCancelledAreaList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_BroadcastCancelledAreaList.h b/lib/s1ap3/asn1c/S1AP_BroadcastCancelledAreaList.h new file mode 100644 index 0000000000..743cc61d63 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BroadcastCancelledAreaList.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_BroadcastCancelledAreaList_H_ +#define _S1AP_BroadcastCancelledAreaList_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_BroadcastCancelledAreaList_PR { + BroadcastCancelledAreaList_PR_NOTHING, /* No components present */ + BroadcastCancelledAreaList_PR_cellID_Cancelled, + BroadcastCancelledAreaList_PR_tAI_Cancelled, + BroadcastCancelledAreaList_PR_emergencyAreaID_Cancelled + /* Extensions may appear below */ + +} S1AP_BroadcastCancelledAreaList_PR; + +/* Forward declarations */ +struct S1AP_CellID_Cancelled; +struct S1AP_TAI_Cancelled; +struct S1AP_EmergencyAreaID_Cancelled; + +/* S1AP_BroadcastCancelledAreaList */ +typedef struct S1AP_BroadcastCancelledAreaList { + S1AP_BroadcastCancelledAreaList_PR present; + union S1AP_BroadcastCancelledAreaList_u { + struct S1AP_CellID_Cancelled *cellID_Cancelled; + struct S1AP_TAI_Cancelled *tAI_Cancelled; + struct S1AP_EmergencyAreaID_Cancelled *emergencyAreaID_Cancelled; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_BroadcastCancelledAreaList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_BroadcastCancelledAreaList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_BroadcastCancelledAreaList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_BroadcastCompletedAreaList.c b/lib/s1ap3/asn1c/S1AP_BroadcastCompletedAreaList.c new file mode 100644 index 0000000000..a8f904ef94 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BroadcastCompletedAreaList.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_BroadcastCompletedAreaList.h" + +#include "S1AP_CellID-Broadcast.h" +#include "S1AP_TAI-Broadcast.h" +#include "S1AP_EmergencyAreaID-Broadcast.h" +static asn_oer_constraints_t asn_OER_type_S1AP_BroadcastCompletedAreaList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_BroadcastCompletedAreaList_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_BroadcastCompletedAreaList_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_BroadcastCompletedAreaList, choice.cellID_Broadcast), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CellID_Broadcast, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellID-Broadcast" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_BroadcastCompletedAreaList, choice.tAI_Broadcast), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAI_Broadcast, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAI-Broadcast" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_BroadcastCompletedAreaList, choice.emergencyAreaID_Broadcast), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EmergencyAreaID_Broadcast, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "emergencyAreaID-Broadcast" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_BroadcastCompletedAreaList_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellID-Broadcast */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tAI-Broadcast */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* emergencyAreaID-Broadcast */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_BroadcastCompletedAreaList_specs_1 = { + sizeof(struct S1AP_BroadcastCompletedAreaList), + offsetof(struct S1AP_BroadcastCompletedAreaList, _asn_ctx), + offsetof(struct S1AP_BroadcastCompletedAreaList, present), + sizeof(((struct S1AP_BroadcastCompletedAreaList *)0)->present), + asn_MAP_S1AP_BroadcastCompletedAreaList_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_BroadcastCompletedAreaList = { + "BroadcastCompletedAreaList", + "BroadcastCompletedAreaList", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_BroadcastCompletedAreaList_constr_1, &asn_PER_type_S1AP_BroadcastCompletedAreaList_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_BroadcastCompletedAreaList_1, + 3, /* Elements count */ + &asn_SPC_S1AP_BroadcastCompletedAreaList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_BroadcastCompletedAreaList.h b/lib/s1ap3/asn1c/S1AP_BroadcastCompletedAreaList.h new file mode 100644 index 0000000000..5caf78dfcb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_BroadcastCompletedAreaList.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_BroadcastCompletedAreaList_H_ +#define _S1AP_BroadcastCompletedAreaList_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_BroadcastCompletedAreaList_PR { + BroadcastCompletedAreaList_PR_NOTHING, /* No components present */ + BroadcastCompletedAreaList_PR_cellID_Broadcast, + BroadcastCompletedAreaList_PR_tAI_Broadcast, + BroadcastCompletedAreaList_PR_emergencyAreaID_Broadcast + /* Extensions may appear below */ + +} S1AP_BroadcastCompletedAreaList_PR; + +/* Forward declarations */ +struct S1AP_CellID_Broadcast; +struct S1AP_TAI_Broadcast; +struct S1AP_EmergencyAreaID_Broadcast; + +/* S1AP_BroadcastCompletedAreaList */ +typedef struct S1AP_BroadcastCompletedAreaList { + S1AP_BroadcastCompletedAreaList_PR present; + union S1AP_BroadcastCompletedAreaList_u { + struct S1AP_CellID_Broadcast *cellID_Broadcast; + struct S1AP_TAI_Broadcast *tAI_Broadcast; + struct S1AP_EmergencyAreaID_Broadcast *emergencyAreaID_Broadcast; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_BroadcastCompletedAreaList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_BroadcastCompletedAreaList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_BroadcastCompletedAreaList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CE-mode-B-SupportIndicator.c b/lib/s1ap3/asn1c/S1AP_CE-mode-B-SupportIndicator.c new file mode 100644 index 0000000000..bf3d38b24b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CE-mode-B-SupportIndicator.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CE-mode-B-SupportIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CE_mode_B_SupportIndicator_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_CE_mode_B_SupportIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CE_mode_B_SupportIndicator_value2enum_1[] = { + { 0, 9, "supported" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_CE_mode_B_SupportIndicator_enum2value_1[] = { + 0 /* supported(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_CE_mode_B_SupportIndicator_specs_1 = { + asn_MAP_S1AP_CE_mode_B_SupportIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CE_mode_B_SupportIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CE_mode_B_SupportIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CE_mode_B_SupportIndicator = { + "CE-mode-B-SupportIndicator", + "CE-mode-B-SupportIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CE_mode_B_SupportIndicator_tags_1, + sizeof(asn_DEF_S1AP_CE_mode_B_SupportIndicator_tags_1) + /sizeof(asn_DEF_S1AP_CE_mode_B_SupportIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CE_mode_B_SupportIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CE_mode_B_SupportIndicator_tags_1) + /sizeof(asn_DEF_S1AP_CE_mode_B_SupportIndicator_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CE_mode_B_SupportIndicator_constr_1, &asn_PER_type_S1AP_CE_mode_B_SupportIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CE_mode_B_SupportIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CE-mode-B-SupportIndicator.h b/lib/s1ap3/asn1c/S1AP_CE-mode-B-SupportIndicator.h new file mode 100644 index 0000000000..11ecee41b2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CE-mode-B-SupportIndicator.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CE_mode_B_SupportIndicator_H_ +#define _S1AP_CE_mode_B_SupportIndicator_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CE_mode_B_SupportIndicator { + S1AP_CE_mode_B_SupportIndicator_supported = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_CE_mode_B_SupportIndicator; + +/* S1AP_CE-mode-B-SupportIndicator */ +typedef long S1AP_CE_mode_B_SupportIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CE_mode_B_SupportIndicator; +asn_struct_free_f S1AP_CE_mode_B_SupportIndicator_free; +asn_struct_print_f S1AP_CE_mode_B_SupportIndicator_print; +asn_constr_check_f S1AP_CE_mode_B_SupportIndicator_constraint; +ber_type_decoder_f S1AP_CE_mode_B_SupportIndicator_decode_ber; +der_type_encoder_f S1AP_CE_mode_B_SupportIndicator_encode_der; +xer_type_decoder_f S1AP_CE_mode_B_SupportIndicator_decode_xer; +xer_type_encoder_f S1AP_CE_mode_B_SupportIndicator_encode_xer; +oer_type_decoder_f S1AP_CE_mode_B_SupportIndicator_decode_oer; +oer_type_encoder_f S1AP_CE_mode_B_SupportIndicator_encode_oer; +per_type_decoder_f S1AP_CE_mode_B_SupportIndicator_decode_uper; +per_type_encoder_f S1AP_CE_mode_B_SupportIndicator_encode_uper; +per_type_decoder_f S1AP_CE_mode_B_SupportIndicator_decode_aper; +per_type_encoder_f S1AP_CE_mode_B_SupportIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CE_mode_B_SupportIndicator_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CELevel.c b/lib/s1ap3/asn1c/S1AP_CELevel.c new file mode 100644 index 0000000000..49407fe4be --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CELevel.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CELevel.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_CELevel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CELevel = { + "CELevel", + "CELevel", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_CELevel_tags_1, + sizeof(asn_DEF_S1AP_CELevel_tags_1) + /sizeof(asn_DEF_S1AP_CELevel_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CELevel_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CELevel_tags_1) + /sizeof(asn_DEF_S1AP_CELevel_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CELevel.h b/lib/s1ap3/asn1c/S1AP_CELevel.h new file mode 100644 index 0000000000..b0da5c22f4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CELevel.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CELevel_H_ +#define _S1AP_CELevel_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_CELevel */ +typedef OCTET_STRING_t S1AP_CELevel_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CELevel; +asn_struct_free_f S1AP_CELevel_free; +asn_struct_print_f S1AP_CELevel_print; +asn_constr_check_f S1AP_CELevel_constraint; +ber_type_decoder_f S1AP_CELevel_decode_ber; +der_type_encoder_f S1AP_CELevel_encode_der; +xer_type_decoder_f S1AP_CELevel_decode_xer; +xer_type_encoder_f S1AP_CELevel_encode_xer; +oer_type_decoder_f S1AP_CELevel_decode_oer; +oer_type_encoder_f S1AP_CELevel_encode_oer; +per_type_decoder_f S1AP_CELevel_decode_uper; +per_type_encoder_f S1AP_CELevel_encode_uper; +per_type_decoder_f S1AP_CELevel_decode_aper; +per_type_encoder_f S1AP_CELevel_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CELevel_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CGI.c b/lib/s1ap3/asn1c/S1AP_CGI.c new file mode 100644 index 0000000000..977b4f5d42 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CGI.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CGI.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CGI, pLMNidentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNidentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CGI, lAC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "lAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CGI, cI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cI" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_CGI, rAC), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rAC" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CGI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P34, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CGI_oms_1[] = { 3, 4 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lAC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cI */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rAC */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CGI_specs_1 = { + sizeof(struct S1AP_CGI), + offsetof(struct S1AP_CGI, _asn_ctx), + asn_MAP_S1AP_CGI_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_CGI_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CGI = { + "CGI", + "CGI", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CGI_tags_1, + sizeof(asn_DEF_S1AP_CGI_tags_1) + /sizeof(asn_DEF_S1AP_CGI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CGI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CGI_tags_1) + /sizeof(asn_DEF_S1AP_CGI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CGI_1, + 5, /* Elements count */ + &asn_SPC_S1AP_CGI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CGI.h b/lib/s1ap3/asn1c/S1AP_CGI.h new file mode 100644 index 0000000000..362861f23a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CGI.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CGI_H_ +#define _S1AP_CGI_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include "S1AP_LAC.h" +#include "S1AP_CI.h" +#include "S1AP_RAC.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CGI */ +typedef struct S1AP_CGI { + S1AP_PLMNidentity_t pLMNidentity; + S1AP_LAC_t lAC; + S1AP_CI_t cI; + S1AP_RAC_t *rAC; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CGI; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CGI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CGI_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CGI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CI.c b/lib/s1ap3/asn1c/S1AP_CI.c new file mode 100644 index 0000000000..7a54eb8b10 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CI.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CI.h" + +int +S1AP_CI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CI_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CI = { + "CI", + "CI", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_CI_tags_1, + sizeof(asn_DEF_S1AP_CI_tags_1) + /sizeof(asn_DEF_S1AP_CI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CI_tags_1) + /sizeof(asn_DEF_S1AP_CI_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CI_constr_1, &asn_PER_type_S1AP_CI_constr_1, S1AP_CI_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CI.h b/lib/s1ap3/asn1c/S1AP_CI.h new file mode 100644 index 0000000000..4806dbbb03 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CI.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CI_H_ +#define _S1AP_CI_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_CI */ +typedef OCTET_STRING_t S1AP_CI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CI; +asn_struct_free_f S1AP_CI_free; +asn_struct_print_f S1AP_CI_print; +asn_constr_check_f S1AP_CI_constraint; +ber_type_decoder_f S1AP_CI_decode_ber; +der_type_encoder_f S1AP_CI_encode_der; +xer_type_decoder_f S1AP_CI_decode_xer; +xer_type_encoder_f S1AP_CI_encode_xer; +oer_type_decoder_f S1AP_CI_decode_oer; +oer_type_encoder_f S1AP_CI_encode_oer; +per_type_decoder_f S1AP_CI_decode_uper; +per_type_encoder_f S1AP_CI_encode_uper; +per_type_decoder_f S1AP_CI_decode_aper; +per_type_encoder_f S1AP_CI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CNDomain.c b/lib/s1ap3/asn1c/S1AP_CNDomain.c new file mode 100644 index 0000000000..bd1bf5de98 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CNDomain.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CNDomain.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CNDomain_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_CNDomain_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CNDomain_value2enum_1[] = { + { 0, 2, "ps" }, + { 1, 2, "cs" } +}; +static const unsigned int asn_MAP_S1AP_CNDomain_enum2value_1[] = { + 1, /* cs(1) */ + 0 /* ps(0) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_CNDomain_specs_1 = { + asn_MAP_S1AP_CNDomain_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CNDomain_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CNDomain_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CNDomain = { + "CNDomain", + "CNDomain", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CNDomain_tags_1, + sizeof(asn_DEF_S1AP_CNDomain_tags_1) + /sizeof(asn_DEF_S1AP_CNDomain_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CNDomain_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CNDomain_tags_1) + /sizeof(asn_DEF_S1AP_CNDomain_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CNDomain_constr_1, &asn_PER_type_S1AP_CNDomain_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CNDomain_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CNDomain.h b/lib/s1ap3/asn1c/S1AP_CNDomain.h new file mode 100644 index 0000000000..51f7611487 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CNDomain.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CNDomain_H_ +#define _S1AP_CNDomain_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CNDomain { + S1AP_CNDomain_ps = 0, + S1AP_CNDomain_cs = 1 +} e_S1AP_CNDomain; + +/* S1AP_CNDomain */ +typedef long S1AP_CNDomain_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CNDomain; +asn_struct_free_f S1AP_CNDomain_free; +asn_struct_print_f S1AP_CNDomain_print; +asn_constr_check_f S1AP_CNDomain_constraint; +ber_type_decoder_f S1AP_CNDomain_decode_ber; +der_type_encoder_f S1AP_CNDomain_encode_der; +xer_type_decoder_f S1AP_CNDomain_decode_xer; +xer_type_encoder_f S1AP_CNDomain_encode_xer; +oer_type_decoder_f S1AP_CNDomain_decode_oer; +oer_type_encoder_f S1AP_CNDomain_encode_oer; +per_type_decoder_f S1AP_CNDomain_decode_uper; +per_type_encoder_f S1AP_CNDomain_encode_uper; +per_type_decoder_f S1AP_CNDomain_decode_aper; +per_type_encoder_f S1AP_CNDomain_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CNDomain_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_COUNTValueExtended.c b/lib/s1ap3/asn1c/S1AP_COUNTValueExtended.c new file mode 100644 index 0000000000..6fc62d155e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_COUNTValueExtended.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_COUNTValueExtended.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_COUNTValueExtended_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTValueExtended, pDCP_SNExtended), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PDCP_SNExtended, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCP-SNExtended" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTValueExtended, hFNModified), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_HFNModified, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hFNModified" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_COUNTValueExtended, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P37, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_COUNTValueExtended_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_COUNTValueExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_COUNTValueExtended_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCP-SNExtended */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hFNModified */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTValueExtended_specs_1 = { + sizeof(struct S1AP_COUNTValueExtended), + offsetof(struct S1AP_COUNTValueExtended, _asn_ctx), + asn_MAP_S1AP_COUNTValueExtended_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_COUNTValueExtended_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTValueExtended = { + "COUNTValueExtended", + "COUNTValueExtended", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_COUNTValueExtended_tags_1, + sizeof(asn_DEF_S1AP_COUNTValueExtended_tags_1) + /sizeof(asn_DEF_S1AP_COUNTValueExtended_tags_1[0]), /* 1 */ + asn_DEF_S1AP_COUNTValueExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_COUNTValueExtended_tags_1) + /sizeof(asn_DEF_S1AP_COUNTValueExtended_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_COUNTValueExtended_1, + 3, /* Elements count */ + &asn_SPC_S1AP_COUNTValueExtended_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_COUNTValueExtended.h b/lib/s1ap3/asn1c/S1AP_COUNTValueExtended.h new file mode 100644 index 0000000000..17c367b428 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_COUNTValueExtended.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_COUNTValueExtended_H_ +#define _S1AP_COUNTValueExtended_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PDCP-SNExtended.h" +#include "S1AP_HFNModified.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_COUNTValueExtended */ +typedef struct S1AP_COUNTValueExtended { + S1AP_PDCP_SNExtended_t pDCP_SNExtended; + S1AP_HFNModified_t hFNModified; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_COUNTValueExtended_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTValueExtended; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_COUNTValueExtended_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_COUNTvalue.c b/lib/s1ap3/asn1c/S1AP_COUNTvalue.c new file mode 100644 index 0000000000..bd86ca7b27 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_COUNTvalue.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_COUNTvalue.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_COUNTvalue_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvalue, pDCP_SN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PDCP_SN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCP-SN" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvalue, hFN), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_HFN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hFN" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_COUNTvalue, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P36, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_COUNTvalue_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_COUNTvalue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_COUNTvalue_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCP-SN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hFN */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTvalue_specs_1 = { + sizeof(struct S1AP_COUNTvalue), + offsetof(struct S1AP_COUNTvalue, _asn_ctx), + asn_MAP_S1AP_COUNTvalue_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_COUNTvalue_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTvalue = { + "COUNTvalue", + "COUNTvalue", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_COUNTvalue_tags_1, + sizeof(asn_DEF_S1AP_COUNTvalue_tags_1) + /sizeof(asn_DEF_S1AP_COUNTvalue_tags_1[0]), /* 1 */ + asn_DEF_S1AP_COUNTvalue_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_COUNTvalue_tags_1) + /sizeof(asn_DEF_S1AP_COUNTvalue_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_COUNTvalue_1, + 3, /* Elements count */ + &asn_SPC_S1AP_COUNTvalue_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_COUNTvalue.h b/lib/s1ap3/asn1c/S1AP_COUNTvalue.h new file mode 100644 index 0000000000..3b3ee1d8e0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_COUNTvalue.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_COUNTvalue_H_ +#define _S1AP_COUNTvalue_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PDCP-SN.h" +#include "S1AP_HFN.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_COUNTvalue */ +typedef struct S1AP_COUNTvalue { + S1AP_PDCP_SN_t pDCP_SN; + S1AP_HFN_t hFN; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_COUNTvalue_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTvalue; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTvalue_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_COUNTvalue_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_COUNTvalue_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_COUNTvaluePDCP-SNlength18.c b/lib/s1ap3/asn1c/S1AP_COUNTvaluePDCP-SNlength18.c new file mode 100644 index 0000000000..b15396ac88 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_COUNTvaluePDCP-SNlength18.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_COUNTvaluePDCP-SNlength18.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_COUNTvaluePDCP_SNlength18_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvaluePDCP_SNlength18, pDCP_SNlength18), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCP-SNlength18" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvaluePDCP_SNlength18, hFNforPDCP_SNlength18), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_HFNforPDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hFNforPDCP-SNlength18" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_COUNTvaluePDCP_SNlength18, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P38, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_COUNTvaluePDCP_SNlength18_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_COUNTvaluePDCP_SNlength18_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCP-SNlength18 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hFNforPDCP-SNlength18 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTvaluePDCP_SNlength18_specs_1 = { + sizeof(struct S1AP_COUNTvaluePDCP_SNlength18), + offsetof(struct S1AP_COUNTvaluePDCP_SNlength18, _asn_ctx), + asn_MAP_S1AP_COUNTvaluePDCP_SNlength18_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_COUNTvaluePDCP_SNlength18_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTvaluePDCP_SNlength18 = { + "COUNTvaluePDCP-SNlength18", + "COUNTvaluePDCP-SNlength18", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_tags_1, + sizeof(asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_tags_1) + /sizeof(asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_tags_1) + /sizeof(asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_COUNTvaluePDCP_SNlength18_1, + 3, /* Elements count */ + &asn_SPC_S1AP_COUNTvaluePDCP_SNlength18_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_COUNTvaluePDCP-SNlength18.h b/lib/s1ap3/asn1c/S1AP_COUNTvaluePDCP-SNlength18.h new file mode 100644 index 0000000000..65ad46a380 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_COUNTvaluePDCP-SNlength18.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_COUNTvaluePDCP_SNlength18_H_ +#define _S1AP_COUNTvaluePDCP_SNlength18_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PDCP-SNlength18.h" +#include "S1AP_HFNforPDCP-SNlength18.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_COUNTvaluePDCP-SNlength18 */ +typedef struct S1AP_COUNTvaluePDCP_SNlength18 { + S1AP_PDCP_SNlength18_t pDCP_SNlength18; + S1AP_HFNforPDCP_SNlength18_t hFNforPDCP_SNlength18; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_COUNTvaluePDCP_SNlength18_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTvaluePDCP_SNlength18; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_COUNTvaluePDCP_SNlength18_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.c b/lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.c new file mode 100644 index 0000000000..cd7b5cd18e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CSFallbackIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CSFallbackIndicator_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_CSFallbackIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CSFallbackIndicator_value2enum_1[] = { + { 0, 20, "cs-fallback-required" }, + { 1, 25, "cs-fallback-high-priority" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_CSFallbackIndicator_enum2value_1[] = { + 1, /* cs-fallback-high-priority(1) */ + 0 /* cs-fallback-required(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_CSFallbackIndicator_specs_1 = { + asn_MAP_S1AP_CSFallbackIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CSFallbackIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CSFallbackIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CSFallbackIndicator = { + "CSFallbackIndicator", + "CSFallbackIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CSFallbackIndicator_tags_1, + sizeof(asn_DEF_S1AP_CSFallbackIndicator_tags_1) + /sizeof(asn_DEF_S1AP_CSFallbackIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CSFallbackIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CSFallbackIndicator_tags_1) + /sizeof(asn_DEF_S1AP_CSFallbackIndicator_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CSFallbackIndicator_constr_1, &asn_PER_type_S1AP_CSFallbackIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CSFallbackIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.h b/lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.h new file mode 100644 index 0000000000..14a08c1974 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSFallbackIndicator.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CSFallbackIndicator_H_ +#define _S1AP_CSFallbackIndicator_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CSFallbackIndicator { + S1AP_CSFallbackIndicator_cs_fallback_required = 0, + /* + * Enumeration is extensible + */ + S1AP_CSFallbackIndicator_cs_fallback_high_priority = 1 +} e_S1AP_CSFallbackIndicator; + +/* S1AP_CSFallbackIndicator */ +typedef long S1AP_CSFallbackIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CSFallbackIndicator; +asn_struct_free_f S1AP_CSFallbackIndicator_free; +asn_struct_print_f S1AP_CSFallbackIndicator_print; +asn_constr_check_f S1AP_CSFallbackIndicator_constraint; +ber_type_decoder_f S1AP_CSFallbackIndicator_decode_ber; +der_type_encoder_f S1AP_CSFallbackIndicator_encode_der; +xer_type_decoder_f S1AP_CSFallbackIndicator_decode_xer; +xer_type_encoder_f S1AP_CSFallbackIndicator_encode_xer; +oer_type_decoder_f S1AP_CSFallbackIndicator_decode_oer; +oer_type_encoder_f S1AP_CSFallbackIndicator_encode_oer; +per_type_decoder_f S1AP_CSFallbackIndicator_decode_uper; +per_type_encoder_f S1AP_CSFallbackIndicator_encode_uper; +per_type_decoder_f S1AP_CSFallbackIndicator_decode_aper; +per_type_encoder_f S1AP_CSFallbackIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CSFallbackIndicator_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CSG-Id.c b/lib/s1ap3/asn1c/S1AP_CSG-Id.c new file mode 100644 index 0000000000..0822ab3523 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSG-Id.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CSG-Id.h" + +int +S1AP_CSG_Id_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 27)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CSG_Id_constr_1 CC_NOTUSED = { + { 0, 0 }, + 27 /* (SIZE(27..27)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CSG_Id_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 27, 27 } /* (SIZE(27..27)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CSG_Id_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CSG_Id = { + "CSG-Id", + "CSG-Id", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_CSG_Id_tags_1, + sizeof(asn_DEF_S1AP_CSG_Id_tags_1) + /sizeof(asn_DEF_S1AP_CSG_Id_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CSG_Id_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CSG_Id_tags_1) + /sizeof(asn_DEF_S1AP_CSG_Id_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CSG_Id_constr_1, &asn_PER_type_S1AP_CSG_Id_constr_1, S1AP_CSG_Id_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CSG-Id.h b/lib/s1ap3/asn1c/S1AP_CSG-Id.h new file mode 100644 index 0000000000..9cb390eeb9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSG-Id.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CSG_Id_H_ +#define _S1AP_CSG_Id_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_CSG-Id */ +typedef BIT_STRING_t S1AP_CSG_Id_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CSG_Id_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CSG_Id; +asn_struct_free_f S1AP_CSG_Id_free; +asn_struct_print_f S1AP_CSG_Id_print; +asn_constr_check_f S1AP_CSG_Id_constraint; +ber_type_decoder_f S1AP_CSG_Id_decode_ber; +der_type_encoder_f S1AP_CSG_Id_encode_der; +xer_type_decoder_f S1AP_CSG_Id_decode_xer; +xer_type_encoder_f S1AP_CSG_Id_encode_xer; +oer_type_decoder_f S1AP_CSG_Id_decode_oer; +oer_type_encoder_f S1AP_CSG_Id_encode_oer; +per_type_decoder_f S1AP_CSG_Id_decode_uper; +per_type_encoder_f S1AP_CSG_Id_encode_uper; +per_type_decoder_f S1AP_CSG_Id_decode_aper; +per_type_encoder_f S1AP_CSG_Id_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CSG_Id_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.c b/lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.c new file mode 100644 index 0000000000..88bf71db92 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CSG-IdList-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CSG_IdList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CSG_IdList_Item, cSG_Id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CSG_Id, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cSG-Id" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CSG_IdList_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P35, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CSG_IdList_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CSG_IdList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CSG_IdList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cSG-Id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CSG_IdList_Item_specs_1 = { + sizeof(struct S1AP_CSG_IdList_Item), + offsetof(struct S1AP_CSG_IdList_Item, _asn_ctx), + asn_MAP_S1AP_CSG_IdList_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_CSG_IdList_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CSG_IdList_Item = { + "CSG-IdList-Item", + "CSG-IdList-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CSG_IdList_Item_tags_1, + sizeof(asn_DEF_S1AP_CSG_IdList_Item_tags_1) + /sizeof(asn_DEF_S1AP_CSG_IdList_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CSG_IdList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CSG_IdList_Item_tags_1) + /sizeof(asn_DEF_S1AP_CSG_IdList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CSG_IdList_Item_1, + 2, /* Elements count */ + &asn_SPC_S1AP_CSG_IdList_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.h b/lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.h new file mode 100644 index 0000000000..b586bc4bb1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSG-IdList-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CSG_IdList_Item_H_ +#define _S1AP_CSG_IdList_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_CSG-Id.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CSG-IdList-Item */ +typedef struct S1AP_CSG_IdList_Item { + S1AP_CSG_Id_t cSG_Id; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CSG_IdList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CSG_IdList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CSG_IdList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CSG_IdList_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CSG_IdList_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CSG-IdList.c b/lib/s1ap3/asn1c/S1AP_CSG-IdList.c new file mode 100644 index 0000000000..b4a409eb69 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSG-IdList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CSG-IdList.h" + +#include "S1AP_CSG-IdList-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_CSG_IdList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_CSG_IdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_CSG_IdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CSG_IdList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CSG_IdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_CSG_IdList_specs_1 = { + sizeof(struct S1AP_CSG_IdList), + offsetof(struct S1AP_CSG_IdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CSG_IdList = { + "CSG-IdList", + "CSG-IdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_CSG_IdList_tags_1, + sizeof(asn_DEF_S1AP_CSG_IdList_tags_1) + /sizeof(asn_DEF_S1AP_CSG_IdList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CSG_IdList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CSG_IdList_tags_1) + /sizeof(asn_DEF_S1AP_CSG_IdList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CSG_IdList_constr_1, &asn_PER_type_S1AP_CSG_IdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_CSG_IdList_1, + 1, /* Single element */ + &asn_SPC_S1AP_CSG_IdList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CSG-IdList.h b/lib/s1ap3/asn1c/S1AP_CSG-IdList.h new file mode 100644 index 0000000000..a7df832cc4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSG-IdList.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CSG_IdList_H_ +#define _S1AP_CSG_IdList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_CSG_IdList_Item; + +/* S1AP_CSG-IdList */ +typedef struct S1AP_CSG_IdList { + A_SEQUENCE_OF(struct S1AP_CSG_IdList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CSG_IdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CSG_IdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CSG_IdList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.c b/lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.c new file mode 100644 index 0000000000..93b6b691ca --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CSGMembershipInfo.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_CSGMembershipInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CSGMembershipInfo, cSGMembershipStatus), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CSGMembershipInfo, cSG_Id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CSG_Id, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cSG-Id" + }, + { ATF_POINTER, 3, offsetof(struct S1AP_CSGMembershipInfo, cellAccessMode), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CellAccessMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellAccessMode" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_CSGMembershipInfo, pLMNidentity), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNidentity" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CSGMembershipInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CSGMembershipInfo_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CSGMembershipInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CSGMembershipInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cSGMembershipStatus */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cSG-Id */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cellAccessMode */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* pLMNidentity */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_CSGMembershipInfo_specs_1 = { + sizeof(struct S1AP_CSGMembershipInfo), + offsetof(struct S1AP_CSGMembershipInfo, _asn_ctx), + asn_MAP_S1AP_CSGMembershipInfo_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_CSGMembershipInfo_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CSGMembershipInfo = { + "CSGMembershipInfo", + "CSGMembershipInfo", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CSGMembershipInfo_tags_1, + sizeof(asn_DEF_S1AP_CSGMembershipInfo_tags_1) + /sizeof(asn_DEF_S1AP_CSGMembershipInfo_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CSGMembershipInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CSGMembershipInfo_tags_1) + /sizeof(asn_DEF_S1AP_CSGMembershipInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CSGMembershipInfo_1, + 5, /* Elements count */ + &asn_SPC_S1AP_CSGMembershipInfo_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.h b/lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.h new file mode 100644 index 0000000000..fa27754339 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSGMembershipInfo.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CSGMembershipInfo_H_ +#define _S1AP_CSGMembershipInfo_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_CSGMembershipStatus.h" +#include "S1AP_CSG-Id.h" +#include "S1AP_CellAccessMode.h" +#include "S1AP_PLMNidentity.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CSGMembershipInfo */ +typedef struct S1AP_CSGMembershipInfo { + S1AP_CSGMembershipStatus_t cSGMembershipStatus; + S1AP_CSG_Id_t cSG_Id; + S1AP_CellAccessMode_t *cellAccessMode; /* OPTIONAL */ + S1AP_PLMNidentity_t *pLMNidentity; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CSGMembershipInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CSGMembershipInfo; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CSGMembershipInfo_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.c b/lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.c new file mode 100644 index 0000000000..8194034e4e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CSGMembershipStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CSGMembershipStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_CSGMembershipStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CSGMembershipStatus_value2enum_1[] = { + { 0, 6, "member" }, + { 1, 10, "not-member" } +}; +static const unsigned int asn_MAP_S1AP_CSGMembershipStatus_enum2value_1[] = { + 0, /* member(0) */ + 1 /* not-member(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_CSGMembershipStatus_specs_1 = { + asn_MAP_S1AP_CSGMembershipStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CSGMembershipStatus_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CSGMembershipStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CSGMembershipStatus = { + "CSGMembershipStatus", + "CSGMembershipStatus", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CSGMembershipStatus_tags_1, + sizeof(asn_DEF_S1AP_CSGMembershipStatus_tags_1) + /sizeof(asn_DEF_S1AP_CSGMembershipStatus_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CSGMembershipStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CSGMembershipStatus_tags_1) + /sizeof(asn_DEF_S1AP_CSGMembershipStatus_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CSGMembershipStatus_constr_1, &asn_PER_type_S1AP_CSGMembershipStatus_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CSGMembershipStatus_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.h b/lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.h new file mode 100644 index 0000000000..cfd1f85f7e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CSGMembershipStatus.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CSGMembershipStatus_H_ +#define _S1AP_CSGMembershipStatus_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CSGMembershipStatus { + S1AP_CSGMembershipStatus_member = 0, + S1AP_CSGMembershipStatus_not_member = 1 +} e_S1AP_CSGMembershipStatus; + +/* S1AP_CSGMembershipStatus */ +typedef long S1AP_CSGMembershipStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CSGMembershipStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CSGMembershipStatus; +extern const asn_INTEGER_specifics_t asn_SPC_CSGMembershipStatus_specs_1; +asn_struct_free_f CSGMembershipStatus_free; +asn_struct_print_f CSGMembershipStatus_print; +asn_constr_check_f CSGMembershipStatus_constraint; +ber_type_decoder_f CSGMembershipStatus_decode_ber; +der_type_encoder_f CSGMembershipStatus_encode_der; +xer_type_decoder_f CSGMembershipStatus_decode_xer; +xer_type_encoder_f CSGMembershipStatus_encode_xer; +oer_type_decoder_f CSGMembershipStatus_decode_oer; +oer_type_encoder_f CSGMembershipStatus_encode_oer; +per_type_decoder_f CSGMembershipStatus_decode_uper; +per_type_encoder_f CSGMembershipStatus_encode_uper; +per_type_decoder_f CSGMembershipStatus_decode_aper; +per_type_encoder_f CSGMembershipStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CSGMembershipStatus_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI-Item.c b/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI-Item.c new file mode 100644 index 0000000000..de34e0492b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CancelledCellinEAI-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinEAI_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinEAI_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinEAI_Item, numberOfBroadcasts), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_NumberOfBroadcasts, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "numberOfBroadcasts" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CancelledCellinEAI_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CancelledCellinEAI_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CancelledCellinEAI_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CancelledCellinEAI_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* numberOfBroadcasts */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CancelledCellinEAI_Item_specs_1 = { + sizeof(struct S1AP_CancelledCellinEAI_Item), + offsetof(struct S1AP_CancelledCellinEAI_Item, _asn_ctx), + asn_MAP_S1AP_CancelledCellinEAI_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_CancelledCellinEAI_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinEAI_Item = { + "CancelledCellinEAI-Item", + "CancelledCellinEAI-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CancelledCellinEAI_Item_tags_1, + sizeof(asn_DEF_S1AP_CancelledCellinEAI_Item_tags_1) + /sizeof(asn_DEF_S1AP_CancelledCellinEAI_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CancelledCellinEAI_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CancelledCellinEAI_Item_tags_1) + /sizeof(asn_DEF_S1AP_CancelledCellinEAI_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CancelledCellinEAI_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_CancelledCellinEAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI-Item.h b/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI-Item.h new file mode 100644 index 0000000000..fccf4f071d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CancelledCellinEAI_Item_H_ +#define _S1AP_CancelledCellinEAI_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include "S1AP_NumberOfBroadcasts.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CancelledCellinEAI-Item */ +typedef struct S1AP_CancelledCellinEAI_Item { + S1AP_EUTRAN_CGI_t eCGI; + S1AP_NumberOfBroadcasts_t numberOfBroadcasts; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CancelledCellinEAI_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinEAI_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CancelledCellinEAI_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinEAI_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CancelledCellinEAI_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.c b/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.c new file mode 100644 index 0000000000..0aad0c8012 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CancelledCellinEAI.h" + +#include "S1AP_CancelledCellinEAI-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_CancelledCellinEAI_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CancelledCellinEAI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinEAI_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CancelledCellinEAI_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CancelledCellinEAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_CancelledCellinEAI_specs_1 = { + sizeof(struct S1AP_CancelledCellinEAI), + offsetof(struct S1AP_CancelledCellinEAI, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinEAI = { + "CancelledCellinEAI", + "CancelledCellinEAI", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_CancelledCellinEAI_tags_1, + sizeof(asn_DEF_S1AP_CancelledCellinEAI_tags_1) + /sizeof(asn_DEF_S1AP_CancelledCellinEAI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CancelledCellinEAI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CancelledCellinEAI_tags_1) + /sizeof(asn_DEF_S1AP_CancelledCellinEAI_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CancelledCellinEAI_constr_1, &asn_PER_type_S1AP_CancelledCellinEAI_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_CancelledCellinEAI_1, + 1, /* Single element */ + &asn_SPC_S1AP_CancelledCellinEAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.h b/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.h new file mode 100644 index 0000000000..bb53d5d0af --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CancelledCellinEAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CancelledCellinEAI_H_ +#define _S1AP_CancelledCellinEAI_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_CancelledCellinEAI_Item; + +/* S1AP_CancelledCellinEAI */ +typedef struct S1AP_CancelledCellinEAI { + A_SEQUENCE_OF(struct S1AP_CancelledCellinEAI_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CancelledCellinEAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinEAI; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_CancelledCellinEAI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinEAI_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_CancelledCellinEAI_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CancelledCellinEAI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI-Item.c b/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI-Item.c new file mode 100644 index 0000000000..0b7e21b714 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CancelledCellinTAI-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinTAI_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinTAI_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinTAI_Item, numberOfBroadcasts), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_NumberOfBroadcasts, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "numberOfBroadcasts" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CancelledCellinTAI_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P27, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CancelledCellinTAI_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CancelledCellinTAI_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CancelledCellinTAI_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* numberOfBroadcasts */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CancelledCellinTAI_Item_specs_1 = { + sizeof(struct S1AP_CancelledCellinTAI_Item), + offsetof(struct S1AP_CancelledCellinTAI_Item, _asn_ctx), + asn_MAP_S1AP_CancelledCellinTAI_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_CancelledCellinTAI_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinTAI_Item = { + "CancelledCellinTAI-Item", + "CancelledCellinTAI-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CancelledCellinTAI_Item_tags_1, + sizeof(asn_DEF_S1AP_CancelledCellinTAI_Item_tags_1) + /sizeof(asn_DEF_S1AP_CancelledCellinTAI_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CancelledCellinTAI_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CancelledCellinTAI_Item_tags_1) + /sizeof(asn_DEF_S1AP_CancelledCellinTAI_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CancelledCellinTAI_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_CancelledCellinTAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI-Item.h b/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI-Item.h new file mode 100644 index 0000000000..35f76be4a9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CancelledCellinTAI_Item_H_ +#define _S1AP_CancelledCellinTAI_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include "S1AP_NumberOfBroadcasts.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CancelledCellinTAI-Item */ +typedef struct S1AP_CancelledCellinTAI_Item { + S1AP_EUTRAN_CGI_t eCGI; + S1AP_NumberOfBroadcasts_t numberOfBroadcasts; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CancelledCellinTAI_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinTAI_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CancelledCellinTAI_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinTAI_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CancelledCellinTAI_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.c b/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.c new file mode 100644 index 0000000000..9f556d0e50 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CancelledCellinTAI.h" + +#include "S1AP_CancelledCellinTAI-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_CancelledCellinTAI_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CancelledCellinTAI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinTAI_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CancelledCellinTAI_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CancelledCellinTAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_CancelledCellinTAI_specs_1 = { + sizeof(struct S1AP_CancelledCellinTAI), + offsetof(struct S1AP_CancelledCellinTAI, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinTAI = { + "CancelledCellinTAI", + "CancelledCellinTAI", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_CancelledCellinTAI_tags_1, + sizeof(asn_DEF_S1AP_CancelledCellinTAI_tags_1) + /sizeof(asn_DEF_S1AP_CancelledCellinTAI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CancelledCellinTAI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CancelledCellinTAI_tags_1) + /sizeof(asn_DEF_S1AP_CancelledCellinTAI_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CancelledCellinTAI_constr_1, &asn_PER_type_S1AP_CancelledCellinTAI_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_CancelledCellinTAI_1, + 1, /* Single element */ + &asn_SPC_S1AP_CancelledCellinTAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.h b/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.h new file mode 100644 index 0000000000..0b17382b3c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CancelledCellinTAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CancelledCellinTAI_H_ +#define _S1AP_CancelledCellinTAI_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_CancelledCellinTAI_Item; + +/* S1AP_CancelledCellinTAI */ +typedef struct S1AP_CancelledCellinTAI { + A_SEQUENCE_OF(struct S1AP_CancelledCellinTAI_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CancelledCellinTAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinTAI; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_CancelledCellinTAI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinTAI_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_CancelledCellinTAI_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CancelledCellinTAI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cause.c b/lib/s1ap3/asn1c/S1AP_Cause.c new file mode 100644 index 0000000000..ec0920db35 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cause.c @@ -0,0 +1,95 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cause.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_Cause_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Cause_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_Cause_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cause, choice.radioNetwork), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CauseRadioNetwork, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioNetwork" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cause, choice.transport), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CauseTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transport" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cause, choice.nas), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CauseNas, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nas" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cause, choice.protocol), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CauseProtocol, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocol" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cause, choice.misc), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CauseMisc, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "misc" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Cause_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* misc */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_Cause_specs_1 = { + sizeof(struct S1AP_Cause), + offsetof(struct S1AP_Cause, _asn_ctx), + offsetof(struct S1AP_Cause, present), + sizeof(((struct S1AP_Cause *)0)->present), + asn_MAP_S1AP_Cause_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, + 5 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cause = { + "Cause", + "Cause", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_Cause_constr_1, &asn_PER_type_S1AP_Cause_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_Cause_1, + 5, /* Elements count */ + &asn_SPC_S1AP_Cause_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cause.h b/lib/s1ap3/asn1c/S1AP_Cause.h new file mode 100644 index 0000000000..358782db15 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cause.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cause_H_ +#define _S1AP_Cause_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_CauseRadioNetwork.h" +#include "S1AP_CauseTransport.h" +#include "S1AP_CauseNas.h" +#include "S1AP_CauseProtocol.h" +#include "S1AP_CauseMisc.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Cause_PR { + Cause_PR_NOTHING, /* No components present */ + Cause_PR_radioNetwork, + Cause_PR_transport, + Cause_PR_nas, + Cause_PR_protocol, + Cause_PR_misc + /* Extensions may appear below */ + +} S1AP_Cause_PR; + +/* S1AP_Cause */ +typedef struct S1AP_Cause { + S1AP_Cause_PR present; + union S1AP_Cause_u { + S1AP_CauseRadioNetwork_t radioNetwork; + S1AP_CauseTransport_t transport; + S1AP_CauseNas_t nas; + S1AP_CauseProtocol_t protocol; + S1AP_CauseMisc_t misc; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cause; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_Cause_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_Cause_1[5]; +extern asn_per_constraints_t asn_PER_type_S1AP_Cause_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cause_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CauseMisc.c b/lib/s1ap3/asn1c/S1AP_CauseMisc.c new file mode 100644 index 0000000000..7b3f685e3c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseMisc.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CauseMisc.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CauseMisc_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_CauseMisc_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CauseMisc_value2enum_1[] = { + { 0, 27, "control-processing-overload" }, + { 1, 42, "not-enough-user-plane-processing-resources" }, + { 2, 16, "hardware-failure" }, + { 3, 15, "om-intervention" }, + { 4, 11, "unspecified" }, + { 5, 12, "unknown-PLMN" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_CauseMisc_enum2value_1[] = { + 0, /* control-processing-overload(0) */ + 2, /* hardware-failure(2) */ + 1, /* not-enough-user-plane-processing-resources(1) */ + 3, /* om-intervention(3) */ + 5, /* unknown-PLMN(5) */ + 4 /* unspecified(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_CauseMisc_specs_1 = { + asn_MAP_S1AP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CauseMisc_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CauseMisc = { + "CauseMisc", + "CauseMisc", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CauseMisc_tags_1, + sizeof(asn_DEF_S1AP_CauseMisc_tags_1) + /sizeof(asn_DEF_S1AP_CauseMisc_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CauseMisc_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CauseMisc_tags_1) + /sizeof(asn_DEF_S1AP_CauseMisc_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CauseMisc_constr_1, &asn_PER_type_S1AP_CauseMisc_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CauseMisc_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CauseMisc.h b/lib/s1ap3/asn1c/S1AP_CauseMisc.h new file mode 100644 index 0000000000..f0377c953c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseMisc.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CauseMisc_H_ +#define _S1AP_CauseMisc_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CauseMisc { + S1AP_CauseMisc_control_processing_overload = 0, + S1AP_CauseMisc_not_enough_user_plane_processing_resources = 1, + S1AP_CauseMisc_hardware_failure = 2, + S1AP_CauseMisc_om_intervention = 3, + S1AP_CauseMisc_unspecified = 4, + S1AP_CauseMisc_unknown_PLMN = 5 + /* + * Enumeration is extensible + */ +} e_S1AP_CauseMisc; + +/* S1AP_CauseMisc */ +typedef long S1AP_CauseMisc_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CauseMisc_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CauseMisc; +extern const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1; +asn_struct_free_f CauseMisc_free; +asn_struct_print_f CauseMisc_print; +asn_constr_check_f CauseMisc_constraint; +ber_type_decoder_f CauseMisc_decode_ber; +der_type_encoder_f CauseMisc_encode_der; +xer_type_decoder_f CauseMisc_decode_xer; +xer_type_encoder_f CauseMisc_encode_xer; +oer_type_decoder_f CauseMisc_decode_oer; +oer_type_encoder_f CauseMisc_encode_oer; +per_type_decoder_f CauseMisc_decode_uper; +per_type_encoder_f CauseMisc_encode_uper; +per_type_decoder_f CauseMisc_decode_aper; +per_type_encoder_f CauseMisc_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CauseMisc_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CauseNas.c b/lib/s1ap3/asn1c/S1AP_CauseNas.c new file mode 100644 index 0000000000..cb91fb3841 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseNas.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CauseNas.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CauseNas_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_CauseNas_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CauseNas_value2enum_1[] = { + { 0, 14, "normal-release" }, + { 1, 22, "authentication-failure" }, + { 2, 6, "detach" }, + { 3, 11, "unspecified" }, + { 4, 23, "csg-subscription-expiry" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_CauseNas_enum2value_1[] = { + 1, /* authentication-failure(1) */ + 4, /* csg-subscription-expiry(4) */ + 2, /* detach(2) */ + 0, /* normal-release(0) */ + 3 /* unspecified(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_CauseNas_specs_1 = { + asn_MAP_S1AP_CauseNas_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CauseNas_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CauseNas_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CauseNas = { + "CauseNas", + "CauseNas", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CauseNas_tags_1, + sizeof(asn_DEF_S1AP_CauseNas_tags_1) + /sizeof(asn_DEF_S1AP_CauseNas_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CauseNas_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CauseNas_tags_1) + /sizeof(asn_DEF_S1AP_CauseNas_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CauseNas_constr_1, &asn_PER_type_S1AP_CauseNas_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CauseNas_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CauseNas.h b/lib/s1ap3/asn1c/S1AP_CauseNas.h new file mode 100644 index 0000000000..13f8dc49a9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseNas.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CauseNas_H_ +#define _S1AP_CauseNas_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CauseNas { + S1AP_CauseNas_normal_release = 0, + S1AP_CauseNas_authentication_failure = 1, + S1AP_CauseNas_detach = 2, + S1AP_CauseNas_unspecified = 3, + /* + * Enumeration is extensible + */ + S1AP_CauseNas_csg_subscription_expiry = 4 +} e_S1AP_CauseNas; + +/* S1AP_CauseNas */ +typedef long S1AP_CauseNas_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CauseNas_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CauseNas; +extern const asn_INTEGER_specifics_t asn_SPC_CauseNas_specs_1; +asn_struct_free_f CauseNas_free; +asn_struct_print_f CauseNas_print; +asn_constr_check_f CauseNas_constraint; +ber_type_decoder_f CauseNas_decode_ber; +der_type_encoder_f CauseNas_encode_der; +xer_type_decoder_f CauseNas_decode_xer; +xer_type_encoder_f CauseNas_encode_xer; +oer_type_decoder_f CauseNas_decode_oer; +oer_type_encoder_f CauseNas_encode_oer; +per_type_decoder_f CauseNas_decode_uper; +per_type_encoder_f CauseNas_encode_uper; +per_type_decoder_f CauseNas_decode_aper; +per_type_encoder_f CauseNas_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CauseNas_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CauseProtocol.c b/lib/s1ap3/asn1c/S1AP_CauseProtocol.c new file mode 100644 index 0000000000..342cd2cda1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseProtocol.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CauseProtocol.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CauseProtocol_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_CauseProtocol_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CauseProtocol_value2enum_1[] = { + { 0, 21, "transfer-syntax-error" }, + { 1, 28, "abstract-syntax-error-reject" }, + { 2, 39, "abstract-syntax-error-ignore-and-notify" }, + { 3, 42, "message-not-compatible-with-receiver-state" }, + { 4, 14, "semantic-error" }, + { 5, 49, "abstract-syntax-error-falsely-constructed-message" }, + { 6, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_CauseProtocol_enum2value_1[] = { + 5, /* abstract-syntax-error-falsely-constructed-message(5) */ + 2, /* abstract-syntax-error-ignore-and-notify(2) */ + 1, /* abstract-syntax-error-reject(1) */ + 3, /* message-not-compatible-with-receiver-state(3) */ + 4, /* semantic-error(4) */ + 0, /* transfer-syntax-error(0) */ + 6 /* unspecified(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_CauseProtocol_specs_1 = { + asn_MAP_S1AP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CauseProtocol_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CauseProtocol = { + "CauseProtocol", + "CauseProtocol", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CauseProtocol_tags_1, + sizeof(asn_DEF_S1AP_CauseProtocol_tags_1) + /sizeof(asn_DEF_S1AP_CauseProtocol_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CauseProtocol_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CauseProtocol_tags_1) + /sizeof(asn_DEF_S1AP_CauseProtocol_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CauseProtocol_constr_1, &asn_PER_type_S1AP_CauseProtocol_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CauseProtocol_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CauseProtocol.h b/lib/s1ap3/asn1c/S1AP_CauseProtocol.h new file mode 100644 index 0000000000..5e5912855f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseProtocol.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CauseProtocol_H_ +#define _S1AP_CauseProtocol_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CauseProtocol { + S1AP_CauseProtocol_transfer_syntax_error = 0, + S1AP_CauseProtocol_abstract_syntax_error_reject = 1, + S1AP_CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, + S1AP_CauseProtocol_message_not_compatible_with_receiver_state = 3, + S1AP_CauseProtocol_semantic_error = 4, + S1AP_CauseProtocol_abstract_syntax_error_falsely_constructed_message = 5, + S1AP_CauseProtocol_unspecified = 6 + /* + * Enumeration is extensible + */ +} e_S1AP_CauseProtocol; + +/* S1AP_CauseProtocol */ +typedef long S1AP_CauseProtocol_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CauseProtocol_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CauseProtocol; +extern const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1; +asn_struct_free_f CauseProtocol_free; +asn_struct_print_f CauseProtocol_print; +asn_constr_check_f CauseProtocol_constraint; +ber_type_decoder_f CauseProtocol_decode_ber; +der_type_encoder_f CauseProtocol_encode_der; +xer_type_decoder_f CauseProtocol_decode_xer; +xer_type_encoder_f CauseProtocol_encode_xer; +oer_type_decoder_f CauseProtocol_decode_oer; +oer_type_encoder_f CauseProtocol_encode_oer; +per_type_decoder_f CauseProtocol_decode_uper; +per_type_encoder_f CauseProtocol_encode_uper; +per_type_decoder_f CauseProtocol_decode_aper; +per_type_encoder_f CauseProtocol_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CauseProtocol_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.c b/lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.c new file mode 100644 index 0000000000..0f9754abab --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.c @@ -0,0 +1,134 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CauseRadioNetwork.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CauseRadioNetwork_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_CauseRadioNetwork_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 0, 35 } /* (0..35,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CauseRadioNetwork_value2enum_1[] = { + { 0, 11, "unspecified" }, + { 1, 22, "tx2relocoverall-expiry" }, + { 2, 19, "successful-handover" }, + { 3, 38, "release-due-to-eutran-generated-reason" }, + { 4, 18, "handover-cancelled" }, + { 5, 16, "partial-handover" }, + { 6, 45, "ho-failure-in-target-EPC-eNB-or-target-system" }, + { 7, 21, "ho-target-not-allowed" }, + { 8, 22, "tS1relocoverall-expiry" }, + { 9, 19, "tS1relocprep-expiry" }, + { 10, 18, "cell-not-available" }, + { 11, 16, "unknown-targetID" }, + { 12, 43, "no-radio-resources-available-in-target-cell" }, + { 13, 22, "unknown-mme-ue-s1ap-id" }, + { 14, 22, "unknown-enb-ue-s1ap-id" }, + { 15, 23, "unknown-pair-ue-s1ap-id" }, + { 16, 35, "handover-desirable-for-radio-reason" }, + { 17, 22, "time-critical-handover" }, + { 18, 30, "resource-optimisation-handover" }, + { 19, 27, "reduce-load-in-serving-cell" }, + { 20, 15, "user-inactivity" }, + { 21, 29, "radio-connection-with-ue-lost" }, + { 22, 27, "load-balancing-tau-required" }, + { 23, 21, "cs-fallback-triggered" }, + { 24, 31, "ue-not-available-for-ps-service" }, + { 25, 29, "radio-resources-not-available" }, + { 26, 36, "failure-in-radio-interface-procedure" }, + { 27, 23, "invalid-qos-combination" }, + { 28, 20, "interrat-redirection" }, + { 29, 32, "interaction-with-other-procedure" }, + { 30, 16, "unknown-E-RAB-ID" }, + { 31, 27, "multiple-E-RAB-ID-instances" }, + { 32, 63, "encryption-and-or-integrity-protection-algorithms-not-supported" }, + { 33, 34, "s1-intra-system-handover-triggered" }, + { 34, 34, "s1-inter-system-handover-triggered" }, + { 35, 21, "x2-handover-triggered" }, + { 36, 25, "redirection-towards-1xRTT" }, + { 37, 23, "not-supported-QCI-value" }, + { 38, 14, "invalid-CSG-Id" }, + { 39, 26, "release-due-to-pre-emption" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_CauseRadioNetwork_enum2value_1[] = { + 10, /* cell-not-available(10) */ + 23, /* cs-fallback-triggered(23) */ + 32, /* encryption-and-or-integrity-protection-algorithms-not-supported(32) */ + 26, /* failure-in-radio-interface-procedure(26) */ + 4, /* handover-cancelled(4) */ + 16, /* handover-desirable-for-radio-reason(16) */ + 6, /* ho-failure-in-target-EPC-eNB-or-target-system(6) */ + 7, /* ho-target-not-allowed(7) */ + 29, /* interaction-with-other-procedure(29) */ + 28, /* interrat-redirection(28) */ + 38, /* invalid-CSG-Id(38) */ + 27, /* invalid-qos-combination(27) */ + 22, /* load-balancing-tau-required(22) */ + 31, /* multiple-E-RAB-ID-instances(31) */ + 12, /* no-radio-resources-available-in-target-cell(12) */ + 37, /* not-supported-QCI-value(37) */ + 5, /* partial-handover(5) */ + 21, /* radio-connection-with-ue-lost(21) */ + 25, /* radio-resources-not-available(25) */ + 36, /* redirection-towards-1xRTT(36) */ + 19, /* reduce-load-in-serving-cell(19) */ + 3, /* release-due-to-eutran-generated-reason(3) */ + 39, /* release-due-to-pre-emption(39) */ + 18, /* resource-optimisation-handover(18) */ + 34, /* s1-inter-system-handover-triggered(34) */ + 33, /* s1-intra-system-handover-triggered(33) */ + 2, /* successful-handover(2) */ + 8, /* tS1relocoverall-expiry(8) */ + 9, /* tS1relocprep-expiry(9) */ + 17, /* time-critical-handover(17) */ + 1, /* tx2relocoverall-expiry(1) */ + 24, /* ue-not-available-for-ps-service(24) */ + 30, /* unknown-E-RAB-ID(30) */ + 14, /* unknown-enb-ue-s1ap-id(14) */ + 13, /* unknown-mme-ue-s1ap-id(13) */ + 15, /* unknown-pair-ue-s1ap-id(15) */ + 11, /* unknown-targetID(11) */ + 0, /* unspecified(0) */ + 20, /* user-inactivity(20) */ + 35 /* x2-handover-triggered(35) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_CauseRadioNetwork_specs_1 = { + asn_MAP_S1AP_CauseRadioNetwork_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CauseRadioNetwork_enum2value_1, /* N => "tag"; sorted by N */ + 40, /* Number of elements in the maps */ + 37, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CauseRadioNetwork_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CauseRadioNetwork = { + "CauseRadioNetwork", + "CauseRadioNetwork", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CauseRadioNetwork_tags_1, + sizeof(asn_DEF_S1AP_CauseRadioNetwork_tags_1) + /sizeof(asn_DEF_S1AP_CauseRadioNetwork_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CauseRadioNetwork_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CauseRadioNetwork_tags_1) + /sizeof(asn_DEF_S1AP_CauseRadioNetwork_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CauseRadioNetwork_constr_1, &asn_PER_type_S1AP_CauseRadioNetwork_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CauseRadioNetwork_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.h b/lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.h new file mode 100644 index 0000000000..32bb20fcce --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseRadioNetwork.h @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CauseRadioNetwork_H_ +#define _S1AP_CauseRadioNetwork_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CauseRadioNetwork { + S1AP_CauseRadioNetwork_unspecified = 0, + S1AP_CauseRadioNetwork_tx2relocoverall_expiry = 1, + S1AP_CauseRadioNetwork_successful_handover = 2, + S1AP_CauseRadioNetwork_release_due_to_eutran_generated_reason = 3, + S1AP_CauseRadioNetwork_handover_cancelled = 4, + S1AP_CauseRadioNetwork_partial_handover = 5, + S1AP_CauseRadioNetwork_ho_failure_in_target_EPC_eNB_or_target_system = 6, + S1AP_CauseRadioNetwork_ho_target_not_allowed = 7, + S1AP_CauseRadioNetwork_tS1relocoverall_expiry = 8, + S1AP_CauseRadioNetwork_tS1relocprep_expiry = 9, + S1AP_CauseRadioNetwork_cell_not_available = 10, + S1AP_CauseRadioNetwork_unknown_targetID = 11, + S1AP_CauseRadioNetwork_no_radio_resources_available_in_target_cell = 12, + S1AP_CauseRadioNetwork_unknown_mme_ue_s1ap_id = 13, + S1AP_CauseRadioNetwork_unknown_enb_ue_s1ap_id = 14, + S1AP_CauseRadioNetwork_unknown_pair_ue_s1ap_id = 15, + S1AP_CauseRadioNetwork_handover_desirable_for_radio_reason = 16, + S1AP_CauseRadioNetwork_time_critical_handover = 17, + S1AP_CauseRadioNetwork_resource_optimisation_handover = 18, + S1AP_CauseRadioNetwork_reduce_load_in_serving_cell = 19, + S1AP_CauseRadioNetwork_user_inactivity = 20, + S1AP_CauseRadioNetwork_radio_connection_with_ue_lost = 21, + S1AP_CauseRadioNetwork_load_balancing_tau_required = 22, + S1AP_CauseRadioNetwork_cs_fallback_triggered = 23, + S1AP_CauseRadioNetwork_ue_not_available_for_ps_service = 24, + S1AP_CauseRadioNetwork_radio_resources_not_available = 25, + S1AP_CauseRadioNetwork_failure_in_radio_interface_procedure = 26, + S1AP_CauseRadioNetwork_invalid_qos_combination = 27, + S1AP_CauseRadioNetwork_interrat_redirection = 28, + S1AP_CauseRadioNetwork_interaction_with_other_procedure = 29, + S1AP_CauseRadioNetwork_unknown_E_RAB_ID = 30, + S1AP_CauseRadioNetwork_multiple_E_RAB_ID_instances = 31, + S1AP_CauseRadioNetwork_encryption_and_or_integrity_protection_algorithms_not_supported = 32, + S1AP_CauseRadioNetwork_s1_intra_system_handover_triggered = 33, + S1AP_CauseRadioNetwork_s1_inter_system_handover_triggered = 34, + S1AP_CauseRadioNetwork_x2_handover_triggered = 35, + /* + * Enumeration is extensible + */ + S1AP_CauseRadioNetwork_redirection_towards_1xRTT = 36, + S1AP_CauseRadioNetwork_not_supported_QCI_value = 37, + S1AP_CauseRadioNetwork_invalid_CSG_Id = 38, + S1AP_CauseRadioNetwork_release_due_to_pre_emption = 39 +} e_S1AP_CauseRadioNetwork; + +/* S1AP_CauseRadioNetwork */ +typedef long S1AP_CauseRadioNetwork_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CauseRadioNetwork_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CauseRadioNetwork; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRadioNetwork_specs_1; +asn_struct_free_f CauseRadioNetwork_free; +asn_struct_print_f CauseRadioNetwork_print; +asn_constr_check_f CauseRadioNetwork_constraint; +ber_type_decoder_f CauseRadioNetwork_decode_ber; +der_type_encoder_f CauseRadioNetwork_encode_der; +xer_type_decoder_f CauseRadioNetwork_decode_xer; +xer_type_encoder_f CauseRadioNetwork_encode_xer; +oer_type_decoder_f CauseRadioNetwork_decode_oer; +oer_type_encoder_f CauseRadioNetwork_encode_oer; +per_type_decoder_f CauseRadioNetwork_decode_uper; +per_type_encoder_f CauseRadioNetwork_encode_uper; +per_type_decoder_f CauseRadioNetwork_decode_aper; +per_type_encoder_f CauseRadioNetwork_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CauseRadioNetwork_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CauseTransport.c b/lib/s1ap3/asn1c/S1AP_CauseTransport.c new file mode 100644 index 0000000000..5024d7ab14 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseTransport.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CauseTransport.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CauseTransport_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_CauseTransport_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CauseTransport_value2enum_1[] = { + { 0, 30, "transport-resource-unavailable" }, + { 1, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_CauseTransport_enum2value_1[] = { + 0, /* transport-resource-unavailable(0) */ + 1 /* unspecified(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_CauseTransport_specs_1 = { + asn_MAP_S1AP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CauseTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CauseTransport = { + "CauseTransport", + "CauseTransport", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CauseTransport_tags_1, + sizeof(asn_DEF_S1AP_CauseTransport_tags_1) + /sizeof(asn_DEF_S1AP_CauseTransport_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CauseTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CauseTransport_tags_1) + /sizeof(asn_DEF_S1AP_CauseTransport_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CauseTransport_constr_1, &asn_PER_type_S1AP_CauseTransport_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CauseTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CauseTransport.h b/lib/s1ap3/asn1c/S1AP_CauseTransport.h new file mode 100644 index 0000000000..110e8a6831 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CauseTransport.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CauseTransport_H_ +#define _S1AP_CauseTransport_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CauseTransport { + S1AP_CauseTransport_transport_resource_unavailable = 0, + S1AP_CauseTransport_unspecified = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_CauseTransport; + +/* S1AP_CauseTransport */ +typedef long S1AP_CauseTransport_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CauseTransport_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CauseTransport; +extern const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1; +asn_struct_free_f CauseTransport_free; +asn_struct_print_f CauseTransport_print; +asn_constr_check_f CauseTransport_constraint; +ber_type_decoder_f CauseTransport_decode_ber; +der_type_encoder_f CauseTransport_encode_der; +xer_type_decoder_f CauseTransport_decode_xer; +xer_type_encoder_f CauseTransport_encode_xer; +oer_type_decoder_f CauseTransport_decode_oer; +oer_type_encoder_f CauseTransport_encode_oer; +per_type_decoder_f CauseTransport_decode_uper; +per_type_encoder_f CauseTransport_encode_uper; +per_type_decoder_f CauseTransport_decode_aper; +per_type_encoder_f CauseTransport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CauseTransport_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000HORequiredIndication.c b/lib/s1ap3/asn1c/S1AP_Cdma2000HORequiredIndication.c new file mode 100644 index 0000000000..bd4adbea15 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000HORequiredIndication.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000HORequiredIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Cdma2000HORequiredIndication_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_Cdma2000HORequiredIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Cdma2000HORequiredIndication_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_Cdma2000HORequiredIndication_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_Cdma2000HORequiredIndication_specs_1 = { + asn_MAP_S1AP_Cdma2000HORequiredIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Cdma2000HORequiredIndication_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000HORequiredIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000HORequiredIndication = { + "Cdma2000HORequiredIndication", + "Cdma2000HORequiredIndication", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Cdma2000HORequiredIndication_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000HORequiredIndication_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000HORequiredIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000HORequiredIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000HORequiredIndication_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000HORequiredIndication_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Cdma2000HORequiredIndication_constr_1, &asn_PER_type_S1AP_Cdma2000HORequiredIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Cdma2000HORequiredIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000HORequiredIndication.h b/lib/s1ap3/asn1c/S1AP_Cdma2000HORequiredIndication.h new file mode 100644 index 0000000000..e8c5f9ad5f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000HORequiredIndication.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000HORequiredIndication_H_ +#define _S1AP_Cdma2000HORequiredIndication_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Cdma2000HORequiredIndication { + S1AP_Cdma2000HORequiredIndication_true = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_Cdma2000HORequiredIndication; + +/* S1AP_Cdma2000HORequiredIndication */ +typedef long S1AP_Cdma2000HORequiredIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000HORequiredIndication; +asn_struct_free_f S1AP_Cdma2000HORequiredIndication_free; +asn_struct_print_f S1AP_Cdma2000HORequiredIndication_print; +asn_constr_check_f S1AP_Cdma2000HORequiredIndication_constraint; +ber_type_decoder_f S1AP_Cdma2000HORequiredIndication_decode_ber; +der_type_encoder_f S1AP_Cdma2000HORequiredIndication_encode_der; +xer_type_decoder_f S1AP_Cdma2000HORequiredIndication_decode_xer; +xer_type_encoder_f S1AP_Cdma2000HORequiredIndication_encode_xer; +oer_type_decoder_f S1AP_Cdma2000HORequiredIndication_decode_oer; +oer_type_encoder_f S1AP_Cdma2000HORequiredIndication_encode_oer; +per_type_decoder_f S1AP_Cdma2000HORequiredIndication_decode_uper; +per_type_encoder_f S1AP_Cdma2000HORequiredIndication_encode_uper; +per_type_decoder_f S1AP_Cdma2000HORequiredIndication_decode_aper; +per_type_encoder_f S1AP_Cdma2000HORequiredIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000HORequiredIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.c b/lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.c new file mode 100644 index 0000000000..46fdb61a11 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000HOStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Cdma2000HOStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_Cdma2000HOStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Cdma2000HOStatus_value2enum_1[] = { + { 0, 9, "hOSuccess" }, + { 1, 9, "hOFailure" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_Cdma2000HOStatus_enum2value_1[] = { + 1, /* hOFailure(1) */ + 0 /* hOSuccess(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_Cdma2000HOStatus_specs_1 = { + asn_MAP_S1AP_Cdma2000HOStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Cdma2000HOStatus_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000HOStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000HOStatus = { + "Cdma2000HOStatus", + "Cdma2000HOStatus", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Cdma2000HOStatus_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000HOStatus_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000HOStatus_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000HOStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000HOStatus_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000HOStatus_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Cdma2000HOStatus_constr_1, &asn_PER_type_S1AP_Cdma2000HOStatus_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Cdma2000HOStatus_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.h b/lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.h new file mode 100644 index 0000000000..c82dd62ddd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000HOStatus.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000HOStatus_H_ +#define _S1AP_Cdma2000HOStatus_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Cdma2000HOStatus { + S1AP_Cdma2000HOStatus_hOSuccess = 0, + S1AP_Cdma2000HOStatus_hOFailure = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_Cdma2000HOStatus; + +/* S1AP_Cdma2000HOStatus */ +typedef long S1AP_Cdma2000HOStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000HOStatus; +asn_struct_free_f S1AP_Cdma2000HOStatus_free; +asn_struct_print_f S1AP_Cdma2000HOStatus_print; +asn_constr_check_f S1AP_Cdma2000HOStatus_constraint; +ber_type_decoder_f S1AP_Cdma2000HOStatus_decode_ber; +der_type_encoder_f S1AP_Cdma2000HOStatus_encode_der; +xer_type_decoder_f S1AP_Cdma2000HOStatus_decode_xer; +xer_type_encoder_f S1AP_Cdma2000HOStatus_encode_xer; +oer_type_decoder_f S1AP_Cdma2000HOStatus_decode_oer; +oer_type_encoder_f S1AP_Cdma2000HOStatus_encode_oer; +per_type_decoder_f S1AP_Cdma2000HOStatus_decode_uper; +per_type_encoder_f S1AP_Cdma2000HOStatus_encode_uper; +per_type_decoder_f S1AP_Cdma2000HOStatus_decode_aper; +per_type_encoder_f S1AP_Cdma2000HOStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000HOStatus_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.c b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.c new file mode 100644 index 0000000000..02cdee3ac1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000OneXMEID.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000OneXMEID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXMEID = { + "Cdma2000OneXMEID", + "Cdma2000OneXMEID", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Cdma2000OneXMEID_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000OneXMEID_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXMEID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000OneXMEID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000OneXMEID_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXMEID_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.h b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.h new file mode 100644 index 0000000000..9770137554 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMEID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000OneXMEID_H_ +#define _S1AP_Cdma2000OneXMEID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Cdma2000OneXMEID */ +typedef OCTET_STRING_t S1AP_Cdma2000OneXMEID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXMEID; +asn_struct_free_f S1AP_Cdma2000OneXMEID_free; +asn_struct_print_f S1AP_Cdma2000OneXMEID_print; +asn_constr_check_f S1AP_Cdma2000OneXMEID_constraint; +ber_type_decoder_f S1AP_Cdma2000OneXMEID_decode_ber; +der_type_encoder_f S1AP_Cdma2000OneXMEID_encode_der; +xer_type_decoder_f S1AP_Cdma2000OneXMEID_decode_xer; +xer_type_encoder_f S1AP_Cdma2000OneXMEID_encode_xer; +oer_type_decoder_f S1AP_Cdma2000OneXMEID_decode_oer; +oer_type_encoder_f S1AP_Cdma2000OneXMEID_encode_oer; +per_type_decoder_f S1AP_Cdma2000OneXMEID_decode_uper; +per_type_encoder_f S1AP_Cdma2000OneXMEID_encode_uper; +per_type_decoder_f S1AP_Cdma2000OneXMEID_decode_aper; +per_type_encoder_f S1AP_Cdma2000OneXMEID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000OneXMEID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.c b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.c new file mode 100644 index 0000000000..4c418fd44c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000OneXMSI.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000OneXMSI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXMSI = { + "Cdma2000OneXMSI", + "Cdma2000OneXMSI", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Cdma2000OneXMSI_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000OneXMSI_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXMSI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000OneXMSI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000OneXMSI_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXMSI_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.h b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.h new file mode 100644 index 0000000000..0a9941b9f2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXMSI.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000OneXMSI_H_ +#define _S1AP_Cdma2000OneXMSI_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Cdma2000OneXMSI */ +typedef OCTET_STRING_t S1AP_Cdma2000OneXMSI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXMSI; +asn_struct_free_f S1AP_Cdma2000OneXMSI_free; +asn_struct_print_f S1AP_Cdma2000OneXMSI_print; +asn_constr_check_f S1AP_Cdma2000OneXMSI_constraint; +ber_type_decoder_f S1AP_Cdma2000OneXMSI_decode_ber; +der_type_encoder_f S1AP_Cdma2000OneXMSI_encode_der; +xer_type_decoder_f S1AP_Cdma2000OneXMSI_decode_xer; +xer_type_encoder_f S1AP_Cdma2000OneXMSI_encode_xer; +oer_type_decoder_f S1AP_Cdma2000OneXMSI_decode_oer; +oer_type_encoder_f S1AP_Cdma2000OneXMSI_encode_oer; +per_type_decoder_f S1AP_Cdma2000OneXMSI_decode_uper; +per_type_encoder_f S1AP_Cdma2000OneXMSI_encode_uper; +per_type_decoder_f S1AP_Cdma2000OneXMSI_decode_aper; +per_type_encoder_f S1AP_Cdma2000OneXMSI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000OneXMSI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.c b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.c new file mode 100644 index 0000000000..1dc26a84a4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000OneXPilot.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000OneXPilot_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXPilot = { + "Cdma2000OneXPilot", + "Cdma2000OneXPilot", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Cdma2000OneXPilot_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000OneXPilot_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXPilot_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000OneXPilot_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000OneXPilot_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXPilot_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.h b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.h new file mode 100644 index 0000000000..d18238b1e0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXPilot.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000OneXPilot_H_ +#define _S1AP_Cdma2000OneXPilot_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Cdma2000OneXPilot */ +typedef OCTET_STRING_t S1AP_Cdma2000OneXPilot_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXPilot; +asn_struct_free_f S1AP_Cdma2000OneXPilot_free; +asn_struct_print_f S1AP_Cdma2000OneXPilot_print; +asn_constr_check_f S1AP_Cdma2000OneXPilot_constraint; +ber_type_decoder_f S1AP_Cdma2000OneXPilot_decode_ber; +der_type_encoder_f S1AP_Cdma2000OneXPilot_encode_der; +xer_type_decoder_f S1AP_Cdma2000OneXPilot_decode_xer; +xer_type_encoder_f S1AP_Cdma2000OneXPilot_encode_xer; +oer_type_decoder_f S1AP_Cdma2000OneXPilot_decode_oer; +oer_type_encoder_f S1AP_Cdma2000OneXPilot_encode_oer; +per_type_decoder_f S1AP_Cdma2000OneXPilot_decode_uper; +per_type_encoder_f S1AP_Cdma2000OneXPilot_encode_uper; +per_type_decoder_f S1AP_Cdma2000OneXPilot_decode_aper; +per_type_encoder_f S1AP_Cdma2000OneXPilot_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000OneXPilot_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.c b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.c new file mode 100644 index 0000000000..8b8bfa26d1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000OneXRAND.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000OneXRAND_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXRAND = { + "Cdma2000OneXRAND", + "Cdma2000OneXRAND", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Cdma2000OneXRAND_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000OneXRAND_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXRAND_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000OneXRAND_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000OneXRAND_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXRAND_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.h b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.h new file mode 100644 index 0000000000..932e5d12d7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXRAND.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000OneXRAND_H_ +#define _S1AP_Cdma2000OneXRAND_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Cdma2000OneXRAND */ +typedef OCTET_STRING_t S1AP_Cdma2000OneXRAND_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXRAND; +asn_struct_free_f S1AP_Cdma2000OneXRAND_free; +asn_struct_print_f S1AP_Cdma2000OneXRAND_print; +asn_constr_check_f S1AP_Cdma2000OneXRAND_constraint; +ber_type_decoder_f S1AP_Cdma2000OneXRAND_decode_ber; +der_type_encoder_f S1AP_Cdma2000OneXRAND_encode_der; +xer_type_decoder_f S1AP_Cdma2000OneXRAND_decode_xer; +xer_type_encoder_f S1AP_Cdma2000OneXRAND_encode_xer; +oer_type_decoder_f S1AP_Cdma2000OneXRAND_decode_oer; +oer_type_encoder_f S1AP_Cdma2000OneXRAND_encode_oer; +per_type_decoder_f S1AP_Cdma2000OneXRAND_decode_uper; +per_type_encoder_f S1AP_Cdma2000OneXRAND_encode_uper; +per_type_decoder_f S1AP_Cdma2000OneXRAND_decode_aper; +per_type_encoder_f S1AP_Cdma2000OneXRAND_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000OneXRAND_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.c b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.c new file mode 100644 index 0000000000..a57d599f28 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000OneXSRVCCInfo.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_Cdma2000OneXSRVCCInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cdma2000OneXSRVCCInfo, cdma2000OneXMEID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Cdma2000OneXMEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cdma2000OneXMEID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cdma2000OneXSRVCCInfo, cdma2000OneXMSI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Cdma2000OneXMSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cdma2000OneXMSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cdma2000OneXSRVCCInfo, cdma2000OneXPilot), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Cdma2000OneXPilot, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cdma2000OneXPilot" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_Cdma2000OneXSRVCCInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P32, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_Cdma2000OneXSRVCCInfo_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Cdma2000OneXSRVCCInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cdma2000OneXMEID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cdma2000OneXMSI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cdma2000OneXPilot */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_Cdma2000OneXSRVCCInfo_specs_1 = { + sizeof(struct S1AP_Cdma2000OneXSRVCCInfo), + offsetof(struct S1AP_Cdma2000OneXSRVCCInfo, _asn_ctx), + asn_MAP_S1AP_Cdma2000OneXSRVCCInfo_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_Cdma2000OneXSRVCCInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXSRVCCInfo = { + "Cdma2000OneXSRVCCInfo", + "Cdma2000OneXSRVCCInfo", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Cdma2000OneXSRVCCInfo_1, + 4, /* Elements count */ + &asn_SPC_S1AP_Cdma2000OneXSRVCCInfo_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.h b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.h new file mode 100644 index 0000000000..e175a2f72f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000OneXSRVCCInfo.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000OneXSRVCCInfo_H_ +#define _S1AP_Cdma2000OneXSRVCCInfo_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_Cdma2000OneXMEID.h" +#include "S1AP_Cdma2000OneXMSI.h" +#include "S1AP_Cdma2000OneXPilot.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_Cdma2000OneXSRVCCInfo */ +typedef struct S1AP_Cdma2000OneXSRVCCInfo { + S1AP_Cdma2000OneXMEID_t cdma2000OneXMEID; + S1AP_Cdma2000OneXMSI_t cdma2000OneXMSI; + S1AP_Cdma2000OneXPilot_t cdma2000OneXPilot; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Cdma2000OneXSRVCCInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXSRVCCInfo; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000OneXSRVCCInfo_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000PDU.c b/lib/s1ap3/asn1c/S1AP_Cdma2000PDU.c new file mode 100644 index 0000000000..94afe4acb3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000PDU.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000PDU.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000PDU_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000PDU = { + "Cdma2000PDU", + "Cdma2000PDU", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Cdma2000PDU_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000PDU_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000PDU_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000PDU_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000PDU_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000PDU_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000PDU.h b/lib/s1ap3/asn1c/S1AP_Cdma2000PDU.h new file mode 100644 index 0000000000..af311825ba --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000PDU.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000PDU_H_ +#define _S1AP_Cdma2000PDU_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Cdma2000PDU */ +typedef OCTET_STRING_t S1AP_Cdma2000PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000PDU; +asn_struct_free_f S1AP_Cdma2000PDU_free; +asn_struct_print_f S1AP_Cdma2000PDU_print; +asn_constr_check_f S1AP_Cdma2000PDU_constraint; +ber_type_decoder_f S1AP_Cdma2000PDU_decode_ber; +der_type_encoder_f S1AP_Cdma2000PDU_encode_der; +xer_type_decoder_f S1AP_Cdma2000PDU_decode_xer; +xer_type_encoder_f S1AP_Cdma2000PDU_encode_xer; +oer_type_decoder_f S1AP_Cdma2000PDU_decode_oer; +oer_type_encoder_f S1AP_Cdma2000PDU_encode_oer; +per_type_decoder_f S1AP_Cdma2000PDU_decode_uper; +per_type_encoder_f S1AP_Cdma2000PDU_encode_uper; +per_type_decoder_f S1AP_Cdma2000PDU_decode_aper; +per_type_encoder_f S1AP_Cdma2000PDU_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000PDU_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000RATType.c b/lib/s1ap3/asn1c/S1AP_Cdma2000RATType.c new file mode 100644 index 0000000000..97ff6b6614 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000RATType.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000RATType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Cdma2000RATType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_Cdma2000RATType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Cdma2000RATType_value2enum_1[] = { + { 0, 4, "hRPD" }, + { 1, 7, "onexRTT" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_Cdma2000RATType_enum2value_1[] = { + 0, /* hRPD(0) */ + 1 /* onexRTT(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_Cdma2000RATType_specs_1 = { + asn_MAP_S1AP_Cdma2000RATType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Cdma2000RATType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000RATType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000RATType = { + "Cdma2000RATType", + "Cdma2000RATType", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Cdma2000RATType_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000RATType_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000RATType_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000RATType_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000RATType_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000RATType_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Cdma2000RATType_constr_1, &asn_PER_type_S1AP_Cdma2000RATType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Cdma2000RATType_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000RATType.h b/lib/s1ap3/asn1c/S1AP_Cdma2000RATType.h new file mode 100644 index 0000000000..59e121bb60 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000RATType.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000RATType_H_ +#define _S1AP_Cdma2000RATType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Cdma2000RATType { + S1AP_Cdma2000RATType_hRPD = 0, + S1AP_Cdma2000RATType_onexRTT = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_Cdma2000RATType; + +/* S1AP_Cdma2000RATType */ +typedef long S1AP_Cdma2000RATType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000RATType; +asn_struct_free_f S1AP_Cdma2000RATType_free; +asn_struct_print_f S1AP_Cdma2000RATType_print; +asn_constr_check_f S1AP_Cdma2000RATType_constraint; +ber_type_decoder_f S1AP_Cdma2000RATType_decode_ber; +der_type_encoder_f S1AP_Cdma2000RATType_encode_der; +xer_type_decoder_f S1AP_Cdma2000RATType_decode_xer; +xer_type_encoder_f S1AP_Cdma2000RATType_encode_xer; +oer_type_decoder_f S1AP_Cdma2000RATType_decode_oer; +oer_type_encoder_f S1AP_Cdma2000RATType_encode_oer; +per_type_decoder_f S1AP_Cdma2000RATType_decode_uper; +per_type_encoder_f S1AP_Cdma2000RATType_encode_uper; +per_type_decoder_f S1AP_Cdma2000RATType_decode_aper; +per_type_encoder_f S1AP_Cdma2000RATType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000RATType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.c b/lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.c new file mode 100644 index 0000000000..2d1240c98c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cdma2000SectorID.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000SectorID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000SectorID = { + "Cdma2000SectorID", + "Cdma2000SectorID", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Cdma2000SectorID_tags_1, + sizeof(asn_DEF_S1AP_Cdma2000SectorID_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000SectorID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000SectorID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000SectorID_tags_1) + /sizeof(asn_DEF_S1AP_Cdma2000SectorID_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.h b/lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.h new file mode 100644 index 0000000000..d547376e9c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cdma2000SectorID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cdma2000SectorID_H_ +#define _S1AP_Cdma2000SectorID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Cdma2000SectorID */ +typedef OCTET_STRING_t S1AP_Cdma2000SectorID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000SectorID; +asn_struct_free_f S1AP_Cdma2000SectorID_free; +asn_struct_print_f S1AP_Cdma2000SectorID_print; +asn_constr_check_f S1AP_Cdma2000SectorID_constraint; +ber_type_decoder_f S1AP_Cdma2000SectorID_decode_ber; +der_type_encoder_f S1AP_Cdma2000SectorID_encode_der; +xer_type_decoder_f S1AP_Cdma2000SectorID_decode_xer; +xer_type_encoder_f S1AP_Cdma2000SectorID_encode_xer; +oer_type_decoder_f S1AP_Cdma2000SectorID_decode_oer; +oer_type_encoder_f S1AP_Cdma2000SectorID_encode_oer; +per_type_decoder_f S1AP_Cdma2000SectorID_decode_uper; +per_type_encoder_f S1AP_Cdma2000SectorID_encode_uper; +per_type_decoder_f S1AP_Cdma2000SectorID_decode_aper; +per_type_encoder_f S1AP_Cdma2000SectorID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cdma2000SectorID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Cell-Size.c b/lib/s1ap3/asn1c/S1AP_Cell-Size.c new file mode 100644 index 0000000000..d5b20c91c0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cell-Size.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Cell-Size.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Cell_Size_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Cell_Size_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Cell_Size_value2enum_1[] = { + { 0, 9, "verysmall" }, + { 1, 5, "small" }, + { 2, 6, "medium" }, + { 3, 5, "large" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_Cell_Size_enum2value_1[] = { + 3, /* large(3) */ + 2, /* medium(2) */ + 1, /* small(1) */ + 0 /* verysmall(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_Cell_Size_specs_1 = { + asn_MAP_S1AP_Cell_Size_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Cell_Size_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Cell_Size_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cell_Size = { + "Cell-Size", + "Cell-Size", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Cell_Size_tags_1, + sizeof(asn_DEF_S1AP_Cell_Size_tags_1) + /sizeof(asn_DEF_S1AP_Cell_Size_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Cell_Size_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Cell_Size_tags_1) + /sizeof(asn_DEF_S1AP_Cell_Size_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Cell_Size_constr_1, &asn_PER_type_S1AP_Cell_Size_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Cell_Size_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Cell-Size.h b/lib/s1ap3/asn1c/S1AP_Cell-Size.h new file mode 100644 index 0000000000..f26108d1a2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Cell-Size.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Cell_Size_H_ +#define _S1AP_Cell_Size_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Cell_Size { + S1AP_Cell_Size_verysmall = 0, + S1AP_Cell_Size_small = 1, + S1AP_Cell_Size_medium = 2, + S1AP_Cell_Size_large = 3 + /* + * Enumeration is extensible + */ +} e_S1AP_Cell_Size; + +/* S1AP_Cell-Size */ +typedef long S1AP_Cell_Size_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Cell_Size_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cell_Size; +extern const asn_INTEGER_specifics_t asn_SPC_Cell_Size_specs_1; +asn_struct_free_f Cell_Size_free; +asn_struct_print_f Cell_Size_print; +asn_constr_check_f Cell_Size_constraint; +ber_type_decoder_f Cell_Size_decode_ber; +der_type_encoder_f Cell_Size_encode_der; +xer_type_decoder_f Cell_Size_decode_xer; +xer_type_encoder_f Cell_Size_encode_xer; +oer_type_decoder_f Cell_Size_decode_oer; +oer_type_encoder_f Cell_Size_encode_oer; +per_type_decoder_f Cell_Size_decode_uper; +per_type_encoder_f Cell_Size_encode_uper; +per_type_decoder_f Cell_Size_decode_aper; +per_type_encoder_f Cell_Size_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Cell_Size_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellAccessMode.c b/lib/s1ap3/asn1c/S1AP_CellAccessMode.c new file mode 100644 index 0000000000..d8f59727cc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellAccessMode.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellAccessMode.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CellAccessMode_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_CellAccessMode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_CellAccessMode_value2enum_1[] = { + { 0, 6, "hybrid" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_CellAccessMode_enum2value_1[] = { + 0 /* hybrid(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_CellAccessMode_specs_1 = { + asn_MAP_S1AP_CellAccessMode_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_CellAccessMode_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellAccessMode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellAccessMode = { + "CellAccessMode", + "CellAccessMode", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_CellAccessMode_tags_1, + sizeof(asn_DEF_S1AP_CellAccessMode_tags_1) + /sizeof(asn_DEF_S1AP_CellAccessMode_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellAccessMode_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellAccessMode_tags_1) + /sizeof(asn_DEF_S1AP_CellAccessMode_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CellAccessMode_constr_1, &asn_PER_type_S1AP_CellAccessMode_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_CellAccessMode_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellAccessMode.h b/lib/s1ap3/asn1c/S1AP_CellAccessMode.h new file mode 100644 index 0000000000..bb42410caf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellAccessMode.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellAccessMode_H_ +#define _S1AP_CellAccessMode_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_CellAccessMode { + S1AP_CellAccessMode_hybrid = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_CellAccessMode; + +/* S1AP_CellAccessMode */ +typedef long S1AP_CellAccessMode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CellAccessMode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellAccessMode; +extern const asn_INTEGER_specifics_t asn_SPC_CellAccessMode_specs_1; +asn_struct_free_f CellAccessMode_free; +asn_struct_print_f CellAccessMode_print; +asn_constr_check_f CellAccessMode_constraint; +ber_type_decoder_f CellAccessMode_decode_ber; +der_type_encoder_f CellAccessMode_encode_der; +xer_type_decoder_f CellAccessMode_decode_xer; +xer_type_encoder_f CellAccessMode_encode_xer; +oer_type_decoder_f CellAccessMode_decode_oer; +oer_type_encoder_f CellAccessMode_encode_oer; +per_type_decoder_f CellAccessMode_decode_uper; +per_type_encoder_f CellAccessMode_encode_uper; +per_type_decoder_f CellAccessMode_decode_aper; +per_type_encoder_f CellAccessMode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellAccessMode_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellBasedMDT.c b/lib/s1ap3/asn1c/S1AP_CellBasedMDT.c new file mode 100644 index 0000000000..35f3a85695 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellBasedMDT.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellBasedMDT.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CellBasedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellBasedMDT, cellIdListforMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CellIdListforMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellIdListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CellBasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P31, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CellBasedMDT_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CellBasedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellBasedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdListforMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellBasedMDT_specs_1 = { + sizeof(struct S1AP_CellBasedMDT), + offsetof(struct S1AP_CellBasedMDT, _asn_ctx), + asn_MAP_S1AP_CellBasedMDT_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_CellBasedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellBasedMDT = { + "CellBasedMDT", + "CellBasedMDT", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellBasedMDT_tags_1, + sizeof(asn_DEF_S1AP_CellBasedMDT_tags_1) + /sizeof(asn_DEF_S1AP_CellBasedMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellBasedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellBasedMDT_tags_1) + /sizeof(asn_DEF_S1AP_CellBasedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellBasedMDT_1, + 2, /* Elements count */ + &asn_SPC_S1AP_CellBasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellBasedMDT.h b/lib/s1ap3/asn1c/S1AP_CellBasedMDT.h new file mode 100644 index 0000000000..face29498f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellBasedMDT.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellBasedMDT_H_ +#define _S1AP_CellBasedMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_CellIdListforMDT.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CellBasedMDT */ +typedef struct S1AP_CellBasedMDT { + S1AP_CellIdListforMDT_t cellIdListforMDT; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellBasedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellBasedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellBasedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CellBasedMDT_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellBasedMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.c b/lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.c new file mode 100644 index 0000000000..e5000a049f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellID-Broadcast-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CellID_Broadcast_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellID_Broadcast_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CellID_Broadcast_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P29, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CellID_Broadcast_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CellID_Broadcast_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellID_Broadcast_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellID_Broadcast_Item_specs_1 = { + sizeof(struct S1AP_CellID_Broadcast_Item), + offsetof(struct S1AP_CellID_Broadcast_Item, _asn_ctx), + asn_MAP_S1AP_CellID_Broadcast_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_CellID_Broadcast_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Broadcast_Item = { + "CellID-Broadcast-Item", + "CellID-Broadcast-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellID_Broadcast_Item_tags_1, + sizeof(asn_DEF_S1AP_CellID_Broadcast_Item_tags_1) + /sizeof(asn_DEF_S1AP_CellID_Broadcast_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellID_Broadcast_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellID_Broadcast_Item_tags_1) + /sizeof(asn_DEF_S1AP_CellID_Broadcast_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellID_Broadcast_Item_1, + 2, /* Elements count */ + &asn_SPC_S1AP_CellID_Broadcast_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.h b/lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.h new file mode 100644 index 0000000000..a0d5583329 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellID-Broadcast-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellID_Broadcast_Item_H_ +#define _S1AP_CellID_Broadcast_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CellID-Broadcast-Item */ +typedef struct S1AP_CellID_Broadcast_Item { + S1AP_EUTRAN_CGI_t eCGI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellID_Broadcast_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Broadcast_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellID_Broadcast_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CellID_Broadcast_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellID_Broadcast_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellID-Broadcast.c b/lib/s1ap3/asn1c/S1AP_CellID-Broadcast.c new file mode 100644 index 0000000000..3de4a63f1e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellID-Broadcast.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellID-Broadcast.h" + +#include "S1AP_CellID-Broadcast-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_CellID_Broadcast_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CellID_Broadcast_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_CellID_Broadcast_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellID_Broadcast_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellID_Broadcast_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_CellID_Broadcast_specs_1 = { + sizeof(struct S1AP_CellID_Broadcast), + offsetof(struct S1AP_CellID_Broadcast, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Broadcast = { + "CellID-Broadcast", + "CellID-Broadcast", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_CellID_Broadcast_tags_1, + sizeof(asn_DEF_S1AP_CellID_Broadcast_tags_1) + /sizeof(asn_DEF_S1AP_CellID_Broadcast_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellID_Broadcast_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellID_Broadcast_tags_1) + /sizeof(asn_DEF_S1AP_CellID_Broadcast_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CellID_Broadcast_constr_1, &asn_PER_type_S1AP_CellID_Broadcast_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_CellID_Broadcast_1, + 1, /* Single element */ + &asn_SPC_S1AP_CellID_Broadcast_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellID-Broadcast.h b/lib/s1ap3/asn1c/S1AP_CellID-Broadcast.h new file mode 100644 index 0000000000..8133d3f80e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellID-Broadcast.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellID_Broadcast_H_ +#define _S1AP_CellID_Broadcast_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_CellID_Broadcast_Item; + +/* S1AP_CellID-Broadcast */ +typedef struct S1AP_CellID_Broadcast { + A_SEQUENCE_OF(struct S1AP_CellID_Broadcast_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellID_Broadcast_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Broadcast; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_CellID_Broadcast_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CellID_Broadcast_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_CellID_Broadcast_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellID_Broadcast_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.c b/lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.c new file mode 100644 index 0000000000..aabcb0634a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellID-Cancelled-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CellID_Cancelled_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellID_Cancelled_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellID_Cancelled_Item, numberOfBroadcasts), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_NumberOfBroadcasts, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "numberOfBroadcasts" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CellID_Cancelled_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P30, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CellID_Cancelled_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CellID_Cancelled_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellID_Cancelled_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* numberOfBroadcasts */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellID_Cancelled_Item_specs_1 = { + sizeof(struct S1AP_CellID_Cancelled_Item), + offsetof(struct S1AP_CellID_Cancelled_Item, _asn_ctx), + asn_MAP_S1AP_CellID_Cancelled_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_CellID_Cancelled_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Cancelled_Item = { + "CellID-Cancelled-Item", + "CellID-Cancelled-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellID_Cancelled_Item_tags_1, + sizeof(asn_DEF_S1AP_CellID_Cancelled_Item_tags_1) + /sizeof(asn_DEF_S1AP_CellID_Cancelled_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellID_Cancelled_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellID_Cancelled_Item_tags_1) + /sizeof(asn_DEF_S1AP_CellID_Cancelled_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellID_Cancelled_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_CellID_Cancelled_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.h b/lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.h new file mode 100644 index 0000000000..f7e02494fd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellID-Cancelled-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellID_Cancelled_Item_H_ +#define _S1AP_CellID_Cancelled_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include "S1AP_NumberOfBroadcasts.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CellID-Cancelled-Item */ +typedef struct S1AP_CellID_Cancelled_Item { + S1AP_EUTRAN_CGI_t eCGI; + S1AP_NumberOfBroadcasts_t numberOfBroadcasts; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellID_Cancelled_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Cancelled_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellID_Cancelled_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CellID_Cancelled_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellID_Cancelled_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellID-Cancelled.c b/lib/s1ap3/asn1c/S1AP_CellID-Cancelled.c new file mode 100644 index 0000000000..f673c0c931 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellID-Cancelled.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellID-Cancelled.h" + +#include "S1AP_CellID-Cancelled-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_CellID_Cancelled_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CellID_Cancelled_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_CellID_Cancelled_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellID_Cancelled_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellID_Cancelled_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_CellID_Cancelled_specs_1 = { + sizeof(struct S1AP_CellID_Cancelled), + offsetof(struct S1AP_CellID_Cancelled, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Cancelled = { + "CellID-Cancelled", + "CellID-Cancelled", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_CellID_Cancelled_tags_1, + sizeof(asn_DEF_S1AP_CellID_Cancelled_tags_1) + /sizeof(asn_DEF_S1AP_CellID_Cancelled_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellID_Cancelled_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellID_Cancelled_tags_1) + /sizeof(asn_DEF_S1AP_CellID_Cancelled_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CellID_Cancelled_constr_1, &asn_PER_type_S1AP_CellID_Cancelled_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_CellID_Cancelled_1, + 1, /* Single element */ + &asn_SPC_S1AP_CellID_Cancelled_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellID-Cancelled.h b/lib/s1ap3/asn1c/S1AP_CellID-Cancelled.h new file mode 100644 index 0000000000..fcbcd97783 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellID-Cancelled.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellID_Cancelled_H_ +#define _S1AP_CellID_Cancelled_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_CellID_Cancelled_Item; + +/* S1AP_CellID-Cancelled */ +typedef struct S1AP_CellID_Cancelled { + A_SEQUENCE_OF(struct S1AP_CellID_Cancelled_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellID_Cancelled_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Cancelled; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_CellID_Cancelled_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CellID_Cancelled_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_CellID_Cancelled_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellID_Cancelled_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellIdListforMDT.c b/lib/s1ap3/asn1c/S1AP_CellIdListforMDT.c new file mode 100644 index 0000000000..b4898f7012 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellIdListforMDT.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellIdListforMDT.h" + +#include "S1AP_EUTRAN-CGI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_CellIdListforMDT_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CellIdListforMDT_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_CellIdListforMDT_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellIdListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_CellIdListforMDT_specs_1 = { + sizeof(struct S1AP_CellIdListforMDT), + offsetof(struct S1AP_CellIdListforMDT, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellIdListforMDT = { + "CellIdListforMDT", + "CellIdListforMDT", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_CellIdListforMDT_tags_1, + sizeof(asn_DEF_S1AP_CellIdListforMDT_tags_1) + /sizeof(asn_DEF_S1AP_CellIdListforMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellIdListforMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellIdListforMDT_tags_1) + /sizeof(asn_DEF_S1AP_CellIdListforMDT_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CellIdListforMDT_constr_1, &asn_PER_type_S1AP_CellIdListforMDT_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_CellIdListforMDT_1, + 1, /* Single element */ + &asn_SPC_S1AP_CellIdListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellIdListforMDT.h b/lib/s1ap3/asn1c/S1AP_CellIdListforMDT.h new file mode 100644 index 0000000000..0eb27e7f81 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellIdListforMDT.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellIdListforMDT_H_ +#define _S1AP_CellIdListforMDT_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_EUTRAN_CGI; + +/* S1AP_CellIdListforMDT */ +typedef struct S1AP_CellIdListforMDT { + A_SEQUENCE_OF(struct S1AP_EUTRAN_CGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellIdListforMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellIdListforMDT; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_CellIdListforMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CellIdListforMDT_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_CellIdListforMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellIdListforMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellIdentifierAndCELevelForCECapableUEs.c b/lib/s1ap3/asn1c/S1AP_CellIdentifierAndCELevelForCECapableUEs.c new file mode 100644 index 0000000000..854de9204a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellIdentifierAndCELevelForCECapableUEs.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellIdentifierAndCELevelForCECapableUEs.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CellIdentifierAndCELevelForCECapableUEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs, global_Cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-Cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs, cELevel), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CELevel, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cELevel" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P28, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CellIdentifierAndCELevelForCECapableUEs_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellIdentifierAndCELevelForCECapableUEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-Cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cELevel */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellIdentifierAndCELevelForCECapableUEs_specs_1 = { + sizeof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs), + offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs, _asn_ctx), + asn_MAP_S1AP_CellIdentifierAndCELevelForCECapableUEs_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_CellIdentifierAndCELevelForCECapableUEs_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs = { + "CellIdentifierAndCELevelForCECapableUEs", + "CellIdentifierAndCELevelForCECapableUEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_tags_1, + sizeof(asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_tags_1) + /sizeof(asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_tags_1) + /sizeof(asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellIdentifierAndCELevelForCECapableUEs_1, + 3, /* Elements count */ + &asn_SPC_S1AP_CellIdentifierAndCELevelForCECapableUEs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellIdentifierAndCELevelForCECapableUEs.h b/lib/s1ap3/asn1c/S1AP_CellIdentifierAndCELevelForCECapableUEs.h new file mode 100644 index 0000000000..ec692d9e01 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellIdentifierAndCELevelForCECapableUEs.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellIdentifierAndCELevelForCECapableUEs_H_ +#define _S1AP_CellIdentifierAndCELevelForCECapableUEs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include "S1AP_CELevel.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CellIdentifierAndCELevelForCECapableUEs */ +typedef struct S1AP_CellIdentifierAndCELevelForCECapableUEs { + S1AP_EUTRAN_CGI_t global_Cell_ID; + S1AP_CELevel_t cELevel; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellIdentifierAndCELevelForCECapableUEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellIdentifierAndCELevelForCECapableUEs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CellIdentifierAndCELevelForCECapableUEs_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellIdentifierAndCELevelForCECapableUEs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellIdentity.c b/lib/s1ap3/asn1c/S1AP_CellIdentity.c new file mode 100644 index 0000000000..ae8269b3bb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellIdentity.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellIdentity.h" + +int +S1AP_CellIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_CellIdentity_constr_1 CC_NOTUSED = { + { 0, 0 }, + 28 /* (SIZE(28..28)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CellIdentity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellIdentity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellIdentity = { + "CellIdentity", + "CellIdentity", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_CellIdentity_tags_1, + sizeof(asn_DEF_S1AP_CellIdentity_tags_1) + /sizeof(asn_DEF_S1AP_CellIdentity_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellIdentity_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellIdentity_tags_1) + /sizeof(asn_DEF_S1AP_CellIdentity_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CellIdentity_constr_1, &asn_PER_type_S1AP_CellIdentity_constr_1, S1AP_CellIdentity_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellIdentity.h b/lib/s1ap3/asn1c/S1AP_CellIdentity.h new file mode 100644 index 0000000000..5fe4ac0960 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellIdentity.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellIdentity_H_ +#define _S1AP_CellIdentity_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_CellIdentity */ +typedef BIT_STRING_t S1AP_CellIdentity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_CellIdentity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellIdentity; +asn_struct_free_f S1AP_CellIdentity_free; +asn_struct_print_f S1AP_CellIdentity_print; +asn_constr_check_f S1AP_CellIdentity_constraint; +ber_type_decoder_f S1AP_CellIdentity_decode_ber; +der_type_encoder_f S1AP_CellIdentity_encode_der; +xer_type_decoder_f S1AP_CellIdentity_decode_xer; +xer_type_encoder_f S1AP_CellIdentity_encode_xer; +oer_type_decoder_f S1AP_CellIdentity_decode_oer; +oer_type_encoder_f S1AP_CellIdentity_encode_oer; +per_type_decoder_f S1AP_CellIdentity_decode_uper; +per_type_encoder_f S1AP_CellIdentity_encode_uper; +per_type_decoder_f S1AP_CellIdentity_decode_aper; +per_type_encoder_f S1AP_CellIdentity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellIdentity_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellTrafficTrace.c b/lib/s1ap3/asn1c/S1AP_CellTrafficTrace.c new file mode 100644 index 0000000000..b8a95080f6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellTrafficTrace.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellTrafficTrace.h" + +asn_TYPE_member_t asn_MBR_S1AP_CellTrafficTrace_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTrace, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P57, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellTrafficTrace_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellTrafficTrace_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellTrafficTrace_specs_1 = { + sizeof(struct S1AP_CellTrafficTrace), + offsetof(struct S1AP_CellTrafficTrace, _asn_ctx), + asn_MAP_S1AP_CellTrafficTrace_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellTrafficTrace = { + "CellTrafficTrace", + "CellTrafficTrace", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellTrafficTrace_tags_1, + sizeof(asn_DEF_S1AP_CellTrafficTrace_tags_1) + /sizeof(asn_DEF_S1AP_CellTrafficTrace_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellTrafficTrace_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellTrafficTrace_tags_1) + /sizeof(asn_DEF_S1AP_CellTrafficTrace_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellTrafficTrace_1, + 1, /* Elements count */ + &asn_SPC_S1AP_CellTrafficTrace_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellTrafficTrace.h b/lib/s1ap3/asn1c/S1AP_CellTrafficTrace.h new file mode 100644 index 0000000000..501b3712d6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellTrafficTrace.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellTrafficTrace_H_ +#define _S1AP_CellTrafficTrace_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_CellTrafficTrace */ +typedef struct S1AP_CellTrafficTrace { + S1AP_ProtocolIE_Container_6551P57_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellTrafficTrace_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellTrafficTrace; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellTrafficTrace_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CellTrafficTrace_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellTrafficTrace_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CellType.c b/lib/s1ap3/asn1c/S1AP_CellType.c new file mode 100644 index 0000000000..0314ab0175 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellType.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CellType.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CellType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellType, cell_Size), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Cell_Size, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-Size" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CellType, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P33, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CellType_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CellType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-Size */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellType_specs_1 = { + sizeof(struct S1AP_CellType), + offsetof(struct S1AP_CellType, _asn_ctx), + asn_MAP_S1AP_CellType_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_CellType_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellType = { + "CellType", + "CellType", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellType_tags_1, + sizeof(asn_DEF_S1AP_CellType_tags_1) + /sizeof(asn_DEF_S1AP_CellType_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CellType_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CellType_tags_1) + /sizeof(asn_DEF_S1AP_CellType_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellType_1, + 2, /* Elements count */ + &asn_SPC_S1AP_CellType_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CellType.h b/lib/s1ap3/asn1c/S1AP_CellType.h new file mode 100644 index 0000000000..4ce1f50bbb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CellType.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CellType_H_ +#define _S1AP_CellType_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_Cell-Size.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CellType */ +typedef struct S1AP_CellType { + S1AP_Cell_Size_t cell_Size; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellType; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellType_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CellType_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CellType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI-Item.c b/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI-Item.c new file mode 100644 index 0000000000..458c3b0012 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI-Item.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CompletedCellinEAI-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinEAI_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CompletedCellinEAI_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CompletedCellinEAI_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P45, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CompletedCellinEAI_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CompletedCellinEAI_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CompletedCellinEAI_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CompletedCellinEAI_Item_specs_1 = { + sizeof(struct S1AP_CompletedCellinEAI_Item), + offsetof(struct S1AP_CompletedCellinEAI_Item, _asn_ctx), + asn_MAP_S1AP_CompletedCellinEAI_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_CompletedCellinEAI_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinEAI_Item = { + "CompletedCellinEAI-Item", + "CompletedCellinEAI-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CompletedCellinEAI_Item_tags_1, + sizeof(asn_DEF_S1AP_CompletedCellinEAI_Item_tags_1) + /sizeof(asn_DEF_S1AP_CompletedCellinEAI_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CompletedCellinEAI_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CompletedCellinEAI_Item_tags_1) + /sizeof(asn_DEF_S1AP_CompletedCellinEAI_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CompletedCellinEAI_Item_1, + 2, /* Elements count */ + &asn_SPC_S1AP_CompletedCellinEAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI-Item.h b/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI-Item.h new file mode 100644 index 0000000000..7a143684fd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CompletedCellinEAI_Item_H_ +#define _S1AP_CompletedCellinEAI_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CompletedCellinEAI-Item */ +typedef struct S1AP_CompletedCellinEAI_Item { + S1AP_EUTRAN_CGI_t eCGI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CompletedCellinEAI_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinEAI_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CompletedCellinEAI_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinEAI_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CompletedCellinEAI_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.c b/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.c new file mode 100644 index 0000000000..5530f89cc6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CompletedCellinEAI.h" + +#include "S1AP_CompletedCellinEAI-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_CompletedCellinEAI_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CompletedCellinEAI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinEAI_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CompletedCellinEAI_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CompletedCellinEAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_CompletedCellinEAI_specs_1 = { + sizeof(struct S1AP_CompletedCellinEAI), + offsetof(struct S1AP_CompletedCellinEAI, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinEAI = { + "CompletedCellinEAI", + "CompletedCellinEAI", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_CompletedCellinEAI_tags_1, + sizeof(asn_DEF_S1AP_CompletedCellinEAI_tags_1) + /sizeof(asn_DEF_S1AP_CompletedCellinEAI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CompletedCellinEAI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CompletedCellinEAI_tags_1) + /sizeof(asn_DEF_S1AP_CompletedCellinEAI_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CompletedCellinEAI_constr_1, &asn_PER_type_S1AP_CompletedCellinEAI_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_CompletedCellinEAI_1, + 1, /* Single element */ + &asn_SPC_S1AP_CompletedCellinEAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.h b/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.h new file mode 100644 index 0000000000..d55ff37abf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CompletedCellinEAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CompletedCellinEAI_H_ +#define _S1AP_CompletedCellinEAI_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_CompletedCellinEAI_Item; + +/* S1AP_CompletedCellinEAI */ +typedef struct S1AP_CompletedCellinEAI { + A_SEQUENCE_OF(struct S1AP_CompletedCellinEAI_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CompletedCellinEAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinEAI; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_CompletedCellinEAI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinEAI_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_CompletedCellinEAI_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CompletedCellinEAI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI-Item.c b/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI-Item.c new file mode 100644 index 0000000000..5e475c6967 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI-Item.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CompletedCellinTAI-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinTAI_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CompletedCellinTAI_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CompletedCellinTAI_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P102, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CompletedCellinTAI_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CompletedCellinTAI_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CompletedCellinTAI_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CompletedCellinTAI_Item_specs_1 = { + sizeof(struct S1AP_CompletedCellinTAI_Item), + offsetof(struct S1AP_CompletedCellinTAI_Item, _asn_ctx), + asn_MAP_S1AP_CompletedCellinTAI_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_CompletedCellinTAI_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinTAI_Item = { + "CompletedCellinTAI-Item", + "CompletedCellinTAI-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CompletedCellinTAI_Item_tags_1, + sizeof(asn_DEF_S1AP_CompletedCellinTAI_Item_tags_1) + /sizeof(asn_DEF_S1AP_CompletedCellinTAI_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CompletedCellinTAI_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CompletedCellinTAI_Item_tags_1) + /sizeof(asn_DEF_S1AP_CompletedCellinTAI_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CompletedCellinTAI_Item_1, + 2, /* Elements count */ + &asn_SPC_S1AP_CompletedCellinTAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI-Item.h b/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI-Item.h new file mode 100644 index 0000000000..c6d3ff5e48 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CompletedCellinTAI_Item_H_ +#define _S1AP_CompletedCellinTAI_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CompletedCellinTAI-Item */ +typedef struct S1AP_CompletedCellinTAI_Item { + S1AP_EUTRAN_CGI_t eCGI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CompletedCellinTAI_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinTAI_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CompletedCellinTAI_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinTAI_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CompletedCellinTAI_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.c b/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.c new file mode 100644 index 0000000000..23094497cb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CompletedCellinTAI.h" + +#include "S1AP_CompletedCellinTAI-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_CompletedCellinTAI_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CompletedCellinTAI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinTAI_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CompletedCellinTAI_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CompletedCellinTAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_CompletedCellinTAI_specs_1 = { + sizeof(struct S1AP_CompletedCellinTAI), + offsetof(struct S1AP_CompletedCellinTAI, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinTAI = { + "CompletedCellinTAI", + "CompletedCellinTAI", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_CompletedCellinTAI_tags_1, + sizeof(asn_DEF_S1AP_CompletedCellinTAI_tags_1) + /sizeof(asn_DEF_S1AP_CompletedCellinTAI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CompletedCellinTAI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CompletedCellinTAI_tags_1) + /sizeof(asn_DEF_S1AP_CompletedCellinTAI_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CompletedCellinTAI_constr_1, &asn_PER_type_S1AP_CompletedCellinTAI_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_CompletedCellinTAI_1, + 1, /* Single element */ + &asn_SPC_S1AP_CompletedCellinTAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.h b/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.h new file mode 100644 index 0000000000..354d5bb581 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CompletedCellinTAI.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CompletedCellinTAI_H_ +#define _S1AP_CompletedCellinTAI_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_CompletedCellinTAI_Item; + +/* S1AP_CompletedCellinTAI */ +typedef struct S1AP_CompletedCellinTAI { + A_SEQUENCE_OF(struct S1AP_CompletedCellinTAI_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CompletedCellinTAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinTAI; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_CompletedCellinTAI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinTAI_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_CompletedCellinTAI_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CompletedCellinTAI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ConcurrentWarningMessageIndicator.c b/lib/s1ap3/asn1c/S1AP_ConcurrentWarningMessageIndicator.c new file mode 100644 index 0000000000..3b95dab9c0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ConcurrentWarningMessageIndicator.c @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ConcurrentWarningMessageIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ConcurrentWarningMessageIndicator_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_ConcurrentWarningMessageIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 0, 0, 0, 0 } /* (0..0) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ConcurrentWarningMessageIndicator_value2enum_1[] = { + { 0, 4, "true" } +}; +static const unsigned int asn_MAP_S1AP_ConcurrentWarningMessageIndicator_enum2value_1[] = { + 0 /* true(0) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_ConcurrentWarningMessageIndicator_specs_1 = { + asn_MAP_S1AP_ConcurrentWarningMessageIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ConcurrentWarningMessageIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ConcurrentWarningMessageIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ConcurrentWarningMessageIndicator = { + "ConcurrentWarningMessageIndicator", + "ConcurrentWarningMessageIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ConcurrentWarningMessageIndicator_tags_1, + sizeof(asn_DEF_S1AP_ConcurrentWarningMessageIndicator_tags_1) + /sizeof(asn_DEF_S1AP_ConcurrentWarningMessageIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ConcurrentWarningMessageIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ConcurrentWarningMessageIndicator_tags_1) + /sizeof(asn_DEF_S1AP_ConcurrentWarningMessageIndicator_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ConcurrentWarningMessageIndicator_constr_1, &asn_PER_type_S1AP_ConcurrentWarningMessageIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ConcurrentWarningMessageIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ConcurrentWarningMessageIndicator.h b/lib/s1ap3/asn1c/S1AP_ConcurrentWarningMessageIndicator.h new file mode 100644 index 0000000000..8e34482a91 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ConcurrentWarningMessageIndicator.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ConcurrentWarningMessageIndicator_H_ +#define _S1AP_ConcurrentWarningMessageIndicator_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ConcurrentWarningMessageIndicator { + S1AP_ConcurrentWarningMessageIndicator_true = 0 +} e_S1AP_ConcurrentWarningMessageIndicator; + +/* S1AP_ConcurrentWarningMessageIndicator */ +typedef long S1AP_ConcurrentWarningMessageIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ConcurrentWarningMessageIndicator; +asn_struct_free_f S1AP_ConcurrentWarningMessageIndicator_free; +asn_struct_print_f S1AP_ConcurrentWarningMessageIndicator_print; +asn_constr_check_f S1AP_ConcurrentWarningMessageIndicator_constraint; +ber_type_decoder_f S1AP_ConcurrentWarningMessageIndicator_decode_ber; +der_type_encoder_f S1AP_ConcurrentWarningMessageIndicator_encode_der; +xer_type_decoder_f S1AP_ConcurrentWarningMessageIndicator_decode_xer; +xer_type_encoder_f S1AP_ConcurrentWarningMessageIndicator_encode_xer; +oer_type_decoder_f S1AP_ConcurrentWarningMessageIndicator_decode_oer; +oer_type_encoder_f S1AP_ConcurrentWarningMessageIndicator_encode_oer; +per_type_decoder_f S1AP_ConcurrentWarningMessageIndicator_decode_uper; +per_type_encoder_f S1AP_ConcurrentWarningMessageIndicator_encode_uper; +per_type_decoder_f S1AP_ConcurrentWarningMessageIndicator_decode_aper; +per_type_encoder_f S1AP_ConcurrentWarningMessageIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ConcurrentWarningMessageIndicator_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ConnectionEstablishmentIndication.c b/lib/s1ap3/asn1c/S1AP_ConnectionEstablishmentIndication.c new file mode 100644 index 0000000000..860a686940 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ConnectionEstablishmentIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ConnectionEstablishmentIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_ConnectionEstablishmentIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ConnectionEstablishmentIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P86, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ConnectionEstablishmentIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ConnectionEstablishmentIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ConnectionEstablishmentIndication_specs_1 = { + sizeof(struct S1AP_ConnectionEstablishmentIndication), + offsetof(struct S1AP_ConnectionEstablishmentIndication, _asn_ctx), + asn_MAP_S1AP_ConnectionEstablishmentIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ConnectionEstablishmentIndication = { + "ConnectionEstablishmentIndication", + "ConnectionEstablishmentIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ConnectionEstablishmentIndication_tags_1, + sizeof(asn_DEF_S1AP_ConnectionEstablishmentIndication_tags_1) + /sizeof(asn_DEF_S1AP_ConnectionEstablishmentIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ConnectionEstablishmentIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ConnectionEstablishmentIndication_tags_1) + /sizeof(asn_DEF_S1AP_ConnectionEstablishmentIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ConnectionEstablishmentIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ConnectionEstablishmentIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ConnectionEstablishmentIndication.h b/lib/s1ap3/asn1c/S1AP_ConnectionEstablishmentIndication.h new file mode 100644 index 0000000000..e997bab926 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ConnectionEstablishmentIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ConnectionEstablishmentIndication_H_ +#define _S1AP_ConnectionEstablishmentIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ConnectionEstablishmentIndication */ +typedef struct S1AP_ConnectionEstablishmentIndication { + S1AP_ProtocolIE_Container_6551P86_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ConnectionEstablishmentIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ConnectionEstablishmentIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ConnectionEstablishmentIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ConnectionEstablishmentIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ConnectionEstablishmentIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Correlation-ID.c b/lib/s1ap3/asn1c/S1AP_Correlation-ID.c new file mode 100644 index 0000000000..2bae685ad1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Correlation-ID.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Correlation-ID.h" + +int +S1AP_Correlation_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Correlation_ID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 4 /* (SIZE(4..4)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_Correlation_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Correlation_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Correlation_ID = { + "Correlation-ID", + "Correlation-ID", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Correlation_ID_tags_1, + sizeof(asn_DEF_S1AP_Correlation_ID_tags_1) + /sizeof(asn_DEF_S1AP_Correlation_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Correlation_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Correlation_ID_tags_1) + /sizeof(asn_DEF_S1AP_Correlation_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Correlation_ID_constr_1, &asn_PER_type_S1AP_Correlation_ID_constr_1, S1AP_Correlation_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Correlation-ID.h b/lib/s1ap3/asn1c/S1AP_Correlation-ID.h new file mode 100644 index 0000000000..af92c8e7ff --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Correlation-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Correlation_ID_H_ +#define _S1AP_Correlation_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Correlation-ID */ +typedef OCTET_STRING_t S1AP_Correlation_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Correlation_ID; +asn_struct_free_f S1AP_Correlation_ID_free; +asn_struct_print_f S1AP_Correlation_ID_print; +asn_constr_check_f S1AP_Correlation_ID_constraint; +ber_type_decoder_f S1AP_Correlation_ID_decode_ber; +der_type_encoder_f S1AP_Correlation_ID_encode_der; +xer_type_decoder_f S1AP_Correlation_ID_decode_xer; +xer_type_encoder_f S1AP_Correlation_ID_encode_xer; +oer_type_decoder_f S1AP_Correlation_ID_decode_oer; +oer_type_encoder_f S1AP_Correlation_ID_encode_oer; +per_type_decoder_f S1AP_Correlation_ID_decode_uper; +per_type_encoder_f S1AP_Correlation_ID_encode_uper; +per_type_decoder_f S1AP_Correlation_ID_decode_aper; +per_type_encoder_f S1AP_Correlation_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Correlation_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Coverage-Level.c b/lib/s1ap3/asn1c/S1AP_Coverage-Level.c new file mode 100644 index 0000000000..108a0a3b1f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Coverage-Level.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Coverage-Level.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Coverage_Level_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_Coverage_Level_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Coverage_Level_value2enum_1[] = { + { 0, 16, "extendedcoverage" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_Coverage_Level_enum2value_1[] = { + 0 /* extendedcoverage(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_Coverage_Level_specs_1 = { + asn_MAP_S1AP_Coverage_Level_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Coverage_Level_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Coverage_Level_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Coverage_Level = { + "Coverage-Level", + "Coverage-Level", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Coverage_Level_tags_1, + sizeof(asn_DEF_S1AP_Coverage_Level_tags_1) + /sizeof(asn_DEF_S1AP_Coverage_Level_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Coverage_Level_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Coverage_Level_tags_1) + /sizeof(asn_DEF_S1AP_Coverage_Level_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Coverage_Level_constr_1, &asn_PER_type_S1AP_Coverage_Level_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Coverage_Level_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Coverage-Level.h b/lib/s1ap3/asn1c/S1AP_Coverage-Level.h new file mode 100644 index 0000000000..449675d018 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Coverage-Level.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Coverage_Level_H_ +#define _S1AP_Coverage_Level_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Coverage_Level { + S1AP_Coverage_Level_extendedcoverage = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_Coverage_Level; + +/* S1AP_Coverage-Level */ +typedef long S1AP_Coverage_Level_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Coverage_Level; +asn_struct_free_f S1AP_Coverage_Level_free; +asn_struct_print_f S1AP_Coverage_Level_print; +asn_constr_check_f S1AP_Coverage_Level_constraint; +ber_type_decoder_f S1AP_Coverage_Level_decode_ber; +der_type_encoder_f S1AP_Coverage_Level_encode_der; +xer_type_decoder_f S1AP_Coverage_Level_decode_xer; +xer_type_encoder_f S1AP_Coverage_Level_encode_xer; +oer_type_decoder_f S1AP_Coverage_Level_decode_oer; +oer_type_encoder_f S1AP_Coverage_Level_encode_oer; +per_type_decoder_f S1AP_Coverage_Level_decode_uper; +per_type_encoder_f S1AP_Coverage_Level_encode_uper; +per_type_decoder_f S1AP_Coverage_Level_decode_aper; +per_type_encoder_f S1AP_Coverage_Level_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Coverage_Level_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Criticality.c b/lib/s1ap3/asn1c/S1AP_Criticality.c new file mode 100644 index 0000000000..64c66b9d9c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Criticality.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Criticality.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Criticality_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Criticality_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Criticality_value2enum_1[] = { + { 0, 6, "reject" }, + { 1, 6, "ignore" }, + { 2, 6, "notify" } +}; +static const unsigned int asn_MAP_S1AP_Criticality_enum2value_1[] = { + 1, /* ignore(1) */ + 2, /* notify(2) */ + 0 /* reject(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_Criticality_specs_1 = { + asn_MAP_S1AP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Criticality_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Criticality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Criticality = { + "Criticality", + "Criticality", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Criticality_tags_1, + sizeof(asn_DEF_S1AP_Criticality_tags_1) + /sizeof(asn_DEF_S1AP_Criticality_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Criticality_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Criticality_tags_1) + /sizeof(asn_DEF_S1AP_Criticality_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Criticality_constr_1, &asn_PER_type_S1AP_Criticality_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Criticality_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Criticality.h b/lib/s1ap3/asn1c/S1AP_Criticality.h new file mode 100644 index 0000000000..9eb58345cb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Criticality.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Criticality_H_ +#define _S1AP_Criticality_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Criticality { + S1AP_Criticality_reject = 0, + S1AP_Criticality_ignore = 1, + S1AP_Criticality_notify = 2 +} e_S1AP_Criticality; + +/* S1AP_Criticality */ +typedef long S1AP_Criticality_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Criticality_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Criticality; +extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1; +asn_struct_free_f Criticality_free; +asn_struct_print_f Criticality_print; +asn_constr_check_f Criticality_constraint; +ber_type_decoder_f Criticality_decode_ber; +der_type_encoder_f Criticality_encode_der; +xer_type_decoder_f Criticality_decode_xer; +xer_type_encoder_f Criticality_encode_xer; +oer_type_decoder_f Criticality_decode_oer; +oer_type_encoder_f Criticality_encode_oer; +per_type_decoder_f Criticality_decode_uper; +per_type_encoder_f Criticality_encode_uper; +per_type_decoder_f Criticality_decode_aper; +per_type_encoder_f Criticality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Criticality_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-Item.c b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-Item.c new file mode 100644 index 0000000000..41f3681dbe --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-Item.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CriticalityDiagnostics-IE-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_CriticalityDiagnostics_IE_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CriticalityDiagnostics_IE_Item, iECriticality), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iECriticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CriticalityDiagnostics_IE_Item, iE_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CriticalityDiagnostics_IE_Item, typeOfError), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TypeOfError, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "typeOfError" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CriticalityDiagnostics_IE_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P40, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CriticalityDiagnostics_IE_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CriticalityDiagnostics_IE_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* typeOfError */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CriticalityDiagnostics_IE_Item_specs_1 = { + sizeof(struct S1AP_CriticalityDiagnostics_IE_Item), + offsetof(struct S1AP_CriticalityDiagnostics_IE_Item, _asn_ctx), + asn_MAP_S1AP_CriticalityDiagnostics_IE_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_CriticalityDiagnostics_IE_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics_IE_Item = { + "CriticalityDiagnostics-IE-Item", + "CriticalityDiagnostics-IE-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_tags_1, + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_tags_1) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_tags_1) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CriticalityDiagnostics_IE_Item_1, + 4, /* Elements count */ + &asn_SPC_S1AP_CriticalityDiagnostics_IE_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-Item.h b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-Item.h new file mode 100644 index 0000000000..3cbc3fa9cb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-Item.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CriticalityDiagnostics_IE_Item_H_ +#define _S1AP_CriticalityDiagnostics_IE_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_Criticality.h" +#include "S1AP_ProtocolIE-ID.h" +#include "S1AP_TypeOfError.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CriticalityDiagnostics-IE-Item */ +typedef struct S1AP_CriticalityDiagnostics_IE_Item { + S1AP_Criticality_t iECriticality; + S1AP_ProtocolIE_ID_t iE_ID; + S1AP_TypeOfError_t typeOfError; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CriticalityDiagnostics_IE_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics_IE_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CriticalityDiagnostics_IE_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CriticalityDiagnostics_IE_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CriticalityDiagnostics_IE_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-List.c b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-List.c new file mode 100644 index 0000000000..596e902219 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-List.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CriticalityDiagnostics-IE-List.h" + +#include "S1AP_CriticalityDiagnostics-IE-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_CriticalityDiagnostics_IE_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics_IE_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CriticalityDiagnostics_IE_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_CriticalityDiagnostics_IE_List_specs_1 = { + sizeof(struct S1AP_CriticalityDiagnostics_IE_List), + offsetof(struct S1AP_CriticalityDiagnostics_IE_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics_IE_List = { + "CriticalityDiagnostics-IE-List", + "CriticalityDiagnostics-IE-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_CriticalityDiagnostics_IE_List_tags_1, + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_CriticalityDiagnostics_IE_List_constr_1, &asn_PER_type_S1AP_CriticalityDiagnostics_IE_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_CriticalityDiagnostics_IE_List_1, + 1, /* Single element */ + &asn_SPC_S1AP_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-List.h b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-List.h new file mode 100644 index 0000000000..76a7603f13 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics-IE-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CriticalityDiagnostics_IE_List_H_ +#define _S1AP_CriticalityDiagnostics_IE_List_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_CriticalityDiagnostics_IE_Item; + +/* S1AP_CriticalityDiagnostics-IE-List */ +typedef struct S1AP_CriticalityDiagnostics_IE_List { + A_SEQUENCE_OF(struct S1AP_CriticalityDiagnostics_IE_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CriticalityDiagnostics_IE_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics_IE_List; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_CriticalityDiagnostics_IE_List_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_CriticalityDiagnostics_IE_List_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_CriticalityDiagnostics_IE_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CriticalityDiagnostics_IE_List_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.c b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.c new file mode 100644 index 0000000000..fc84f21a42 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_CriticalityDiagnostics.h" + +#include "S1AP_CriticalityDiagnostics-IE-List.h" +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_CriticalityDiagnostics_1[] = { + { ATF_POINTER, 5, offsetof(struct S1AP_CriticalityDiagnostics, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProcedureCode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_POINTER, 4, offsetof(struct S1AP_CriticalityDiagnostics, triggeringMessage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TriggeringMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "triggeringMessage" + }, + { ATF_POINTER, 3, offsetof(struct S1AP_CriticalityDiagnostics, procedureCriticality), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCriticality" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_CriticalityDiagnostics, iEsCriticalityDiagnostics), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CriticalityDiagnostics_IE_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iEsCriticalityDiagnostics" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_CriticalityDiagnostics, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P39, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_S1AP_CriticalityDiagnostics_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CriticalityDiagnostics_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iEsCriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_CriticalityDiagnostics_specs_1 = { + sizeof(struct S1AP_CriticalityDiagnostics), + offsetof(struct S1AP_CriticalityDiagnostics, _asn_ctx), + asn_MAP_S1AP_CriticalityDiagnostics_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_CriticalityDiagnostics_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics = { + "CriticalityDiagnostics", + "CriticalityDiagnostics", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CriticalityDiagnostics_tags_1, + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_tags_1[0]), /* 1 */ + asn_DEF_S1AP_CriticalityDiagnostics_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CriticalityDiagnostics_1, + 5, /* Elements count */ + &asn_SPC_S1AP_CriticalityDiagnostics_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.h b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.h new file mode 100644 index 0000000000..03b19e114c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_CriticalityDiagnostics.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_CriticalityDiagnostics_H_ +#define _S1AP_CriticalityDiagnostics_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProcedureCode.h" +#include "S1AP_TriggeringMessage.h" +#include "S1AP_Criticality.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_CriticalityDiagnostics_IE_List; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_CriticalityDiagnostics */ +typedef struct S1AP_CriticalityDiagnostics { + S1AP_ProcedureCode_t *procedureCode; /* OPTIONAL */ + S1AP_TriggeringMessage_t *triggeringMessage; /* OPTIONAL */ + S1AP_Criticality_t *procedureCriticality; /* OPTIONAL */ + struct S1AP_CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CriticalityDiagnostics_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_CriticalityDiagnostics_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DCN-ID.c b/lib/s1ap3/asn1c/S1AP_DCN-ID.c new file mode 100644 index 0000000000..bca131e4c9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DCN-ID.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DCN-ID.h" + +int +S1AP_DCN_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_DCN_ID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_DCN_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DCN_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DCN_ID = { + "DCN-ID", + "DCN-ID", + &asn_OP_NativeInteger, + asn_DEF_S1AP_DCN_ID_tags_1, + sizeof(asn_DEF_S1AP_DCN_ID_tags_1) + /sizeof(asn_DEF_S1AP_DCN_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DCN_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DCN_ID_tags_1) + /sizeof(asn_DEF_S1AP_DCN_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_DCN_ID_constr_1, &asn_PER_type_S1AP_DCN_ID_constr_1, S1AP_DCN_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DCN-ID.h b/lib/s1ap3/asn1c/S1AP_DCN-ID.h new file mode 100644 index 0000000000..24c33b9ff0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DCN-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DCN_ID_H_ +#define _S1AP_DCN_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_DCN-ID */ +typedef long S1AP_DCN_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_DCN_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DCN_ID; +asn_struct_free_f S1AP_DCN_ID_free; +asn_struct_print_f S1AP_DCN_ID_print; +asn_constr_check_f S1AP_DCN_ID_constraint; +ber_type_decoder_f S1AP_DCN_ID_decode_ber; +der_type_encoder_f S1AP_DCN_ID_encode_der; +xer_type_decoder_f S1AP_DCN_ID_decode_xer; +xer_type_encoder_f S1AP_DCN_ID_encode_xer; +oer_type_decoder_f S1AP_DCN_ID_decode_oer; +oer_type_encoder_f S1AP_DCN_ID_encode_oer; +per_type_decoder_f S1AP_DCN_ID_decode_uper; +per_type_encoder_f S1AP_DCN_ID_encode_uper; +per_type_decoder_f S1AP_DCN_ID_decode_aper; +per_type_encoder_f S1AP_DCN_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DCN_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DL-CP-SecurityInformation.c b/lib/s1ap3/asn1c/S1AP_DL-CP-SecurityInformation.c new file mode 100644 index 0000000000..4cfdd04b09 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DL-CP-SecurityInformation.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DL-CP-SecurityInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_DL_CP_SecurityInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DL_CP_SecurityInformation, dl_NAS_MAC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_DL_NAS_MAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dl-NAS-MAC" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_DL_CP_SecurityInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P42, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_DL_CP_SecurityInformation_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_DL_CP_SecurityInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DL_CP_SecurityInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dl-NAS-MAC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_DL_CP_SecurityInformation_specs_1 = { + sizeof(struct S1AP_DL_CP_SecurityInformation), + offsetof(struct S1AP_DL_CP_SecurityInformation, _asn_ctx), + asn_MAP_S1AP_DL_CP_SecurityInformation_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_DL_CP_SecurityInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DL_CP_SecurityInformation = { + "DL-CP-SecurityInformation", + "DL-CP-SecurityInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DL_CP_SecurityInformation_tags_1, + sizeof(asn_DEF_S1AP_DL_CP_SecurityInformation_tags_1) + /sizeof(asn_DEF_S1AP_DL_CP_SecurityInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DL_CP_SecurityInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DL_CP_SecurityInformation_tags_1) + /sizeof(asn_DEF_S1AP_DL_CP_SecurityInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DL_CP_SecurityInformation_1, + 2, /* Elements count */ + &asn_SPC_S1AP_DL_CP_SecurityInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DL-CP-SecurityInformation.h b/lib/s1ap3/asn1c/S1AP_DL-CP-SecurityInformation.h new file mode 100644 index 0000000000..a656b3b6bc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DL-CP-SecurityInformation.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DL_CP_SecurityInformation_H_ +#define _S1AP_DL_CP_SecurityInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_DL-NAS-MAC.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_DL-CP-SecurityInformation */ +typedef struct S1AP_DL_CP_SecurityInformation { + S1AP_DL_NAS_MAC_t dl_NAS_MAC; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DL_CP_SecurityInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DL_CP_SecurityInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DL_CP_SecurityInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DL-Forwarding.c b/lib/s1ap3/asn1c/S1AP_DL-Forwarding.c new file mode 100644 index 0000000000..90309560b7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DL-Forwarding.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DL-Forwarding.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_DL_Forwarding_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_DL_Forwarding_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_DL_Forwarding_value2enum_1[] = { + { 0, 22, "dL-Forwarding-proposed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_DL_Forwarding_enum2value_1[] = { + 0 /* dL-Forwarding-proposed(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_DL_Forwarding_specs_1 = { + asn_MAP_S1AP_DL_Forwarding_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_DL_Forwarding_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DL_Forwarding_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DL_Forwarding = { + "DL-Forwarding", + "DL-Forwarding", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_DL_Forwarding_tags_1, + sizeof(asn_DEF_S1AP_DL_Forwarding_tags_1) + /sizeof(asn_DEF_S1AP_DL_Forwarding_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DL_Forwarding_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DL_Forwarding_tags_1) + /sizeof(asn_DEF_S1AP_DL_Forwarding_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_DL_Forwarding_constr_1, &asn_PER_type_S1AP_DL_Forwarding_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_DL_Forwarding_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DL-Forwarding.h b/lib/s1ap3/asn1c/S1AP_DL-Forwarding.h new file mode 100644 index 0000000000..a9a94552c0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DL-Forwarding.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DL_Forwarding_H_ +#define _S1AP_DL_Forwarding_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_DL_Forwarding { + S1AP_DL_Forwarding_dL_Forwarding_proposed = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_DL_Forwarding; + +/* S1AP_DL-Forwarding */ +typedef long S1AP_DL_Forwarding_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_DL_Forwarding_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DL_Forwarding; +extern const asn_INTEGER_specifics_t asn_SPC_DL_Forwarding_specs_1; +asn_struct_free_f DL_Forwarding_free; +asn_struct_print_f DL_Forwarding_print; +asn_constr_check_f DL_Forwarding_constraint; +ber_type_decoder_f DL_Forwarding_decode_ber; +der_type_encoder_f DL_Forwarding_encode_der; +xer_type_decoder_f DL_Forwarding_decode_xer; +xer_type_encoder_f DL_Forwarding_encode_xer; +oer_type_decoder_f DL_Forwarding_decode_oer; +oer_type_encoder_f DL_Forwarding_encode_oer; +per_type_decoder_f DL_Forwarding_decode_uper; +per_type_encoder_f DL_Forwarding_encode_uper; +per_type_decoder_f DL_Forwarding_decode_aper; +per_type_encoder_f DL_Forwarding_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DL_Forwarding_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.c b/lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.c new file mode 100644 index 0000000000..f40db2831a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DL-NAS-MAC.h" + +int +S1AP_DL_NAS_MAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_DL_NAS_MAC_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +asn_per_constraints_t asn_PER_type_S1AP_DL_NAS_MAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DL_NAS_MAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DL_NAS_MAC = { + "DL-NAS-MAC", + "DL-NAS-MAC", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_DL_NAS_MAC_tags_1, + sizeof(asn_DEF_S1AP_DL_NAS_MAC_tags_1) + /sizeof(asn_DEF_S1AP_DL_NAS_MAC_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DL_NAS_MAC_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DL_NAS_MAC_tags_1) + /sizeof(asn_DEF_S1AP_DL_NAS_MAC_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_DL_NAS_MAC_constr_1, &asn_PER_type_S1AP_DL_NAS_MAC_constr_1, S1AP_DL_NAS_MAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.h b/lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.h new file mode 100644 index 0000000000..ecaddd13d9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DL-NAS-MAC.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DL_NAS_MAC_H_ +#define _S1AP_DL_NAS_MAC_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_DL-NAS-MAC */ +typedef BIT_STRING_t S1AP_DL_NAS_MAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_DL_NAS_MAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DL_NAS_MAC; +asn_struct_free_f S1AP_DL_NAS_MAC_free; +asn_struct_print_f S1AP_DL_NAS_MAC_print; +asn_constr_check_f S1AP_DL_NAS_MAC_constraint; +ber_type_decoder_f S1AP_DL_NAS_MAC_decode_ber; +der_type_encoder_f S1AP_DL_NAS_MAC_encode_der; +xer_type_decoder_f S1AP_DL_NAS_MAC_decode_xer; +xer_type_encoder_f S1AP_DL_NAS_MAC_encode_xer; +oer_type_decoder_f S1AP_DL_NAS_MAC_decode_oer; +oer_type_encoder_f S1AP_DL_NAS_MAC_encode_oer; +per_type_decoder_f S1AP_DL_NAS_MAC_decode_uper; +per_type_encoder_f S1AP_DL_NAS_MAC_encode_uper; +per_type_decoder_f S1AP_DL_NAS_MAC_decode_aper; +per_type_encoder_f S1AP_DL_NAS_MAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DL_NAS_MAC_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DLNASPDUDeliveryAckRequest.c b/lib/s1ap3/asn1c/S1AP_DLNASPDUDeliveryAckRequest.c new file mode 100644 index 0000000000..824c8ae48e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DLNASPDUDeliveryAckRequest.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DLNASPDUDeliveryAckRequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_DLNASPDUDeliveryAckRequest_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_DLNASPDUDeliveryAckRequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_DLNASPDUDeliveryAckRequest_value2enum_1[] = { + { 0, 9, "requested" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_DLNASPDUDeliveryAckRequest_enum2value_1[] = { + 0 /* requested(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_DLNASPDUDeliveryAckRequest_specs_1 = { + asn_MAP_S1AP_DLNASPDUDeliveryAckRequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_DLNASPDUDeliveryAckRequest_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DLNASPDUDeliveryAckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DLNASPDUDeliveryAckRequest = { + "DLNASPDUDeliveryAckRequest", + "DLNASPDUDeliveryAckRequest", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_DLNASPDUDeliveryAckRequest_tags_1, + sizeof(asn_DEF_S1AP_DLNASPDUDeliveryAckRequest_tags_1) + /sizeof(asn_DEF_S1AP_DLNASPDUDeliveryAckRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DLNASPDUDeliveryAckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DLNASPDUDeliveryAckRequest_tags_1) + /sizeof(asn_DEF_S1AP_DLNASPDUDeliveryAckRequest_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_DLNASPDUDeliveryAckRequest_constr_1, &asn_PER_type_S1AP_DLNASPDUDeliveryAckRequest_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_DLNASPDUDeliveryAckRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DLNASPDUDeliveryAckRequest.h b/lib/s1ap3/asn1c/S1AP_DLNASPDUDeliveryAckRequest.h new file mode 100644 index 0000000000..feeffcc194 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DLNASPDUDeliveryAckRequest.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DLNASPDUDeliveryAckRequest_H_ +#define _S1AP_DLNASPDUDeliveryAckRequest_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_DLNASPDUDeliveryAckRequest { + S1AP_DLNASPDUDeliveryAckRequest_requested = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_DLNASPDUDeliveryAckRequest; + +/* S1AP_DLNASPDUDeliveryAckRequest */ +typedef long S1AP_DLNASPDUDeliveryAckRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DLNASPDUDeliveryAckRequest; +asn_struct_free_f S1AP_DLNASPDUDeliveryAckRequest_free; +asn_struct_print_f S1AP_DLNASPDUDeliveryAckRequest_print; +asn_constr_check_f S1AP_DLNASPDUDeliveryAckRequest_constraint; +ber_type_decoder_f S1AP_DLNASPDUDeliveryAckRequest_decode_ber; +der_type_encoder_f S1AP_DLNASPDUDeliveryAckRequest_encode_der; +xer_type_decoder_f S1AP_DLNASPDUDeliveryAckRequest_decode_xer; +xer_type_encoder_f S1AP_DLNASPDUDeliveryAckRequest_encode_xer; +oer_type_decoder_f S1AP_DLNASPDUDeliveryAckRequest_decode_oer; +oer_type_encoder_f S1AP_DLNASPDUDeliveryAckRequest_encode_oer; +per_type_decoder_f S1AP_DLNASPDUDeliveryAckRequest_decode_uper; +per_type_encoder_f S1AP_DLNASPDUDeliveryAckRequest_encode_uper; +per_type_decoder_f S1AP_DLNASPDUDeliveryAckRequest_decode_aper; +per_type_encoder_f S1AP_DLNASPDUDeliveryAckRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DLNASPDUDeliveryAckRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Data-Forwarding-Not-Possible.c b/lib/s1ap3/asn1c/S1AP_Data-Forwarding-Not-Possible.c new file mode 100644 index 0000000000..0feb4ac4f2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Data-Forwarding-Not-Possible.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Data-Forwarding-Not-Possible.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Data_Forwarding_Not_Possible_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_Data_Forwarding_Not_Possible_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Data_Forwarding_Not_Possible_value2enum_1[] = { + { 0, 28, "data-Forwarding-not-Possible" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_Data_Forwarding_Not_Possible_enum2value_1[] = { + 0 /* data-Forwarding-not-Possible(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_Data_Forwarding_Not_Possible_specs_1 = { + asn_MAP_S1AP_Data_Forwarding_Not_Possible_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Data_Forwarding_Not_Possible_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Data_Forwarding_Not_Possible_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Data_Forwarding_Not_Possible = { + "Data-Forwarding-Not-Possible", + "Data-Forwarding-Not-Possible", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Data_Forwarding_Not_Possible_tags_1, + sizeof(asn_DEF_S1AP_Data_Forwarding_Not_Possible_tags_1) + /sizeof(asn_DEF_S1AP_Data_Forwarding_Not_Possible_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Data_Forwarding_Not_Possible_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Data_Forwarding_Not_Possible_tags_1) + /sizeof(asn_DEF_S1AP_Data_Forwarding_Not_Possible_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Data_Forwarding_Not_Possible_constr_1, &asn_PER_type_S1AP_Data_Forwarding_Not_Possible_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Data_Forwarding_Not_Possible_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Data-Forwarding-Not-Possible.h b/lib/s1ap3/asn1c/S1AP_Data-Forwarding-Not-Possible.h new file mode 100644 index 0000000000..3f5caf8abc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Data-Forwarding-Not-Possible.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Data_Forwarding_Not_Possible_H_ +#define _S1AP_Data_Forwarding_Not_Possible_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Data_Forwarding_Not_Possible { + S1AP_Data_Forwarding_Not_Possible_data_Forwarding_not_Possible = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_Data_Forwarding_Not_Possible; + +/* S1AP_Data-Forwarding-Not-Possible */ +typedef long S1AP_Data_Forwarding_Not_Possible_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Data_Forwarding_Not_Possible; +asn_struct_free_f S1AP_Data_Forwarding_Not_Possible_free; +asn_struct_print_f S1AP_Data_Forwarding_Not_Possible_print; +asn_constr_check_f S1AP_Data_Forwarding_Not_Possible_constraint; +ber_type_decoder_f S1AP_Data_Forwarding_Not_Possible_decode_ber; +der_type_encoder_f S1AP_Data_Forwarding_Not_Possible_encode_der; +xer_type_decoder_f S1AP_Data_Forwarding_Not_Possible_decode_xer; +xer_type_encoder_f S1AP_Data_Forwarding_Not_Possible_encode_xer; +oer_type_decoder_f S1AP_Data_Forwarding_Not_Possible_decode_oer; +oer_type_encoder_f S1AP_Data_Forwarding_Not_Possible_encode_oer; +per_type_decoder_f S1AP_Data_Forwarding_Not_Possible_decode_uper; +per_type_encoder_f S1AP_Data_Forwarding_Not_Possible_encode_uper; +per_type_decoder_f S1AP_Data_Forwarding_Not_Possible_decode_aper; +per_type_encoder_f S1AP_Data_Forwarding_Not_Possible_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Data_Forwarding_Not_Possible_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DataCodingScheme.c b/lib/s1ap3/asn1c/S1AP_DataCodingScheme.c new file mode 100644 index 0000000000..efc26226e2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DataCodingScheme.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DataCodingScheme.h" + +int +S1AP_DataCodingScheme_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_DataCodingScheme_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_DataCodingScheme_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DataCodingScheme_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DataCodingScheme = { + "DataCodingScheme", + "DataCodingScheme", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_DataCodingScheme_tags_1, + sizeof(asn_DEF_S1AP_DataCodingScheme_tags_1) + /sizeof(asn_DEF_S1AP_DataCodingScheme_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DataCodingScheme_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DataCodingScheme_tags_1) + /sizeof(asn_DEF_S1AP_DataCodingScheme_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_DataCodingScheme_constr_1, &asn_PER_type_S1AP_DataCodingScheme_constr_1, S1AP_DataCodingScheme_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DataCodingScheme.h b/lib/s1ap3/asn1c/S1AP_DataCodingScheme.h new file mode 100644 index 0000000000..dc9d19f9ab --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DataCodingScheme.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DataCodingScheme_H_ +#define _S1AP_DataCodingScheme_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_DataCodingScheme */ +typedef BIT_STRING_t S1AP_DataCodingScheme_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DataCodingScheme; +asn_struct_free_f S1AP_DataCodingScheme_free; +asn_struct_print_f S1AP_DataCodingScheme_print; +asn_constr_check_f S1AP_DataCodingScheme_constraint; +ber_type_decoder_f S1AP_DataCodingScheme_decode_ber; +der_type_encoder_f S1AP_DataCodingScheme_encode_der; +xer_type_decoder_f S1AP_DataCodingScheme_decode_xer; +xer_type_encoder_f S1AP_DataCodingScheme_encode_xer; +oer_type_decoder_f S1AP_DataCodingScheme_decode_oer; +oer_type_encoder_f S1AP_DataCodingScheme_encode_oer; +per_type_decoder_f S1AP_DataCodingScheme_decode_uper; +per_type_encoder_f S1AP_DataCodingScheme_encode_uper; +per_type_decoder_f S1AP_DataCodingScheme_decode_aper; +per_type_encoder_f S1AP_DataCodingScheme_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DataCodingScheme_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DeactivateTrace.c b/lib/s1ap3/asn1c/S1AP_DeactivateTrace.c new file mode 100644 index 0000000000..4665f0db4f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DeactivateTrace.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DeactivateTrace.h" + +asn_TYPE_member_t asn_MBR_S1AP_DeactivateTrace_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DeactivateTrace, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P56, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DeactivateTrace_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DeactivateTrace_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DeactivateTrace_specs_1 = { + sizeof(struct S1AP_DeactivateTrace), + offsetof(struct S1AP_DeactivateTrace, _asn_ctx), + asn_MAP_S1AP_DeactivateTrace_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DeactivateTrace = { + "DeactivateTrace", + "DeactivateTrace", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DeactivateTrace_tags_1, + sizeof(asn_DEF_S1AP_DeactivateTrace_tags_1) + /sizeof(asn_DEF_S1AP_DeactivateTrace_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DeactivateTrace_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DeactivateTrace_tags_1) + /sizeof(asn_DEF_S1AP_DeactivateTrace_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DeactivateTrace_1, + 1, /* Elements count */ + &asn_SPC_S1AP_DeactivateTrace_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DeactivateTrace.h b/lib/s1ap3/asn1c/S1AP_DeactivateTrace.h new file mode 100644 index 0000000000..fa9f6e6533 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DeactivateTrace.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DeactivateTrace_H_ +#define _S1AP_DeactivateTrace_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_DeactivateTrace */ +typedef struct S1AP_DeactivateTrace { + S1AP_ProtocolIE_Container_6551P56_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DeactivateTrace_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DeactivateTrace; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DeactivateTrace_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_DeactivateTrace_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DeactivateTrace_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Direct-Forwarding-Path-Availability.c b/lib/s1ap3/asn1c/S1AP_Direct-Forwarding-Path-Availability.c new file mode 100644 index 0000000000..35206883f2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Direct-Forwarding-Path-Availability.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Direct-Forwarding-Path-Availability.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Direct_Forwarding_Path_Availability_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_Direct_Forwarding_Path_Availability_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Direct_Forwarding_Path_Availability_value2enum_1[] = { + { 0, 19, "directPathAvailable" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_Direct_Forwarding_Path_Availability_enum2value_1[] = { + 0 /* directPathAvailable(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_Direct_Forwarding_Path_Availability_specs_1 = { + asn_MAP_S1AP_Direct_Forwarding_Path_Availability_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Direct_Forwarding_Path_Availability_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Direct_Forwarding_Path_Availability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Direct_Forwarding_Path_Availability = { + "Direct-Forwarding-Path-Availability", + "Direct-Forwarding-Path-Availability", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Direct_Forwarding_Path_Availability_tags_1, + sizeof(asn_DEF_S1AP_Direct_Forwarding_Path_Availability_tags_1) + /sizeof(asn_DEF_S1AP_Direct_Forwarding_Path_Availability_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Direct_Forwarding_Path_Availability_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Direct_Forwarding_Path_Availability_tags_1) + /sizeof(asn_DEF_S1AP_Direct_Forwarding_Path_Availability_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Direct_Forwarding_Path_Availability_constr_1, &asn_PER_type_S1AP_Direct_Forwarding_Path_Availability_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Direct_Forwarding_Path_Availability_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Direct-Forwarding-Path-Availability.h b/lib/s1ap3/asn1c/S1AP_Direct-Forwarding-Path-Availability.h new file mode 100644 index 0000000000..1edeae9bbd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Direct-Forwarding-Path-Availability.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Direct_Forwarding_Path_Availability_H_ +#define _S1AP_Direct_Forwarding_Path_Availability_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Direct_Forwarding_Path_Availability { + S1AP_Direct_Forwarding_Path_Availability_directPathAvailable = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_Direct_Forwarding_Path_Availability; + +/* S1AP_Direct-Forwarding-Path-Availability */ +typedef long S1AP_Direct_Forwarding_Path_Availability_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Direct_Forwarding_Path_Availability; +asn_struct_free_f S1AP_Direct_Forwarding_Path_Availability_free; +asn_struct_print_f S1AP_Direct_Forwarding_Path_Availability_print; +asn_constr_check_f S1AP_Direct_Forwarding_Path_Availability_constraint; +ber_type_decoder_f S1AP_Direct_Forwarding_Path_Availability_decode_ber; +der_type_encoder_f S1AP_Direct_Forwarding_Path_Availability_encode_der; +xer_type_decoder_f S1AP_Direct_Forwarding_Path_Availability_decode_xer; +xer_type_encoder_f S1AP_Direct_Forwarding_Path_Availability_encode_xer; +oer_type_decoder_f S1AP_Direct_Forwarding_Path_Availability_decode_oer; +oer_type_encoder_f S1AP_Direct_Forwarding_Path_Availability_encode_oer; +per_type_decoder_f S1AP_Direct_Forwarding_Path_Availability_decode_uper; +per_type_encoder_f S1AP_Direct_Forwarding_Path_Availability_encode_uper; +per_type_decoder_f S1AP_Direct_Forwarding_Path_Availability_decode_aper; +per_type_encoder_f S1AP_Direct_Forwarding_Path_Availability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Direct_Forwarding_Path_Availability_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.c b/lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.c new file mode 100644 index 0000000000..8717ae31a7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DownlinkNASTransport.h" + +asn_TYPE_member_t asn_MBR_S1AP_DownlinkNASTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P31, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DownlinkNASTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DownlinkNASTransport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkNASTransport_specs_1 = { + sizeof(struct S1AP_DownlinkNASTransport), + offsetof(struct S1AP_DownlinkNASTransport, _asn_ctx), + asn_MAP_S1AP_DownlinkNASTransport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkNASTransport = { + "DownlinkNASTransport", + "DownlinkNASTransport", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DownlinkNASTransport_tags_1, + sizeof(asn_DEF_S1AP_DownlinkNASTransport_tags_1) + /sizeof(asn_DEF_S1AP_DownlinkNASTransport_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DownlinkNASTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DownlinkNASTransport_tags_1) + /sizeof(asn_DEF_S1AP_DownlinkNASTransport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DownlinkNASTransport_1, + 1, /* Elements count */ + &asn_SPC_S1AP_DownlinkNASTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.h b/lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.h new file mode 100644 index 0000000000..07be60ba05 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DownlinkNASTransport.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DownlinkNASTransport_H_ +#define _S1AP_DownlinkNASTransport_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_DownlinkNASTransport */ +typedef struct S1AP_DownlinkNASTransport { + S1AP_ProtocolIE_Container_6551P31_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DownlinkNASTransport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkNASTransport; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkNASTransport_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_DownlinkNASTransport_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DownlinkNASTransport_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DownlinkNonUEAssociatedLPPaTransport.c b/lib/s1ap3/asn1c/S1AP_DownlinkNonUEAssociatedLPPaTransport.c new file mode 100644 index 0000000000..0afedb0d16 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DownlinkNonUEAssociatedLPPaTransport.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DownlinkNonUEAssociatedLPPaTransport.h" + +asn_TYPE_member_t asn_MBR_S1AP_DownlinkNonUEAssociatedLPPaTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P75, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DownlinkNonUEAssociatedLPPaTransport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkNonUEAssociatedLPPaTransport_specs_1 = { + sizeof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport), + offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport, _asn_ctx), + asn_MAP_S1AP_DownlinkNonUEAssociatedLPPaTransport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport = { + "DownlinkNonUEAssociatedLPPaTransport", + "DownlinkNonUEAssociatedLPPaTransport", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_tags_1, + sizeof(asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_tags_1) + /sizeof(asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_tags_1) + /sizeof(asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DownlinkNonUEAssociatedLPPaTransport_1, + 1, /* Elements count */ + &asn_SPC_S1AP_DownlinkNonUEAssociatedLPPaTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DownlinkNonUEAssociatedLPPaTransport.h b/lib/s1ap3/asn1c/S1AP_DownlinkNonUEAssociatedLPPaTransport.h new file mode 100644 index 0000000000..20a7e94fca --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DownlinkNonUEAssociatedLPPaTransport.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DownlinkNonUEAssociatedLPPaTransport_H_ +#define _S1AP_DownlinkNonUEAssociatedLPPaTransport_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_DownlinkNonUEAssociatedLPPaTransport */ +typedef struct S1AP_DownlinkNonUEAssociatedLPPaTransport { + S1AP_ProtocolIE_Container_6551P75_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DownlinkNonUEAssociatedLPPaTransport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkNonUEAssociatedLPPaTransport_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_DownlinkNonUEAssociatedLPPaTransport_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DownlinkNonUEAssociatedLPPaTransport_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DownlinkS1cdma2000tunnelling.c b/lib/s1ap3/asn1c/S1AP_DownlinkS1cdma2000tunnelling.c new file mode 100644 index 0000000000..d924d980ea --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DownlinkS1cdma2000tunnelling.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DownlinkS1cdma2000tunnelling.h" + +asn_TYPE_member_t asn_MBR_S1AP_DownlinkS1cdma2000tunnelling_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnelling, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P49, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DownlinkS1cdma2000tunnelling_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DownlinkS1cdma2000tunnelling_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkS1cdma2000tunnelling_specs_1 = { + sizeof(struct S1AP_DownlinkS1cdma2000tunnelling), + offsetof(struct S1AP_DownlinkS1cdma2000tunnelling, _asn_ctx), + asn_MAP_S1AP_DownlinkS1cdma2000tunnelling_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkS1cdma2000tunnelling = { + "DownlinkS1cdma2000tunnelling", + "DownlinkS1cdma2000tunnelling", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DownlinkS1cdma2000tunnelling_tags_1, + sizeof(asn_DEF_S1AP_DownlinkS1cdma2000tunnelling_tags_1) + /sizeof(asn_DEF_S1AP_DownlinkS1cdma2000tunnelling_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DownlinkS1cdma2000tunnelling_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DownlinkS1cdma2000tunnelling_tags_1) + /sizeof(asn_DEF_S1AP_DownlinkS1cdma2000tunnelling_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DownlinkS1cdma2000tunnelling_1, + 1, /* Elements count */ + &asn_SPC_S1AP_DownlinkS1cdma2000tunnelling_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DownlinkS1cdma2000tunnelling.h b/lib/s1ap3/asn1c/S1AP_DownlinkS1cdma2000tunnelling.h new file mode 100644 index 0000000000..5b51bbca41 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DownlinkS1cdma2000tunnelling.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DownlinkS1cdma2000tunnelling_H_ +#define _S1AP_DownlinkS1cdma2000tunnelling_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_DownlinkS1cdma2000tunnelling */ +typedef struct S1AP_DownlinkS1cdma2000tunnelling { + S1AP_ProtocolIE_Container_6551P49_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DownlinkS1cdma2000tunnelling_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkS1cdma2000tunnelling; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkS1cdma2000tunnelling_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_DownlinkS1cdma2000tunnelling_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DownlinkS1cdma2000tunnelling_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_DownlinkUEAssociatedLPPaTransport.c b/lib/s1ap3/asn1c/S1AP_DownlinkUEAssociatedLPPaTransport.c new file mode 100644 index 0000000000..f2b5a2d03c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DownlinkUEAssociatedLPPaTransport.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_DownlinkUEAssociatedLPPaTransport.h" + +asn_TYPE_member_t asn_MBR_S1AP_DownlinkUEAssociatedLPPaTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P73, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DownlinkUEAssociatedLPPaTransport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkUEAssociatedLPPaTransport_specs_1 = { + sizeof(struct S1AP_DownlinkUEAssociatedLPPaTransport), + offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport, _asn_ctx), + asn_MAP_S1AP_DownlinkUEAssociatedLPPaTransport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport = { + "DownlinkUEAssociatedLPPaTransport", + "DownlinkUEAssociatedLPPaTransport", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_tags_1, + sizeof(asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_tags_1) + /sizeof(asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_tags_1[0]), /* 1 */ + asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_tags_1) + /sizeof(asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DownlinkUEAssociatedLPPaTransport_1, + 1, /* Elements count */ + &asn_SPC_S1AP_DownlinkUEAssociatedLPPaTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_DownlinkUEAssociatedLPPaTransport.h b/lib/s1ap3/asn1c/S1AP_DownlinkUEAssociatedLPPaTransport.h new file mode 100644 index 0000000000..1da03ceeb5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_DownlinkUEAssociatedLPPaTransport.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_DownlinkUEAssociatedLPPaTransport_H_ +#define _S1AP_DownlinkUEAssociatedLPPaTransport_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_DownlinkUEAssociatedLPPaTransport */ +typedef struct S1AP_DownlinkUEAssociatedLPPaTransport { + S1AP_ProtocolIE_Container_6551P73_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DownlinkUEAssociatedLPPaTransport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkUEAssociatedLPPaTransport_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_DownlinkUEAssociatedLPPaTransport_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_DownlinkUEAssociatedLPPaTransport_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RAB-ID.c b/lib/s1ap3/asn1c/S1AP_E-RAB-ID.c new file mode 100644 index 0000000000..8ebc04e54e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RAB-ID.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RAB-ID.h" + +int +S1AP_E_RAB_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_ID_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_ID = { + "E-RAB-ID", + "E-RAB-ID", + &asn_OP_NativeInteger, + asn_DEF_S1AP_E_RAB_ID_tags_1, + sizeof(asn_DEF_S1AP_E_RAB_ID_tags_1) + /sizeof(asn_DEF_S1AP_E_RAB_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_ID_tags_1) + /sizeof(asn_DEF_S1AP_E_RAB_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_ID_constr_1, &asn_PER_type_S1AP_E_RAB_ID_constr_1, S1AP_E_RAB_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RAB-ID.h b/lib/s1ap3/asn1c/S1AP_E-RAB-ID.h new file mode 100644 index 0000000000..a8813d16ef --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RAB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RAB_ID_H_ +#define _S1AP_E_RAB_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RAB-ID */ +typedef long S1AP_E_RAB_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_ID; +asn_struct_free_f S1AP_E_RAB_ID_free; +asn_struct_print_f S1AP_E_RAB_ID_print; +asn_constr_check_f S1AP_E_RAB_ID_constraint; +ber_type_decoder_f S1AP_E_RAB_ID_decode_ber; +der_type_encoder_f S1AP_E_RAB_ID_encode_der; +xer_type_decoder_f S1AP_E_RAB_ID_decode_xer; +xer_type_encoder_f S1AP_E_RAB_ID_encode_xer; +oer_type_decoder_f S1AP_E_RAB_ID_decode_oer; +oer_type_encoder_f S1AP_E_RAB_ID_encode_oer; +per_type_decoder_f S1AP_E_RAB_ID_decode_uper; +per_type_encoder_f S1AP_E_RAB_ID_encode_uper; +per_type_decoder_f S1AP_E_RAB_ID_decode_aper; +per_type_encoder_f S1AP_E_RAB_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RAB_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.c b/lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.c new file mode 100644 index 0000000000..38e1c3610b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.c @@ -0,0 +1,579 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RAB-IE-ContainerList.h" + +int +S1AP_E_RAB_IE_ContainerList_1142P0_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P0, + * so here we adjust the DEF accordingly. + */ +int +S1AP_E_RAB_IE_ContainerList_1142P1_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P1, + * so here we adjust the DEF accordingly. + */ +int +S1AP_E_RAB_IE_ContainerList_1142P2_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P2, + * so here we adjust the DEF accordingly. + */ +int +S1AP_E_RAB_IE_ContainerList_1142P3_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P3, + * so here we adjust the DEF accordingly. + */ +int +S1AP_E_RAB_IE_ContainerList_1142P4_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P4, + * so here we adjust the DEF accordingly. + */ +int +S1AP_E_RAB_IE_ContainerList_1142P5_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P5, + * so here we adjust the DEF accordingly. + */ +int +S1AP_E_RAB_IE_ContainerList_1142P6_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P6, + * so here we adjust the DEF accordingly. + */ +int +S1AP_E_RAB_IE_ContainerList_1142P7_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P7, + * so here we adjust the DEF accordingly. + */ +int +S1AP_E_RAB_IE_ContainerList_1142P8_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P8, + * so here we adjust the DEF accordingly. + */ +int +S1AP_E_RAB_IE_ContainerList_1142P9_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_ProtocolIE_ContainerList_6588P9, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P0_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P1_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P1_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P2_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P2_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P3_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P3_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P4_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P4_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P5_constr_6 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P5_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P6_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P6_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P7_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P7_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P8_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P8_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P9_constr_10 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P9_constr_10 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P0 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P0_tags_1, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P0_tags_1) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P0_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P0_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P0_tags_1) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P0_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P0_constr_1, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P0_constr_1, S1AP_E_RAB_IE_ContainerList_1142P0_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P0_1, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P0_specs_1 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P1_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P1 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P1_tags_2, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P1_tags_2) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P1_tags_2[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P1_tags_2, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P1_tags_2) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P1_tags_2[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P1_constr_2, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P1_constr_2, S1AP_E_RAB_IE_ContainerList_1142P1_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P1_3, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P1_specs_3 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P2_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P2 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P2_tags_3, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P2_tags_3) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P2_tags_3[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P2_tags_3, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P2_tags_3) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P2_tags_3[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P2_constr_3, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P2_constr_3, S1AP_E_RAB_IE_ContainerList_1142P2_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P2_5, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P2_specs_5 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P3_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P3 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P3_tags_4, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P3_tags_4) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P3_tags_4[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P3_tags_4, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P3_tags_4) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P3_tags_4[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P3_constr_4, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P3_constr_4, S1AP_E_RAB_IE_ContainerList_1142P3_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P3_7, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P3_specs_7 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P4_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P4 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P4_tags_5, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P4_tags_5) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P4_tags_5[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P4_tags_5, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P4_tags_5) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P4_tags_5[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P4_constr_5, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P4_constr_5, S1AP_E_RAB_IE_ContainerList_1142P4_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P4_9, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P4_specs_9 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P5_tags_6[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P5 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P5_tags_6, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P5_tags_6) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P5_tags_6[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P5_tags_6, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P5_tags_6) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P5_tags_6[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P5_constr_6, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P5_constr_6, S1AP_E_RAB_IE_ContainerList_1142P5_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P5_11, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P5_specs_11 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P6_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P6 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P6_tags_7, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P6_tags_7) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P6_tags_7[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P6_tags_7, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P6_tags_7) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P6_tags_7[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P6_constr_7, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P6_constr_7, S1AP_E_RAB_IE_ContainerList_1142P6_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P6_13, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P6_specs_13 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P7_tags_8[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P7 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P7_tags_8, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P7_tags_8) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P7_tags_8[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P7_tags_8, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P7_tags_8) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P7_tags_8[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P7_constr_8, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P7_constr_8, S1AP_E_RAB_IE_ContainerList_1142P7_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P7_15, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P7_specs_15 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P8_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P8 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P8_tags_9, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P8_tags_9) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P8_tags_9[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P8_tags_9, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P8_tags_9) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P8_tags_9[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P8_constr_9, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P8_constr_9, S1AP_E_RAB_IE_ContainerList_1142P8_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P8_17, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P8_specs_17 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P9_tags_10[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P9 = { + "E-RAB-IE-ContainerList", + "E-RAB-IE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P9_tags_10, + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P9_tags_10) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P9_tags_10[0]), /* 1 */ + asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P9_tags_10, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P9_tags_10) + /sizeof(asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P9_tags_10[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RAB_IE_ContainerList_1142P9_constr_10, &asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P9_constr_10, S1AP_E_RAB_IE_ContainerList_1142P9_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P9_19, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P9_specs_19 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.h b/lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.h new file mode 100644 index 0000000000..9831316ba0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerList.h @@ -0,0 +1,190 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RAB_IE_ContainerList_H_ +#define _S1AP_E_RAB_IE_ContainerList_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RAB-IE-ContainerList */ +typedef S1AP_ProtocolIE_ContainerList_6588P0_t S1AP_E_RAB_IE_ContainerList_1142P0_t; +typedef S1AP_ProtocolIE_ContainerList_6588P1_t S1AP_E_RAB_IE_ContainerList_1142P1_t; +typedef S1AP_ProtocolIE_ContainerList_6588P2_t S1AP_E_RAB_IE_ContainerList_1142P2_t; +typedef S1AP_ProtocolIE_ContainerList_6588P3_t S1AP_E_RAB_IE_ContainerList_1142P3_t; +typedef S1AP_ProtocolIE_ContainerList_6588P4_t S1AP_E_RAB_IE_ContainerList_1142P4_t; +typedef S1AP_ProtocolIE_ContainerList_6588P5_t S1AP_E_RAB_IE_ContainerList_1142P5_t; +typedef S1AP_ProtocolIE_ContainerList_6588P6_t S1AP_E_RAB_IE_ContainerList_1142P6_t; +typedef S1AP_ProtocolIE_ContainerList_6588P7_t S1AP_E_RAB_IE_ContainerList_1142P7_t; +typedef S1AP_ProtocolIE_ContainerList_6588P8_t S1AP_E_RAB_IE_ContainerList_1142P8_t; +typedef S1AP_ProtocolIE_ContainerList_6588P9_t S1AP_E_RAB_IE_ContainerList_1142P9_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P0; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P0_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P0_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P0_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P0_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P0_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P0_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P0_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P0_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P0_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P0_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P0_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P0_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P0_encode_aper; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P1_constr_2; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P1; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P1_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P1_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P1_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P1_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P1_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P1_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P1_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P1_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P1_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P1_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P1_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P1_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P1_encode_aper; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P2_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P2; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P2_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P2_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P2_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P2_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P2_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P2_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P2_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P2_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P2_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P2_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P2_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P2_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P2_encode_aper; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P3_constr_4; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P3; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P3_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P3_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P3_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P3_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P3_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P3_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P3_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P3_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P3_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P3_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P3_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P3_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P3_encode_aper; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P4_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P4; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P4_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P4_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P4_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P4_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P4_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P4_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P4_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P4_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P4_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P4_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P4_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P4_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P4_encode_aper; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P5_constr_6; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P5; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P5_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P5_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P5_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P5_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P5_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P5_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P5_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P5_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P5_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P5_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P5_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P5_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P5_encode_aper; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P6_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P6; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P6_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P6_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P6_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P6_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P6_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P6_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P6_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P6_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P6_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P6_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P6_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P6_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P6_encode_aper; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P7_constr_8; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P7; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P7_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P7_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P7_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P7_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P7_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P7_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P7_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P7_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P7_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P7_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P7_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P7_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P7_encode_aper; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P8_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P8; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P8_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P8_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P8_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P8_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P8_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P8_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P8_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P8_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P8_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P8_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P8_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P8_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P8_encode_aper; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RAB_IE_ContainerList_1142P9_constr_10; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RAB_IE_ContainerList_1142P9; +asn_struct_free_f S1AP_E_RAB_IE_ContainerList_1142P9_free; +asn_struct_print_f S1AP_E_RAB_IE_ContainerList_1142P9_print; +asn_constr_check_f S1AP_E_RAB_IE_ContainerList_1142P9_constraint; +ber_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P9_decode_ber; +der_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P9_encode_der; +xer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P9_decode_xer; +xer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P9_encode_xer; +oer_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P9_decode_oer; +oer_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P9_encode_oer; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P9_decode_uper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P9_encode_uper; +per_type_decoder_f S1AP_E_RAB_IE_ContainerList_1142P9_decode_aper; +per_type_encoder_f S1AP_E_RAB_IE_ContainerList_1142P9_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RAB_IE_ContainerList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerPairList.h b/lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerPairList.h new file mode 100644 index 0000000000..2682f68282 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RAB-IE-ContainerPairList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RAB_IE_ContainerPairList_H_ +#define _S1AP_E_RAB_IE_ContainerPairList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RAB_IE_ContainerPairList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.c b/lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.c new file mode 100644 index 0000000000..2db03efc22 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.c @@ -0,0 +1,123 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABAdmittedItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABAdmittedItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItem, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItem, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_POINTER, 5, offsetof(struct S1AP_E_RABAdmittedItem, dL_transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-transportLayerAddress" + }, + { ATF_POINTER, 4, offsetof(struct S1AP_E_RABAdmittedItem, dL_gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-gTP-TEID" + }, + { ATF_POINTER, 3, offsetof(struct S1AP_E_RABAdmittedItem, uL_TransportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-TransportLayerAddress" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_E_RABAdmittedItem, uL_GTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABAdmittedItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABAdmittedItem_oms_1[] = { 3, 4, 5, 6, 7 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABAdmittedItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABAdmittedItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dL-transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dL-gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* uL-TransportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* uL-GTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABAdmittedItem_specs_1 = { + sizeof(struct S1AP_E_RABAdmittedItem), + offsetof(struct S1AP_E_RABAdmittedItem, _asn_ctx), + asn_MAP_S1AP_E_RABAdmittedItem_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABAdmittedItem_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABAdmittedItem = { + "E-RABAdmittedItem", + "E-RABAdmittedItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABAdmittedItem_tags_1, + sizeof(asn_DEF_S1AP_E_RABAdmittedItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABAdmittedItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABAdmittedItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABAdmittedItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABAdmittedItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABAdmittedItem_1, + 8, /* Elements count */ + &asn_SPC_S1AP_E_RABAdmittedItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.h b/lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.h new file mode 100644 index 0000000000..c95a3706eb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABAdmittedItem.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABAdmittedItem_H_ +#define _S1AP_E_RABAdmittedItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABAdmittedItem */ +typedef struct S1AP_E_RABAdmittedItem { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t gTP_TEID; + S1AP_TransportLayerAddress_t *dL_transportLayerAddress; /* OPTIONAL */ + S1AP_GTP_TEID_t *dL_gTP_TEID; /* OPTIONAL */ + S1AP_TransportLayerAddress_t *uL_TransportLayerAddress; /* OPTIONAL */ + S1AP_GTP_TEID_t *uL_GTP_TEID; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABAdmittedItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABAdmittedItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABAdmittedItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.c b/lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.c new file mode 100644 index 0000000000..22b4657816 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABAdmittedList.h" + +int +S1AP_E_RABAdmittedList_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P2, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABAdmittedList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABAdmittedList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABAdmittedList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABAdmittedList = { + "E-RABAdmittedList", + "E-RABAdmittedList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABAdmittedList_tags_1, + sizeof(asn_DEF_S1AP_E_RABAdmittedList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABAdmittedList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABAdmittedList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABAdmittedList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABAdmittedList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABAdmittedList_constr_1, &asn_PER_type_S1AP_E_RABAdmittedList_constr_1, S1AP_E_RABAdmittedList_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P2_5, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P2_specs_5 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.h b/lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.h new file mode 100644 index 0000000000..1364f07512 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABAdmittedList.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABAdmittedList_H_ +#define _S1AP_E_RABAdmittedList_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABAdmittedList */ +typedef S1AP_E_RAB_IE_ContainerList_1142P2_t S1AP_E_RABAdmittedList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABAdmittedList; +asn_struct_free_f S1AP_E_RABAdmittedList_free; +asn_struct_print_f S1AP_E_RABAdmittedList_print; +asn_constr_check_f S1AP_E_RABAdmittedList_constraint; +ber_type_decoder_f S1AP_E_RABAdmittedList_decode_ber; +der_type_encoder_f S1AP_E_RABAdmittedList_encode_der; +xer_type_decoder_f S1AP_E_RABAdmittedList_decode_xer; +xer_type_encoder_f S1AP_E_RABAdmittedList_encode_xer; +oer_type_decoder_f S1AP_E_RABAdmittedList_decode_oer; +oer_type_encoder_f S1AP_E_RABAdmittedList_encode_oer; +per_type_decoder_f S1AP_E_RABAdmittedList_decode_uper; +per_type_encoder_f S1AP_E_RABAdmittedList_encode_uper; +per_type_decoder_f S1AP_E_RABAdmittedList_decode_aper; +per_type_encoder_f S1AP_E_RABAdmittedList_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABAdmittedList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABDataForwardingItem.c b/lib/s1ap3/asn1c/S1AP_E-RABDataForwardingItem.c new file mode 100644 index 0000000000..43c4e41e52 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABDataForwardingItem.c @@ -0,0 +1,103 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABDataForwardingItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABDataForwardingItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABDataForwardingItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 5, offsetof(struct S1AP_E_RABDataForwardingItem, dL_transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-transportLayerAddress" + }, + { ATF_POINTER, 4, offsetof(struct S1AP_E_RABDataForwardingItem, dL_gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-gTP-TEID" + }, + { ATF_POINTER, 3, offsetof(struct S1AP_E_RABDataForwardingItem, uL_TransportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-TransportLayerAddress" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_E_RABDataForwardingItem, uL_GTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABDataForwardingItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABDataForwardingItem_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABDataForwardingItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABDataForwardingItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-TransportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-GTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABDataForwardingItem_specs_1 = { + sizeof(struct S1AP_E_RABDataForwardingItem), + offsetof(struct S1AP_E_RABDataForwardingItem, _asn_ctx), + asn_MAP_S1AP_E_RABDataForwardingItem_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABDataForwardingItem_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABDataForwardingItem = { + "E-RABDataForwardingItem", + "E-RABDataForwardingItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABDataForwardingItem_tags_1, + sizeof(asn_DEF_S1AP_E_RABDataForwardingItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABDataForwardingItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABDataForwardingItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABDataForwardingItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABDataForwardingItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABDataForwardingItem_1, + 6, /* Elements count */ + &asn_SPC_S1AP_E_RABDataForwardingItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABDataForwardingItem.h b/lib/s1ap3/asn1c/S1AP_E-RABDataForwardingItem.h new file mode 100644 index 0000000000..200752e777 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABDataForwardingItem.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABDataForwardingItem_H_ +#define _S1AP_E_RABDataForwardingItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABDataForwardingItem */ +typedef struct S1AP_E_RABDataForwardingItem { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_TransportLayerAddress_t *dL_transportLayerAddress; /* OPTIONAL */ + S1AP_GTP_TEID_t *dL_gTP_TEID; /* OPTIONAL */ + S1AP_TransportLayerAddress_t *uL_TransportLayerAddress; /* OPTIONAL */ + S1AP_GTP_TEID_t *uL_GTP_TEID; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABDataForwardingItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABDataForwardingItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABDataForwardingItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeReq.c b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeReq.c new file mode 100644 index 0000000000..3a8837a78b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeReq.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABFailedToResumeItemResumeReq.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeReq_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABFailedToResumeItemResumeReq_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABFailedToResumeItemResumeReq_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeReq_specs_1 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeReq), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq, _asn_ctx), + asn_MAP_S1AP_E_RABFailedToResumeItemResumeReq_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABFailedToResumeItemResumeReq_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq = { + "E-RABFailedToResumeItemResumeReq", + "E-RABFailedToResumeItemResumeReq", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToResumeItemResumeReq_1, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToResumeItemResumeReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeReq.h b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeReq.h new file mode 100644 index 0000000000..33d34ce8aa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeReq.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABFailedToResumeItemResumeReq_H_ +#define _S1AP_E_RABFailedToResumeItemResumeReq_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_Cause.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABFailedToResumeItemResumeReq */ +typedef struct S1AP_E_RABFailedToResumeItemResumeReq { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_Cause_t cause; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABFailedToResumeItemResumeReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABFailedToResumeItemResumeReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeRes.c b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeRes.c new file mode 100644 index 0000000000..fc656eb843 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeRes.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABFailedToResumeItemResumeRes.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeRes_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABFailedToResumeItemResumeRes_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABFailedToResumeItemResumeRes_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeRes_specs_1 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeRes), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes, _asn_ctx), + asn_MAP_S1AP_E_RABFailedToResumeItemResumeRes_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABFailedToResumeItemResumeRes_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes = { + "E-RABFailedToResumeItemResumeRes", + "E-RABFailedToResumeItemResumeRes", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_tags_1, + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToResumeItemResumeRes_1, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToResumeItemResumeRes_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeRes.h b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeRes.h new file mode 100644 index 0000000000..4d6fc24c69 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeItemResumeRes.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABFailedToResumeItemResumeRes_H_ +#define _S1AP_E_RABFailedToResumeItemResumeRes_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_Cause.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABFailedToResumeItemResumeRes */ +typedef struct S1AP_E_RABFailedToResumeItemResumeRes { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_Cause_t cause; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABFailedToResumeItemResumeRes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABFailedToResumeItemResumeRes_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeReq.c b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeReq.c new file mode 100644 index 0000000000..875577c0b0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeReq.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABFailedToResumeListResumeReq.h" + +int +S1AP_E_RABFailedToResumeListResumeReq_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P8, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABFailedToResumeListResumeReq_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABFailedToResumeListResumeReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToResumeListResumeReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeListResumeReq = { + "E-RABFailedToResumeListResumeReq", + "E-RABFailedToResumeListResumeReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABFailedToResumeListResumeReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABFailedToResumeListResumeReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeListResumeReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToResumeListResumeReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToResumeListResumeReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeListResumeReq_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABFailedToResumeListResumeReq_constr_1, &asn_PER_type_S1AP_E_RABFailedToResumeListResumeReq_constr_1, S1AP_E_RABFailedToResumeListResumeReq_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P8_17, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P8_specs_17 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeReq.h b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeReq.h new file mode 100644 index 0000000000..049d64023f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeReq.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABFailedToResumeListResumeReq_H_ +#define _S1AP_E_RABFailedToResumeListResumeReq_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABFailedToResumeListResumeReq */ +typedef S1AP_E_RAB_IE_ContainerList_1142P8_t S1AP_E_RABFailedToResumeListResumeReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeListResumeReq; +asn_struct_free_f S1AP_E_RABFailedToResumeListResumeReq_free; +asn_struct_print_f S1AP_E_RABFailedToResumeListResumeReq_print; +asn_constr_check_f S1AP_E_RABFailedToResumeListResumeReq_constraint; +ber_type_decoder_f S1AP_E_RABFailedToResumeListResumeReq_decode_ber; +der_type_encoder_f S1AP_E_RABFailedToResumeListResumeReq_encode_der; +xer_type_decoder_f S1AP_E_RABFailedToResumeListResumeReq_decode_xer; +xer_type_encoder_f S1AP_E_RABFailedToResumeListResumeReq_encode_xer; +oer_type_decoder_f S1AP_E_RABFailedToResumeListResumeReq_decode_oer; +oer_type_encoder_f S1AP_E_RABFailedToResumeListResumeReq_encode_oer; +per_type_decoder_f S1AP_E_RABFailedToResumeListResumeReq_decode_uper; +per_type_encoder_f S1AP_E_RABFailedToResumeListResumeReq_encode_uper; +per_type_decoder_f S1AP_E_RABFailedToResumeListResumeReq_decode_aper; +per_type_encoder_f S1AP_E_RABFailedToResumeListResumeReq_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABFailedToResumeListResumeReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeRes.c b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeRes.c new file mode 100644 index 0000000000..4e104d3322 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeRes.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABFailedToResumeListResumeRes.h" + +int +S1AP_E_RABFailedToResumeListResumeRes_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P9, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABFailedToResumeListResumeRes_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABFailedToResumeListResumeRes_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToResumeListResumeRes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeListResumeRes = { + "E-RABFailedToResumeListResumeRes", + "E-RABFailedToResumeListResumeRes", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABFailedToResumeListResumeRes_tags_1, + sizeof(asn_DEF_S1AP_E_RABFailedToResumeListResumeRes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeListResumeRes_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToResumeListResumeRes_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToResumeListResumeRes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeListResumeRes_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABFailedToResumeListResumeRes_constr_1, &asn_PER_type_S1AP_E_RABFailedToResumeListResumeRes_constr_1, S1AP_E_RABFailedToResumeListResumeRes_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P9_19, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P9_specs_19 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeRes.h b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeRes.h new file mode 100644 index 0000000000..db3ab50531 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToResumeListResumeRes.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABFailedToResumeListResumeRes_H_ +#define _S1AP_E_RABFailedToResumeListResumeRes_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABFailedToResumeListResumeRes */ +typedef S1AP_E_RAB_IE_ContainerList_1142P9_t S1AP_E_RABFailedToResumeListResumeRes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeListResumeRes; +asn_struct_free_f S1AP_E_RABFailedToResumeListResumeRes_free; +asn_struct_print_f S1AP_E_RABFailedToResumeListResumeRes_print; +asn_constr_check_f S1AP_E_RABFailedToResumeListResumeRes_constraint; +ber_type_decoder_f S1AP_E_RABFailedToResumeListResumeRes_decode_ber; +der_type_encoder_f S1AP_E_RABFailedToResumeListResumeRes_encode_der; +xer_type_decoder_f S1AP_E_RABFailedToResumeListResumeRes_decode_xer; +xer_type_encoder_f S1AP_E_RABFailedToResumeListResumeRes_encode_xer; +oer_type_decoder_f S1AP_E_RABFailedToResumeListResumeRes_decode_oer; +oer_type_encoder_f S1AP_E_RABFailedToResumeListResumeRes_encode_oer; +per_type_decoder_f S1AP_E_RABFailedToResumeListResumeRes_decode_uper; +per_type_encoder_f S1AP_E_RABFailedToResumeListResumeRes_encode_uper; +per_type_decoder_f S1AP_E_RABFailedToResumeListResumeRes_decode_aper; +per_type_encoder_f S1AP_E_RABFailedToResumeListResumeRes_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABFailedToResumeListResumeRes_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToSetupItemHOReqAck.c b/lib/s1ap3/asn1c/S1AP_E-RABFailedToSetupItemHOReqAck.c new file mode 100644 index 0000000000..e9037d62ac --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToSetupItemHOReqAck.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABFailedToSetupItemHOReqAck.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToSetupItemHOReqAck_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAck, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAck, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAck, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABFailedToSetupItemHOReqAck_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABFailedToSetupItemHOReqAck_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToSetupItemHOReqAck_specs_1 = { + sizeof(struct S1AP_E_RABFailedToSetupItemHOReqAck), + offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAck, _asn_ctx), + asn_MAP_S1AP_E_RABFailedToSetupItemHOReqAck_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABFailedToSetupItemHOReqAck_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck = { + "E-RABFailedToSetupItemHOReqAck", + "E-RABFailedToSetupItemHOReqAck", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck_tags_1, + sizeof(asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToSetupItemHOReqAck_1, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToSetupItemHOReqAck_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedToSetupItemHOReqAck.h b/lib/s1ap3/asn1c/S1AP_E-RABFailedToSetupItemHOReqAck.h new file mode 100644 index 0000000000..3ef35cb421 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedToSetupItemHOReqAck.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABFailedToSetupItemHOReqAck_H_ +#define _S1AP_E_RABFailedToSetupItemHOReqAck_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_Cause.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABFailedToSetupItemHOReqAck */ +typedef struct S1AP_E_RABFailedToSetupItemHOReqAck { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_Cause_t cause; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABFailedToSetupItemHOReqAck_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABFailedToSetupItemHOReqAck_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedtoSetupListHOReqAck.c b/lib/s1ap3/asn1c/S1AP_E-RABFailedtoSetupListHOReqAck.c new file mode 100644 index 0000000000..d71bdf98e1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedtoSetupListHOReqAck.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABFailedtoSetupListHOReqAck.h" + +int +S1AP_E_RABFailedtoSetupListHOReqAck_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P3, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABFailedtoSetupListHOReqAck_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABFailedtoSetupListHOReqAck_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck = { + "E-RABFailedtoSetupListHOReqAck", + "E-RABFailedtoSetupListHOReqAck", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck_tags_1, + sizeof(asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck_tags_1) + /sizeof(asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABFailedtoSetupListHOReqAck_constr_1, &asn_PER_type_S1AP_E_RABFailedtoSetupListHOReqAck_constr_1, S1AP_E_RABFailedtoSetupListHOReqAck_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P3_7, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P3_specs_7 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABFailedtoSetupListHOReqAck.h b/lib/s1ap3/asn1c/S1AP_E-RABFailedtoSetupListHOReqAck.h new file mode 100644 index 0000000000..5bbd5e8329 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABFailedtoSetupListHOReqAck.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABFailedtoSetupListHOReqAck_H_ +#define _S1AP_E_RABFailedtoSetupListHOReqAck_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABFailedtoSetupListHOReqAck */ +typedef S1AP_E_RAB_IE_ContainerList_1142P3_t S1AP_E_RABFailedtoSetupListHOReqAck_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck; +asn_struct_free_f S1AP_E_RABFailedtoSetupListHOReqAck_free; +asn_struct_print_f S1AP_E_RABFailedtoSetupListHOReqAck_print; +asn_constr_check_f S1AP_E_RABFailedtoSetupListHOReqAck_constraint; +ber_type_decoder_f S1AP_E_RABFailedtoSetupListHOReqAck_decode_ber; +der_type_encoder_f S1AP_E_RABFailedtoSetupListHOReqAck_encode_der; +xer_type_decoder_f S1AP_E_RABFailedtoSetupListHOReqAck_decode_xer; +xer_type_encoder_f S1AP_E_RABFailedtoSetupListHOReqAck_encode_xer; +oer_type_decoder_f S1AP_E_RABFailedtoSetupListHOReqAck_decode_oer; +oer_type_encoder_f S1AP_E_RABFailedtoSetupListHOReqAck_encode_oer; +per_type_decoder_f S1AP_E_RABFailedtoSetupListHOReqAck_decode_uper; +per_type_encoder_f S1AP_E_RABFailedtoSetupListHOReqAck_encode_uper; +per_type_decoder_f S1AP_E_RABFailedtoSetupListHOReqAck_decode_aper; +per_type_encoder_f S1AP_E_RABFailedtoSetupListHOReqAck_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABFailedtoSetupListHOReqAck_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABInformationList.c b/lib/s1ap3/asn1c/S1AP_E-RABInformationList.c new file mode 100644 index 0000000000..5b9ade5c5d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABInformationList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABInformationList.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABInformationList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_RABInformationList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_E_RABInformationList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABInformationList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABInformationList_specs_1 = { + sizeof(struct S1AP_E_RABInformationList), + offsetof(struct S1AP_E_RABInformationList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABInformationList = { + "E-RABInformationList", + "E-RABInformationList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABInformationList_tags_1, + sizeof(asn_DEF_S1AP_E_RABInformationList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABInformationList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABInformationList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABInformationList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABInformationList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABInformationList_constr_1, &asn_PER_type_S1AP_E_RABInformationList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABInformationList_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABInformationList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABInformationList.h b/lib/s1ap3/asn1c/S1AP_E-RABInformationList.h new file mode 100644 index 0000000000..51d0f760fe --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABInformationList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABInformationList_H_ +#define _S1AP_E_RABInformationList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABInformationList */ +typedef struct S1AP_E_RABInformationList { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABInformationList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABInformationList; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABInformationList_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABInformationList_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_E_RABInformationList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABInformationList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABInformationListItem.c b/lib/s1ap3/asn1c/S1AP_E-RABInformationListItem.c new file mode 100644 index 0000000000..717e30f983 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABInformationListItem.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABInformationListItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABInformationListItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABInformationListItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_E_RABInformationListItem, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABInformationListItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P49, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABInformationListItem_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABInformationListItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABInformationListItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABInformationListItem_specs_1 = { + sizeof(struct S1AP_E_RABInformationListItem), + offsetof(struct S1AP_E_RABInformationListItem, _asn_ctx), + asn_MAP_S1AP_E_RABInformationListItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABInformationListItem_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABInformationListItem = { + "E-RABInformationListItem", + "E-RABInformationListItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABInformationListItem_tags_1, + sizeof(asn_DEF_S1AP_E_RABInformationListItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABInformationListItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABInformationListItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABInformationListItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABInformationListItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABInformationListItem_1, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABInformationListItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABInformationListItem.h b/lib/s1ap3/asn1c/S1AP_E-RABInformationListItem.h new file mode 100644 index 0000000000..9b5d5fc3b9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABInformationListItem.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABInformationListItem_H_ +#define _S1AP_E_RABInformationListItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_DL-Forwarding.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABInformationListItem */ +typedef struct S1AP_E_RABInformationListItem { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABInformationListItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABInformationListItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABInformationListItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABItem.c b/lib/s1ap3/asn1c/S1AP_E-RABItem.c new file mode 100644 index 0000000000..0577d1f1c1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABItem.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABItem, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P50, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABItem_specs_1 = { + sizeof(struct S1AP_E_RABItem), + offsetof(struct S1AP_E_RABItem, _asn_ctx), + asn_MAP_S1AP_E_RABItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABItem = { + "E-RABItem", + "E-RABItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABItem_tags_1, + sizeof(asn_DEF_S1AP_E_RABItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABItem_1, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABItem.h b/lib/s1ap3/asn1c/S1AP_E-RABItem.h new file mode 100644 index 0000000000..fc543f82df --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABItem.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABItem_H_ +#define _S1AP_E_RABItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_Cause.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABItem */ +typedef struct S1AP_E_RABItem { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_Cause_t cause; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABLevelQoSParameters.c b/lib/s1ap3/asn1c/S1AP_E-RABLevelQoSParameters.c new file mode 100644 index 0000000000..68fc80c7fc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABLevelQoSParameters.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABLevelQoSParameters.h" + +#include "S1AP_GBR-QosInformation.h" +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_E_RABLevelQoSParameters_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABLevelQoSParameters, qCI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_QCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "qCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABLevelQoSParameters, allocationRetentionPriority), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_AllocationAndRetentionPriority, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "allocationRetentionPriority" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_E_RABLevelQoSParameters, gbrQosInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GBR_QosInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gbrQosInformation" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABLevelQoSParameters, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P51, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABLevelQoSParameters_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABLevelQoSParameters_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABLevelQoSParameters_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* qCI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* allocationRetentionPriority */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gbrQosInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABLevelQoSParameters_specs_1 = { + sizeof(struct S1AP_E_RABLevelQoSParameters), + offsetof(struct S1AP_E_RABLevelQoSParameters, _asn_ctx), + asn_MAP_S1AP_E_RABLevelQoSParameters_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABLevelQoSParameters_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABLevelQoSParameters = { + "E-RABLevelQoSParameters", + "E-RABLevelQoSParameters", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABLevelQoSParameters_tags_1, + sizeof(asn_DEF_S1AP_E_RABLevelQoSParameters_tags_1) + /sizeof(asn_DEF_S1AP_E_RABLevelQoSParameters_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABLevelQoSParameters_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABLevelQoSParameters_tags_1) + /sizeof(asn_DEF_S1AP_E_RABLevelQoSParameters_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABLevelQoSParameters_1, + 4, /* Elements count */ + &asn_SPC_S1AP_E_RABLevelQoSParameters_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABLevelQoSParameters.h b/lib/s1ap3/asn1c/S1AP_E-RABLevelQoSParameters.h new file mode 100644 index 0000000000..63de84b503 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABLevelQoSParameters.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABLevelQoSParameters_H_ +#define _S1AP_E_RABLevelQoSParameters_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_QCI.h" +#include "S1AP_AllocationAndRetentionPriority.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_GBR_QosInformation; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABLevelQoSParameters */ +typedef struct S1AP_E_RABLevelQoSParameters { + S1AP_QCI_t qCI; + S1AP_AllocationAndRetentionPriority_t allocationRetentionPriority; + struct S1AP_GBR_QosInformation *gbrQosInformation; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABLevelQoSParameters_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABLevelQoSParameters; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABLevelQoSParameters_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABLevelQoSParameters_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABLevelQoSParameters_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABList.c b/lib/s1ap3/asn1c/S1AP_E-RABList.c new file mode 100644 index 0000000000..1c4482322f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABList.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_E_RABList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABList_specs_1 = { + sizeof(struct S1AP_E_RABList), + offsetof(struct S1AP_E_RABList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABList = { + "E-RABList", + "E-RABList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABList_tags_1, + sizeof(asn_DEF_S1AP_E_RABList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABList_constr_1, &asn_PER_type_S1AP_E_RABList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABList_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABList.h b/lib/s1ap3/asn1c/S1AP_E-RABList.h new file mode 100644 index 0000000000..190dc644dc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABList.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABList_H_ +#define _S1AP_E_RABList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABList */ +typedef struct S1AP_E_RABList { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModificationConfirm.c b/lib/s1ap3/asn1c/S1AP_E-RABModificationConfirm.c new file mode 100644 index 0000000000..aa77581a32 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModificationConfirm.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABModificationConfirm.h" + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModificationConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P78, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModificationConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModificationConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModificationConfirm_specs_1 = { + sizeof(struct S1AP_E_RABModificationConfirm), + offsetof(struct S1AP_E_RABModificationConfirm, _asn_ctx), + asn_MAP_S1AP_E_RABModificationConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModificationConfirm = { + "E-RABModificationConfirm", + "E-RABModificationConfirm", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModificationConfirm_tags_1, + sizeof(asn_DEF_S1AP_E_RABModificationConfirm_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModificationConfirm_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABModificationConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModificationConfirm_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModificationConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModificationConfirm_1, + 1, /* Elements count */ + &asn_SPC_S1AP_E_RABModificationConfirm_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModificationConfirm.h b/lib/s1ap3/asn1c/S1AP_E-RABModificationConfirm.h new file mode 100644 index 0000000000..3e984dab6a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModificationConfirm.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABModificationConfirm_H_ +#define _S1AP_E_RABModificationConfirm_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABModificationConfirm */ +typedef struct S1AP_E_RABModificationConfirm { + S1AP_ProtocolIE_Container_6551P78_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModificationConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModificationConfirm; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModificationConfirm_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModificationConfirm_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABModificationConfirm_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModificationIndication.c b/lib/s1ap3/asn1c/S1AP_E-RABModificationIndication.c new file mode 100644 index 0000000000..3838bc74c7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModificationIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABModificationIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModificationIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P77, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModificationIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModificationIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModificationIndication_specs_1 = { + sizeof(struct S1AP_E_RABModificationIndication), + offsetof(struct S1AP_E_RABModificationIndication, _asn_ctx), + asn_MAP_S1AP_E_RABModificationIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModificationIndication = { + "E-RABModificationIndication", + "E-RABModificationIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModificationIndication_tags_1, + sizeof(asn_DEF_S1AP_E_RABModificationIndication_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModificationIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABModificationIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModificationIndication_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModificationIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModificationIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_E_RABModificationIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModificationIndication.h b/lib/s1ap3/asn1c/S1AP_E-RABModificationIndication.h new file mode 100644 index 0000000000..bbf6889bf2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModificationIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABModificationIndication_H_ +#define _S1AP_E_RABModificationIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABModificationIndication */ +typedef struct S1AP_E_RABModificationIndication { + S1AP_ProtocolIE_Container_6551P77_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModificationIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModificationIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModificationIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModificationIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABModificationIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModConf.c b/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModConf.c new file mode 100644 index 0000000000..433d26aee5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModConf.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABModifyItemBearerModConf.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModConf_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModConf, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABModifyItemBearerModConf, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABModifyItemBearerModConf_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyItemBearerModConf_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyItemBearerModConf_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModConf_specs_1 = { + sizeof(struct S1AP_E_RABModifyItemBearerModConf), + offsetof(struct S1AP_E_RABModifyItemBearerModConf, _asn_ctx), + asn_MAP_S1AP_E_RABModifyItemBearerModConf_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABModifyItemBearerModConf_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModConf = { + "E-RABModifyItemBearerModConf", + "E-RABModifyItemBearerModConf", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyItemBearerModConf_tags_1, + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConf_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConf_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyItemBearerModConf_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConf_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConf_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyItemBearerModConf_1, + 2, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyItemBearerModConf_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModConf.h b/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModConf.h new file mode 100644 index 0000000000..aa48a0cf82 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModConf.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABModifyItemBearerModConf_H_ +#define _S1AP_E_RABModifyItemBearerModConf_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABModifyItemBearerModConf */ +typedef struct S1AP_E_RABModifyItemBearerModConf { + S1AP_E_RAB_ID_t e_RAB_ID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyItemBearerModConf_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModConf; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABModifyItemBearerModConf_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModRes.c b/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModRes.c new file mode 100644 index 0000000000..a90a966880 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModRes.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABModifyItemBearerModRes.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModRes_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModRes, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABModifyItemBearerModRes, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABModifyItemBearerModRes_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyItemBearerModRes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyItemBearerModRes_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModRes_specs_1 = { + sizeof(struct S1AP_E_RABModifyItemBearerModRes), + offsetof(struct S1AP_E_RABModifyItemBearerModRes, _asn_ctx), + asn_MAP_S1AP_E_RABModifyItemBearerModRes_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABModifyItemBearerModRes_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModRes = { + "E-RABModifyItemBearerModRes", + "E-RABModifyItemBearerModRes", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyItemBearerModRes_tags_1, + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModRes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModRes_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyItemBearerModRes_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModRes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModRes_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyItemBearerModRes_1, + 2, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyItemBearerModRes_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModRes.h b/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModRes.h new file mode 100644 index 0000000000..4245cd9671 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyItemBearerModRes.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABModifyItemBearerModRes_H_ +#define _S1AP_E_RABModifyItemBearerModRes_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABModifyItemBearerModRes */ +typedef struct S1AP_E_RABModifyItemBearerModRes { + S1AP_E_RAB_ID_t e_RAB_ID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyItemBearerModRes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModRes; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABModifyItemBearerModRes_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModConf.c b/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModConf.c new file mode 100644 index 0000000000..f1244fcd5f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModConf.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABModifyListBearerModConf.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABModifyListBearerModConf_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABModifyListBearerModConf_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyListBearerModConf_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyListBearerModConf_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABModifyListBearerModConf_specs_1 = { + sizeof(struct S1AP_E_RABModifyListBearerModConf), + offsetof(struct S1AP_E_RABModifyListBearerModConf, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyListBearerModConf = { + "E-RABModifyListBearerModConf", + "E-RABModifyListBearerModConf", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABModifyListBearerModConf_tags_1, + sizeof(asn_DEF_S1AP_E_RABModifyListBearerModConf_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyListBearerModConf_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyListBearerModConf_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyListBearerModConf_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyListBearerModConf_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABModifyListBearerModConf_constr_1, &asn_PER_type_S1AP_E_RABModifyListBearerModConf_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABModifyListBearerModConf_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABModifyListBearerModConf_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModConf.h b/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModConf.h new file mode 100644 index 0000000000..7d278eee1c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModConf.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABModifyListBearerModConf_H_ +#define _S1AP_E_RABModifyListBearerModConf_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABModifyListBearerModConf */ +typedef struct S1AP_E_RABModifyListBearerModConf { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyListBearerModConf_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyListBearerModConf; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABModifyListBearerModConf_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModRes.c b/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModRes.c new file mode 100644 index 0000000000..a233959116 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModRes.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABModifyListBearerModRes.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABModifyListBearerModRes_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABModifyListBearerModRes_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyListBearerModRes_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyListBearerModRes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABModifyListBearerModRes_specs_1 = { + sizeof(struct S1AP_E_RABModifyListBearerModRes), + offsetof(struct S1AP_E_RABModifyListBearerModRes, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyListBearerModRes = { + "E-RABModifyListBearerModRes", + "E-RABModifyListBearerModRes", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABModifyListBearerModRes_tags_1, + sizeof(asn_DEF_S1AP_E_RABModifyListBearerModRes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyListBearerModRes_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyListBearerModRes_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyListBearerModRes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyListBearerModRes_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABModifyListBearerModRes_constr_1, &asn_PER_type_S1AP_E_RABModifyListBearerModRes_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABModifyListBearerModRes_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABModifyListBearerModRes_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModRes.h b/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModRes.h new file mode 100644 index 0000000000..33a9a6e636 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyListBearerModRes.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABModifyListBearerModRes_H_ +#define _S1AP_E_RABModifyListBearerModRes_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABModifyListBearerModRes */ +typedef struct S1AP_E_RABModifyListBearerModRes { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyListBearerModRes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyListBearerModRes; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABModifyListBearerModRes_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.c b/lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.c new file mode 100644 index 0000000000..efe4777dac --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABModifyRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyRequest_specs_1 = { + sizeof(struct S1AP_E_RABModifyRequest), + offsetof(struct S1AP_E_RABModifyRequest, _asn_ctx), + asn_MAP_S1AP_E_RABModifyRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyRequest = { + "E-RABModifyRequest", + "E-RABModifyRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyRequest_tags_1, + sizeof(asn_DEF_S1AP_E_RABModifyRequest_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyRequest_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.h b/lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.h new file mode 100644 index 0000000000..a182e18dbe --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABModifyRequest_H_ +#define _S1AP_E_RABModifyRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABModifyRequest */ +typedef struct S1AP_E_RABModifyRequest { + S1AP_ProtocolIE_Container_6551P14_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABModifyRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.c b/lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.c new file mode 100644 index 0000000000..0c60141b30 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABModifyResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyResponse_specs_1 = { + sizeof(struct S1AP_E_RABModifyResponse), + offsetof(struct S1AP_E_RABModifyResponse, _asn_ctx), + asn_MAP_S1AP_E_RABModifyResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyResponse = { + "E-RABModifyResponse", + "E-RABModifyResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyResponse_tags_1, + sizeof(asn_DEF_S1AP_E_RABModifyResponse_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyResponse_tags_1) + /sizeof(asn_DEF_S1AP_E_RABModifyResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.h b/lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.h new file mode 100644 index 0000000000..150457d39a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABModifyResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABModifyResponse_H_ +#define _S1AP_E_RABModifyResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABModifyResponse */ +typedef struct S1AP_E_RABModifyResponse { + S1AP_ProtocolIE_Container_6551P15_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABModifyResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedItemBearerModInd.c b/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedItemBearerModInd.c new file mode 100644 index 0000000000..9e96e74c3b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedItemBearerModInd.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABNotToBeModifiedItemBearerModInd.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABNotToBeModifiedItemBearerModInd_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd, dL_GTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABNotToBeModifiedItemBearerModInd_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABNotToBeModifiedItemBearerModInd_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-GTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABNotToBeModifiedItemBearerModInd_specs_1 = { + sizeof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd), + offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd, _asn_ctx), + asn_MAP_S1AP_E_RABNotToBeModifiedItemBearerModInd_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABNotToBeModifiedItemBearerModInd_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd = { + "E-RABNotToBeModifiedItemBearerModInd", + "E-RABNotToBeModifiedItemBearerModInd", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_tags_1, + sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_tags_1) + /sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_tags_1) + /sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABNotToBeModifiedItemBearerModInd_1, + 4, /* Elements count */ + &asn_SPC_S1AP_E_RABNotToBeModifiedItemBearerModInd_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedItemBearerModInd.h b/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedItemBearerModInd.h new file mode 100644 index 0000000000..d62c3f9a07 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedItemBearerModInd.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABNotToBeModifiedItemBearerModInd_H_ +#define _S1AP_E_RABNotToBeModifiedItemBearerModInd_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABNotToBeModifiedItemBearerModInd */ +typedef struct S1AP_E_RABNotToBeModifiedItemBearerModInd { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t dL_GTP_TEID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABNotToBeModifiedItemBearerModInd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABNotToBeModifiedItemBearerModInd_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedListBearerModInd.c b/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedListBearerModInd.c new file mode 100644 index 0000000000..5602c2055b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedListBearerModInd.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABNotToBeModifiedListBearerModInd.h" + +int +S1AP_E_RABNotToBeModifiedListBearerModInd_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P7, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABNotToBeModifiedListBearerModInd_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABNotToBeModifiedListBearerModInd_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd = { + "E-RABNotToBeModifiedListBearerModInd", + "E-RABNotToBeModifiedListBearerModInd", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd_tags_1, + sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd_tags_1) + /sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd_tags_1) + /sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABNotToBeModifiedListBearerModInd_constr_1, &asn_PER_type_S1AP_E_RABNotToBeModifiedListBearerModInd_constr_1, S1AP_E_RABNotToBeModifiedListBearerModInd_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P7_15, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P7_specs_15 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedListBearerModInd.h b/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedListBearerModInd.h new file mode 100644 index 0000000000..40e0f10c04 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABNotToBeModifiedListBearerModInd.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABNotToBeModifiedListBearerModInd_H_ +#define _S1AP_E_RABNotToBeModifiedListBearerModInd_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABNotToBeModifiedListBearerModInd */ +typedef S1AP_E_RAB_IE_ContainerList_1142P7_t S1AP_E_RABNotToBeModifiedListBearerModInd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd; +asn_struct_free_f S1AP_E_RABNotToBeModifiedListBearerModInd_free; +asn_struct_print_f S1AP_E_RABNotToBeModifiedListBearerModInd_print; +asn_constr_check_f S1AP_E_RABNotToBeModifiedListBearerModInd_constraint; +ber_type_decoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_decode_ber; +der_type_encoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_encode_der; +xer_type_decoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_decode_xer; +xer_type_encoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_encode_xer; +oer_type_decoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_decode_oer; +oer_type_encoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_encode_oer; +per_type_decoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_decode_uper; +per_type_encoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_encode_uper; +per_type_decoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_decode_aper; +per_type_encoder_f S1AP_E_RABNotToBeModifiedListBearerModInd_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABNotToBeModifiedListBearerModInd_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.c b/lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.c new file mode 100644 index 0000000000..5d5f3a4042 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABReleaseCommand.h" + +asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseCommand_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseCommand, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseCommand_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABReleaseCommand_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseCommand_specs_1 = { + sizeof(struct S1AP_E_RABReleaseCommand), + offsetof(struct S1AP_E_RABReleaseCommand, _asn_ctx), + asn_MAP_S1AP_E_RABReleaseCommand_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseCommand = { + "E-RABReleaseCommand", + "E-RABReleaseCommand", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABReleaseCommand_tags_1, + sizeof(asn_DEF_S1AP_E_RABReleaseCommand_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseCommand_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseCommand_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseCommand_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseCommand_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseCommand_1, + 1, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseCommand_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.h b/lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.h new file mode 100644 index 0000000000..dc5ecabbfd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseCommand.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABReleaseCommand_H_ +#define _S1AP_E_RABReleaseCommand_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABReleaseCommand */ +typedef struct S1AP_E_RABReleaseCommand { + S1AP_ProtocolIE_Container_6551P16_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseCommand_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseCommand; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseCommand_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseCommand_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABReleaseCommand_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.c b/lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.c new file mode 100644 index 0000000000..5096149188 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABReleaseIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABReleaseIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseIndication_specs_1 = { + sizeof(struct S1AP_E_RABReleaseIndication), + offsetof(struct S1AP_E_RABReleaseIndication, _asn_ctx), + asn_MAP_S1AP_E_RABReleaseIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseIndication = { + "E-RABReleaseIndication", + "E-RABReleaseIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABReleaseIndication_tags_1, + sizeof(asn_DEF_S1AP_E_RABReleaseIndication_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseIndication_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.h b/lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.h new file mode 100644 index 0000000000..748885090e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABReleaseIndication_H_ +#define _S1AP_E_RABReleaseIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABReleaseIndication */ +typedef struct S1AP_E_RABReleaseIndication { + S1AP_ProtocolIE_Container_6551P18_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABReleaseIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseItemBearerRelComp.c b/lib/s1ap3/asn1c/S1AP_E-RABReleaseItemBearerRelComp.c new file mode 100644 index 0000000000..1c37a10f5a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseItemBearerRelComp.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABReleaseItemBearerRelComp.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseItemBearerRelComp_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseItemBearerRelComp, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABReleaseItemBearerRelComp, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABReleaseItemBearerRelComp_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseItemBearerRelComp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABReleaseItemBearerRelComp_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseItemBearerRelComp_specs_1 = { + sizeof(struct S1AP_E_RABReleaseItemBearerRelComp), + offsetof(struct S1AP_E_RABReleaseItemBearerRelComp, _asn_ctx), + asn_MAP_S1AP_E_RABReleaseItemBearerRelComp_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABReleaseItemBearerRelComp_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseItemBearerRelComp = { + "E-RABReleaseItemBearerRelComp", + "E-RABReleaseItemBearerRelComp", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABReleaseItemBearerRelComp_tags_1, + sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelComp_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelComp_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseItemBearerRelComp_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelComp_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelComp_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseItemBearerRelComp_1, + 2, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseItemBearerRelComp_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseItemBearerRelComp.h b/lib/s1ap3/asn1c/S1AP_E-RABReleaseItemBearerRelComp.h new file mode 100644 index 0000000000..6b92511628 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseItemBearerRelComp.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABReleaseItemBearerRelComp_H_ +#define _S1AP_E_RABReleaseItemBearerRelComp_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABReleaseItemBearerRelComp */ +typedef struct S1AP_E_RABReleaseItemBearerRelComp { + S1AP_E_RAB_ID_t e_RAB_ID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseItemBearerRelComp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseItemBearerRelComp; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABReleaseItemBearerRelComp_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseListBearerRelComp.c b/lib/s1ap3/asn1c/S1AP_E-RABReleaseListBearerRelComp.c new file mode 100644 index 0000000000..74de3d492f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseListBearerRelComp.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABReleaseListBearerRelComp.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABReleaseListBearerRelComp_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABReleaseListBearerRelComp_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseListBearerRelComp_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseListBearerRelComp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABReleaseListBearerRelComp_specs_1 = { + sizeof(struct S1AP_E_RABReleaseListBearerRelComp), + offsetof(struct S1AP_E_RABReleaseListBearerRelComp, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseListBearerRelComp = { + "E-RABReleaseListBearerRelComp", + "E-RABReleaseListBearerRelComp", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABReleaseListBearerRelComp_tags_1, + sizeof(asn_DEF_S1AP_E_RABReleaseListBearerRelComp_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseListBearerRelComp_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseListBearerRelComp_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseListBearerRelComp_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseListBearerRelComp_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABReleaseListBearerRelComp_constr_1, &asn_PER_type_S1AP_E_RABReleaseListBearerRelComp_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABReleaseListBearerRelComp_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABReleaseListBearerRelComp_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseListBearerRelComp.h b/lib/s1ap3/asn1c/S1AP_E-RABReleaseListBearerRelComp.h new file mode 100644 index 0000000000..721fbfcab5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseListBearerRelComp.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABReleaseListBearerRelComp_H_ +#define _S1AP_E_RABReleaseListBearerRelComp_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABReleaseListBearerRelComp */ +typedef struct S1AP_E_RABReleaseListBearerRelComp { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseListBearerRelComp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseListBearerRelComp; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABReleaseListBearerRelComp_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.c b/lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.c new file mode 100644 index 0000000000..c40203d8ba --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABReleaseResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABReleaseResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseResponse_specs_1 = { + sizeof(struct S1AP_E_RABReleaseResponse), + offsetof(struct S1AP_E_RABReleaseResponse, _asn_ctx), + asn_MAP_S1AP_E_RABReleaseResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseResponse = { + "E-RABReleaseResponse", + "E-RABReleaseResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABReleaseResponse_tags_1, + sizeof(asn_DEF_S1AP_E_RABReleaseResponse_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseResponse_tags_1) + /sizeof(asn_DEF_S1AP_E_RABReleaseResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.h b/lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.h new file mode 100644 index 0000000000..d2aaf35432 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABReleaseResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABReleaseResponse_H_ +#define _S1AP_E_RABReleaseResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABReleaseResponse */ +typedef struct S1AP_E_RABReleaseResponse { + S1AP_ProtocolIE_Container_6551P17_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABReleaseResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupItemBearerSURes.c b/lib/s1ap3/asn1c/S1AP_E-RABSetupItemBearerSURes.c new file mode 100644 index 0000000000..a328f745b2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupItemBearerSURes.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABSetupItemBearerSURes.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemBearerSURes_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSURes, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSURes, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSURes, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABSetupItemBearerSURes, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABSetupItemBearerSURes_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupItemBearerSURes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupItemBearerSURes_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemBearerSURes_specs_1 = { + sizeof(struct S1AP_E_RABSetupItemBearerSURes), + offsetof(struct S1AP_E_RABSetupItemBearerSURes, _asn_ctx), + asn_MAP_S1AP_E_RABSetupItemBearerSURes_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABSetupItemBearerSURes_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemBearerSURes = { + "E-RABSetupItemBearerSURes", + "E-RABSetupItemBearerSURes", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupItemBearerSURes_tags_1, + sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSURes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSURes_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupItemBearerSURes_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSURes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSURes_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupItemBearerSURes_1, + 4, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupItemBearerSURes_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupItemBearerSURes.h b/lib/s1ap3/asn1c/S1AP_E-RABSetupItemBearerSURes.h new file mode 100644 index 0000000000..6be2948a69 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupItemBearerSURes.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABSetupItemBearerSURes_H_ +#define _S1AP_E_RABSetupItemBearerSURes_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABSetupItemBearerSURes */ +typedef struct S1AP_E_RABSetupItemBearerSURes { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t gTP_TEID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupItemBearerSURes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemBearerSURes; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABSetupItemBearerSURes_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupItemCtxtSURes.c b/lib/s1ap3/asn1c/S1AP_E-RABSetupItemCtxtSURes.c new file mode 100644 index 0000000000..d3dfa383e1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupItemCtxtSURes.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABSetupItemCtxtSURes.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemCtxtSURes_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSURes, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSURes, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSURes, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABSetupItemCtxtSURes, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABSetupItemCtxtSURes_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupItemCtxtSURes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupItemCtxtSURes_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemCtxtSURes_specs_1 = { + sizeof(struct S1AP_E_RABSetupItemCtxtSURes), + offsetof(struct S1AP_E_RABSetupItemCtxtSURes, _asn_ctx), + asn_MAP_S1AP_E_RABSetupItemCtxtSURes_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABSetupItemCtxtSURes_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemCtxtSURes = { + "E-RABSetupItemCtxtSURes", + "E-RABSetupItemCtxtSURes", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupItemCtxtSURes_tags_1, + sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSURes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSURes_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupItemCtxtSURes_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSURes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSURes_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupItemCtxtSURes_1, + 4, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupItemCtxtSURes_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupItemCtxtSURes.h b/lib/s1ap3/asn1c/S1AP_E-RABSetupItemCtxtSURes.h new file mode 100644 index 0000000000..0bdaf01590 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupItemCtxtSURes.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABSetupItemCtxtSURes_H_ +#define _S1AP_E_RABSetupItemCtxtSURes_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABSetupItemCtxtSURes */ +typedef struct S1AP_E_RABSetupItemCtxtSURes { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t gTP_TEID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupItemCtxtSURes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemCtxtSURes; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABSetupItemCtxtSURes_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupListBearerSURes.c b/lib/s1ap3/asn1c/S1AP_E-RABSetupListBearerSURes.c new file mode 100644 index 0000000000..2f1183e7c2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupListBearerSURes.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABSetupListBearerSURes.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABSetupListBearerSURes_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABSetupListBearerSURes_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupListBearerSURes_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupListBearerSURes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABSetupListBearerSURes_specs_1 = { + sizeof(struct S1AP_E_RABSetupListBearerSURes), + offsetof(struct S1AP_E_RABSetupListBearerSURes, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupListBearerSURes = { + "E-RABSetupListBearerSURes", + "E-RABSetupListBearerSURes", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABSetupListBearerSURes_tags_1, + sizeof(asn_DEF_S1AP_E_RABSetupListBearerSURes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupListBearerSURes_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupListBearerSURes_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupListBearerSURes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupListBearerSURes_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABSetupListBearerSURes_constr_1, &asn_PER_type_S1AP_E_RABSetupListBearerSURes_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABSetupListBearerSURes_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABSetupListBearerSURes_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupListBearerSURes.h b/lib/s1ap3/asn1c/S1AP_E-RABSetupListBearerSURes.h new file mode 100644 index 0000000000..6ec96d10b2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupListBearerSURes.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABSetupListBearerSURes_H_ +#define _S1AP_E_RABSetupListBearerSURes_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABSetupListBearerSURes */ +typedef struct S1AP_E_RABSetupListBearerSURes { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupListBearerSURes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupListBearerSURes; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABSetupListBearerSURes_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupListCtxtSURes.c b/lib/s1ap3/asn1c/S1AP_E-RABSetupListCtxtSURes.c new file mode 100644 index 0000000000..a9a64df9f2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupListCtxtSURes.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABSetupListCtxtSURes.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABSetupListCtxtSURes_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABSetupListCtxtSURes_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupListCtxtSURes_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupListCtxtSURes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABSetupListCtxtSURes_specs_1 = { + sizeof(struct S1AP_E_RABSetupListCtxtSURes), + offsetof(struct S1AP_E_RABSetupListCtxtSURes, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupListCtxtSURes = { + "E-RABSetupListCtxtSURes", + "E-RABSetupListCtxtSURes", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABSetupListCtxtSURes_tags_1, + sizeof(asn_DEF_S1AP_E_RABSetupListCtxtSURes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupListCtxtSURes_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupListCtxtSURes_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupListCtxtSURes_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupListCtxtSURes_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABSetupListCtxtSURes_constr_1, &asn_PER_type_S1AP_E_RABSetupListCtxtSURes_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABSetupListCtxtSURes_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABSetupListCtxtSURes_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupListCtxtSURes.h b/lib/s1ap3/asn1c/S1AP_E-RABSetupListCtxtSURes.h new file mode 100644 index 0000000000..07999a0b1b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupListCtxtSURes.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABSetupListCtxtSURes_H_ +#define _S1AP_E_RABSetupListCtxtSURes_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABSetupListCtxtSURes */ +typedef struct S1AP_E_RABSetupListCtxtSURes { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupListCtxtSURes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupListCtxtSURes; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABSetupListCtxtSURes_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.c b/lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.c new file mode 100644 index 0000000000..66dc3febf2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABSetupRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupRequest_specs_1 = { + sizeof(struct S1AP_E_RABSetupRequest), + offsetof(struct S1AP_E_RABSetupRequest, _asn_ctx), + asn_MAP_S1AP_E_RABSetupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupRequest = { + "E-RABSetupRequest", + "E-RABSetupRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupRequest_tags_1, + sizeof(asn_DEF_S1AP_E_RABSetupRequest_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupRequest_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.h b/lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.h new file mode 100644 index 0000000000..79e3245931 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABSetupRequest_H_ +#define _S1AP_E_RABSetupRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABSetupRequest */ +typedef struct S1AP_E_RABSetupRequest { + S1AP_ProtocolIE_Container_6551P12_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABSetupRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.c b/lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.c new file mode 100644 index 0000000000..af416b16b3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABSetupResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupResponse_specs_1 = { + sizeof(struct S1AP_E_RABSetupResponse), + offsetof(struct S1AP_E_RABSetupResponse, _asn_ctx), + asn_MAP_S1AP_E_RABSetupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupResponse = { + "E-RABSetupResponse", + "E-RABSetupResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupResponse_tags_1, + sizeof(asn_DEF_S1AP_E_RABSetupResponse_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupResponse_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSetupResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.h b/lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.h new file mode 100644 index 0000000000..115f60e4b2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSetupResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABSetupResponse_H_ +#define _S1AP_E_RABSetupResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABSetupResponse */ +typedef struct S1AP_E_RABSetupResponse { + S1AP_ProtocolIE_Container_6551P13_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABSetupResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSubjecttoDataForwardingList.c b/lib/s1ap3/asn1c/S1AP_E-RABSubjecttoDataForwardingList.c new file mode 100644 index 0000000000..f7defdc2d0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSubjecttoDataForwardingList.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABSubjecttoDataForwardingList.h" + +int +S1AP_E_RABSubjecttoDataForwardingList_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P0, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABSubjecttoDataForwardingList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABSubjecttoDataForwardingList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSubjecttoDataForwardingList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSubjecttoDataForwardingList = { + "E-RABSubjecttoDataForwardingList", + "E-RABSubjecttoDataForwardingList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABSubjecttoDataForwardingList_tags_1, + sizeof(asn_DEF_S1AP_E_RABSubjecttoDataForwardingList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSubjecttoDataForwardingList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABSubjecttoDataForwardingList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSubjecttoDataForwardingList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABSubjecttoDataForwardingList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABSubjecttoDataForwardingList_constr_1, &asn_PER_type_S1AP_E_RABSubjecttoDataForwardingList_constr_1, S1AP_E_RABSubjecttoDataForwardingList_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P0_1, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P0_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABSubjecttoDataForwardingList.h b/lib/s1ap3/asn1c/S1AP_E-RABSubjecttoDataForwardingList.h new file mode 100644 index 0000000000..1495d575b6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABSubjecttoDataForwardingList.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABSubjecttoDataForwardingList_H_ +#define _S1AP_E_RABSubjecttoDataForwardingList_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABSubjecttoDataForwardingList */ +typedef S1AP_E_RAB_IE_ContainerList_1142P0_t S1AP_E_RABSubjecttoDataForwardingList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSubjecttoDataForwardingList; +asn_struct_free_f S1AP_E_RABSubjecttoDataForwardingList_free; +asn_struct_print_f S1AP_E_RABSubjecttoDataForwardingList_print; +asn_constr_check_f S1AP_E_RABSubjecttoDataForwardingList_constraint; +ber_type_decoder_f S1AP_E_RABSubjecttoDataForwardingList_decode_ber; +der_type_encoder_f S1AP_E_RABSubjecttoDataForwardingList_encode_der; +xer_type_decoder_f S1AP_E_RABSubjecttoDataForwardingList_decode_xer; +xer_type_encoder_f S1AP_E_RABSubjecttoDataForwardingList_encode_xer; +oer_type_decoder_f S1AP_E_RABSubjecttoDataForwardingList_decode_oer; +oer_type_encoder_f S1AP_E_RABSubjecttoDataForwardingList_encode_oer; +per_type_decoder_f S1AP_E_RABSubjecttoDataForwardingList_decode_uper; +per_type_encoder_f S1AP_E_RABSubjecttoDataForwardingList_encode_uper; +per_type_decoder_f S1AP_E_RABSubjecttoDataForwardingList_decode_aper; +per_type_encoder_f S1AP_E_RABSubjecttoDataForwardingList_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABSubjecttoDataForwardingList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModInd.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModInd.c new file mode 100644 index 0000000000..83f75ce90c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModInd.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeModifiedItemBearerModInd.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifiedItemBearerModInd_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd, dL_GTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABToBeModifiedItemBearerModInd_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeModifiedItemBearerModInd_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-GTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifiedItemBearerModInd_specs_1 = { + sizeof(struct S1AP_E_RABToBeModifiedItemBearerModInd), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd, _asn_ctx), + asn_MAP_S1AP_E_RABToBeModifiedItemBearerModInd_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABToBeModifiedItemBearerModInd_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd = { + "E-RABToBeModifiedItemBearerModInd", + "E-RABToBeModifiedItemBearerModInd", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeModifiedItemBearerModInd_1, + 4, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeModifiedItemBearerModInd_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModInd.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModInd.h new file mode 100644 index 0000000000..3a70060826 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModInd.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeModifiedItemBearerModInd_H_ +#define _S1AP_E_RABToBeModifiedItemBearerModInd_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABToBeModifiedItemBearerModInd */ +typedef struct S1AP_E_RABToBeModifiedItemBearerModInd { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t dL_GTP_TEID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeModifiedItemBearerModInd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeModifiedItemBearerModInd_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModReq.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModReq.c new file mode 100644 index 0000000000..77c178d935 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModReq.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeModifiedItemBearerModReq.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifiedItemBearerModReq_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReq, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReq, e_RABLevelQoSParameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RABLevelQoSParameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABLevelQoSParameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReq, nAS_PDU), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_NAS_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nAS-PDU" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReq, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABToBeModifiedItemBearerModReq_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeModifiedItemBearerModReq_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RABLevelQoSParameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nAS-PDU */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifiedItemBearerModReq_specs_1 = { + sizeof(struct S1AP_E_RABToBeModifiedItemBearerModReq), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReq, _asn_ctx), + asn_MAP_S1AP_E_RABToBeModifiedItemBearerModReq_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABToBeModifiedItemBearerModReq_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq = { + "E-RABToBeModifiedItemBearerModReq", + "E-RABToBeModifiedItemBearerModReq", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeModifiedItemBearerModReq_1, + 4, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeModifiedItemBearerModReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModReq.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModReq.h new file mode 100644 index 0000000000..8db1ed8702 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedItemBearerModReq.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeModifiedItemBearerModReq_H_ +#define _S1AP_E_RABToBeModifiedItemBearerModReq_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_E-RABLevelQoSParameters.h" +#include "S1AP_NAS-PDU.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABToBeModifiedItemBearerModReq */ +typedef struct S1AP_E_RABToBeModifiedItemBearerModReq { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_E_RABLevelQoSParameters_t e_RABLevelQoSParameters; + S1AP_NAS_PDU_t nAS_PDU; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeModifiedItemBearerModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeModifiedItemBearerModReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModInd.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModInd.c new file mode 100644 index 0000000000..1322967e43 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModInd.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeModifiedListBearerModInd.h" + +int +S1AP_E_RABToBeModifiedListBearerModInd_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P6, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABToBeModifiedListBearerModInd_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABToBeModifiedListBearerModInd_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd = { + "E-RABToBeModifiedListBearerModInd", + "E-RABToBeModifiedListBearerModInd", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABToBeModifiedListBearerModInd_constr_1, &asn_PER_type_S1AP_E_RABToBeModifiedListBearerModInd_constr_1, S1AP_E_RABToBeModifiedListBearerModInd_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P6_13, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P6_specs_13 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModInd.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModInd.h new file mode 100644 index 0000000000..894c02df70 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModInd.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeModifiedListBearerModInd_H_ +#define _S1AP_E_RABToBeModifiedListBearerModInd_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABToBeModifiedListBearerModInd */ +typedef S1AP_E_RAB_IE_ContainerList_1142P6_t S1AP_E_RABToBeModifiedListBearerModInd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd; +asn_struct_free_f S1AP_E_RABToBeModifiedListBearerModInd_free; +asn_struct_print_f S1AP_E_RABToBeModifiedListBearerModInd_print; +asn_constr_check_f S1AP_E_RABToBeModifiedListBearerModInd_constraint; +ber_type_decoder_f S1AP_E_RABToBeModifiedListBearerModInd_decode_ber; +der_type_encoder_f S1AP_E_RABToBeModifiedListBearerModInd_encode_der; +xer_type_decoder_f S1AP_E_RABToBeModifiedListBearerModInd_decode_xer; +xer_type_encoder_f S1AP_E_RABToBeModifiedListBearerModInd_encode_xer; +oer_type_decoder_f S1AP_E_RABToBeModifiedListBearerModInd_decode_oer; +oer_type_encoder_f S1AP_E_RABToBeModifiedListBearerModInd_encode_oer; +per_type_decoder_f S1AP_E_RABToBeModifiedListBearerModInd_decode_uper; +per_type_encoder_f S1AP_E_RABToBeModifiedListBearerModInd_encode_uper; +per_type_decoder_f S1AP_E_RABToBeModifiedListBearerModInd_decode_aper; +per_type_encoder_f S1AP_E_RABToBeModifiedListBearerModInd_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeModifiedListBearerModInd_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModReq.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModReq.c new file mode 100644 index 0000000000..86ddf5896e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModReq.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeModifiedListBearerModReq.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABToBeModifiedListBearerModReq_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABToBeModifiedListBearerModReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifiedListBearerModReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABToBeModifiedListBearerModReq_specs_1 = { + sizeof(struct S1AP_E_RABToBeModifiedListBearerModReq), + offsetof(struct S1AP_E_RABToBeModifiedListBearerModReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq = { + "E-RABToBeModifiedListBearerModReq", + "E-RABToBeModifiedListBearerModReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABToBeModifiedListBearerModReq_constr_1, &asn_PER_type_S1AP_E_RABToBeModifiedListBearerModReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABToBeModifiedListBearerModReq_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABToBeModifiedListBearerModReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModReq.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModReq.h new file mode 100644 index 0000000000..d11f01b3dd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeModifiedListBearerModReq.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeModifiedListBearerModReq_H_ +#define _S1AP_E_RABToBeModifiedListBearerModReq_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABToBeModifiedListBearerModReq */ +typedef struct S1AP_E_RABToBeModifiedListBearerModReq { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeModifiedListBearerModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeModifiedListBearerModReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemBearerSUReq.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemBearerSUReq.c new file mode 100644 index 0000000000..18c493509b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemBearerSUReq.c @@ -0,0 +1,103 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSetupItemBearerSUReq.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemBearerSUReq_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReq, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReq, e_RABlevelQoSParameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RABLevelQoSParameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABlevelQoSParameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReq, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReq, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReq, nAS_PDU), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_NAS_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nAS-PDU" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReq, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABToBeSetupItemBearerSUReq_oms_1[] = { 5 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSetupItemBearerSUReq_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RABlevelQoSParameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* nAS-PDU */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemBearerSUReq_specs_1 = { + sizeof(struct S1AP_E_RABToBeSetupItemBearerSUReq), + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReq, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSetupItemBearerSUReq_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABToBeSetupItemBearerSUReq_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq = { + "E-RABToBeSetupItemBearerSUReq", + "E-RABToBeSetupItemBearerSUReq", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemBearerSUReq_1, + 6, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemBearerSUReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemBearerSUReq.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemBearerSUReq.h new file mode 100644 index 0000000000..eed354eb18 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemBearerSUReq.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSetupItemBearerSUReq_H_ +#define _S1AP_E_RABToBeSetupItemBearerSUReq_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_E-RABLevelQoSParameters.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include "S1AP_NAS-PDU.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABToBeSetupItemBearerSUReq */ +typedef struct S1AP_E_RABToBeSetupItemBearerSUReq { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_E_RABLevelQoSParameters_t e_RABlevelQoSParameters; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t gTP_TEID; + S1AP_NAS_PDU_t nAS_PDU; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupItemBearerSUReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSetupItemBearerSUReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.c new file mode 100644 index 0000000000..49eacbe726 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.c @@ -0,0 +1,103 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSetupItemCtxtSUReq.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemCtxtSUReq_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReq, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReq, e_RABlevelQoSParameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RABLevelQoSParameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABlevelQoSParameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReq, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReq, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReq, nAS_PDU), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_NAS_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nAS-PDU" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReq, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABToBeSetupItemCtxtSUReq_oms_1[] = { 4, 5 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSetupItemCtxtSUReq_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RABlevelQoSParameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* nAS-PDU */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemCtxtSUReq_specs_1 = { + sizeof(struct S1AP_E_RABToBeSetupItemCtxtSUReq), + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReq, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSetupItemCtxtSUReq_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABToBeSetupItemCtxtSUReq_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq = { + "E-RABToBeSetupItemCtxtSUReq", + "E-RABToBeSetupItemCtxtSUReq", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemCtxtSUReq_1, + 6, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemCtxtSUReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.h new file mode 100644 index 0000000000..6028797f00 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemCtxtSUReq.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSetupItemCtxtSUReq_H_ +#define _S1AP_E_RABToBeSetupItemCtxtSUReq_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_E-RABLevelQoSParameters.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include "S1AP_NAS-PDU.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABToBeSetupItemCtxtSUReq */ +typedef struct S1AP_E_RABToBeSetupItemCtxtSUReq { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_E_RABLevelQoSParameters_t e_RABlevelQoSParameters; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t gTP_TEID; + S1AP_NAS_PDU_t *nAS_PDU; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupItemCtxtSUReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSetupItemCtxtSUReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemHOReq.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemHOReq.c new file mode 100644 index 0000000000..d73b3d189e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemHOReq.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSetupItemHOReq.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemHOReq_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReq, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReq, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReq, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReq, e_RABlevelQosParameters), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RABLevelQoSParameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABlevelQosParameters" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABToBeSetupItemHOReq, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABToBeSetupItemHOReq_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupItemHOReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSetupItemHOReq_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e-RABlevelQosParameters */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemHOReq_specs_1 = { + sizeof(struct S1AP_E_RABToBeSetupItemHOReq), + offsetof(struct S1AP_E_RABToBeSetupItemHOReq, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSetupItemHOReq_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABToBeSetupItemHOReq_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemHOReq = { + "E-RABToBeSetupItemHOReq", + "E-RABToBeSetupItemHOReq", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSetupItemHOReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupItemHOReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReq_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemHOReq_1, + 5, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemHOReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemHOReq.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemHOReq.h new file mode 100644 index 0000000000..74994c3c79 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupItemHOReq.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSetupItemHOReq_H_ +#define _S1AP_E_RABToBeSetupItemHOReq_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include "S1AP_E-RABLevelQoSParameters.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABToBeSetupItemHOReq */ +typedef struct S1AP_E_RABToBeSetupItemHOReq { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t gTP_TEID; + S1AP_E_RABLevelQoSParameters_t e_RABlevelQosParameters; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupItemHOReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemHOReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSetupItemHOReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListBearerSUReq.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListBearerSUReq.c new file mode 100644 index 0000000000..a230c986a8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListBearerSUReq.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSetupListBearerSUReq.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABToBeSetupListBearerSUReq_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABToBeSetupListBearerSUReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupListBearerSUReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABToBeSetupListBearerSUReq_specs_1 = { + sizeof(struct S1AP_E_RABToBeSetupListBearerSUReq), + offsetof(struct S1AP_E_RABToBeSetupListBearerSUReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq = { + "E-RABToBeSetupListBearerSUReq", + "E-RABToBeSetupListBearerSUReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABToBeSetupListBearerSUReq_constr_1, &asn_PER_type_S1AP_E_RABToBeSetupListBearerSUReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABToBeSetupListBearerSUReq_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABToBeSetupListBearerSUReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListBearerSUReq.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListBearerSUReq.h new file mode 100644 index 0000000000..772fb729cf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListBearerSUReq.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSetupListBearerSUReq_H_ +#define _S1AP_E_RABToBeSetupListBearerSUReq_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABToBeSetupListBearerSUReq */ +typedef struct S1AP_E_RABToBeSetupListBearerSUReq { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupListBearerSUReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSetupListBearerSUReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.c new file mode 100644 index 0000000000..490128104e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSetupListCtxtSUReq.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABToBeSetupListCtxtSUReq_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABToBeSetupListCtxtSUReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupListCtxtSUReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_E_RABToBeSetupListCtxtSUReq_specs_1 = { + sizeof(struct S1AP_E_RABToBeSetupListCtxtSUReq), + offsetof(struct S1AP_E_RABToBeSetupListCtxtSUReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq = { + "E-RABToBeSetupListCtxtSUReq", + "E-RABToBeSetupListCtxtSUReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABToBeSetupListCtxtSUReq_constr_1, &asn_PER_type_S1AP_E_RABToBeSetupListCtxtSUReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_E_RABToBeSetupListCtxtSUReq_1, + 1, /* Single element */ + &asn_SPC_S1AP_E_RABToBeSetupListCtxtSUReq_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.h new file mode 100644 index 0000000000..613202dbbd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListCtxtSUReq.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSetupListCtxtSUReq_H_ +#define _S1AP_E_RABToBeSetupListCtxtSUReq_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_E-RABToBeSetupListCtxtSUReq */ +typedef struct S1AP_E_RABToBeSetupListCtxtSUReq { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupListCtxtSUReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSetupListCtxtSUReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListHOReq.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListHOReq.c new file mode 100644 index 0000000000..bc1fbd015e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListHOReq.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSetupListHOReq.h" + +int +S1AP_E_RABToBeSetupListHOReq_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P1, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABToBeSetupListHOReq_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABToBeSetupListHOReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupListHOReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupListHOReq = { + "E-RABToBeSetupListHOReq", + "E-RABToBeSetupListHOReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABToBeSetupListHOReq_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSetupListHOReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupListHOReq_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupListHOReq_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupListHOReq_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupListHOReq_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABToBeSetupListHOReq_constr_1, &asn_PER_type_S1AP_E_RABToBeSetupListHOReq_constr_1, S1AP_E_RABToBeSetupListHOReq_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P1_3, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P1_specs_3 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListHOReq.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListHOReq.h new file mode 100644 index 0000000000..b757e77ca2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSetupListHOReq.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSetupListHOReq_H_ +#define _S1AP_E_RABToBeSetupListHOReq_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABToBeSetupListHOReq */ +typedef S1AP_E_RAB_IE_ContainerList_1142P1_t S1AP_E_RABToBeSetupListHOReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupListHOReq; +asn_struct_free_f S1AP_E_RABToBeSetupListHOReq_free; +asn_struct_print_f S1AP_E_RABToBeSetupListHOReq_print; +asn_constr_check_f S1AP_E_RABToBeSetupListHOReq_constraint; +ber_type_decoder_f S1AP_E_RABToBeSetupListHOReq_decode_ber; +der_type_encoder_f S1AP_E_RABToBeSetupListHOReq_encode_der; +xer_type_decoder_f S1AP_E_RABToBeSetupListHOReq_decode_xer; +xer_type_encoder_f S1AP_E_RABToBeSetupListHOReq_encode_xer; +oer_type_decoder_f S1AP_E_RABToBeSetupListHOReq_decode_oer; +oer_type_encoder_f S1AP_E_RABToBeSetupListHOReq_encode_oer; +per_type_decoder_f S1AP_E_RABToBeSetupListHOReq_decode_uper; +per_type_encoder_f S1AP_E_RABToBeSetupListHOReq_encode_uper; +per_type_decoder_f S1AP_E_RABToBeSetupListHOReq_decode_aper; +per_type_encoder_f S1AP_E_RABToBeSetupListHOReq_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSetupListHOReq_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLItem.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLItem.c new file mode 100644 index 0000000000..f3724a5e22 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLItem.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSwitchedDLItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedDLItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItem, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItem, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABToBeSwitchedDLItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABToBeSwitchedDLItem_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSwitchedDLItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSwitchedDLItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedDLItem_specs_1 = { + sizeof(struct S1AP_E_RABToBeSwitchedDLItem), + offsetof(struct S1AP_E_RABToBeSwitchedDLItem, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSwitchedDLItem_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABToBeSwitchedDLItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedDLItem = { + "E-RABToBeSwitchedDLItem", + "E-RABToBeSwitchedDLItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSwitchedDLItem_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSwitchedDLItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSwitchedDLItem_1, + 4, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSwitchedDLItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLItem.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLItem.h new file mode 100644 index 0000000000..3784c2edb9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLItem.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSwitchedDLItem_H_ +#define _S1AP_E_RABToBeSwitchedDLItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABToBeSwitchedDLItem */ +typedef struct S1AP_E_RABToBeSwitchedDLItem { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t gTP_TEID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSwitchedDLItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedDLItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSwitchedDLItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLList.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLList.c new file mode 100644 index 0000000000..b181506e95 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLList.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSwitchedDLList.h" + +int +S1AP_E_RABToBeSwitchedDLList_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P4, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABToBeSwitchedDLList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABToBeSwitchedDLList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSwitchedDLList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedDLList = { + "E-RABToBeSwitchedDLList", + "E-RABToBeSwitchedDLList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABToBeSwitchedDLList_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSwitchedDLList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABToBeSwitchedDLList_constr_1, &asn_PER_type_S1AP_E_RABToBeSwitchedDLList_constr_1, S1AP_E_RABToBeSwitchedDLList_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P4_9, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P4_specs_9 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLList.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLList.h new file mode 100644 index 0000000000..da54b65119 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedDLList.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSwitchedDLList_H_ +#define _S1AP_E_RABToBeSwitchedDLList_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABToBeSwitchedDLList */ +typedef S1AP_E_RAB_IE_ContainerList_1142P4_t S1AP_E_RABToBeSwitchedDLList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedDLList; +asn_struct_free_f S1AP_E_RABToBeSwitchedDLList_free; +asn_struct_print_f S1AP_E_RABToBeSwitchedDLList_print; +asn_constr_check_f S1AP_E_RABToBeSwitchedDLList_constraint; +ber_type_decoder_f S1AP_E_RABToBeSwitchedDLList_decode_ber; +der_type_encoder_f S1AP_E_RABToBeSwitchedDLList_encode_der; +xer_type_decoder_f S1AP_E_RABToBeSwitchedDLList_decode_xer; +xer_type_encoder_f S1AP_E_RABToBeSwitchedDLList_encode_xer; +oer_type_decoder_f S1AP_E_RABToBeSwitchedDLList_decode_oer; +oer_type_encoder_f S1AP_E_RABToBeSwitchedDLList_encode_oer; +per_type_decoder_f S1AP_E_RABToBeSwitchedDLList_decode_uper; +per_type_encoder_f S1AP_E_RABToBeSwitchedDLList_encode_uper; +per_type_decoder_f S1AP_E_RABToBeSwitchedDLList_decode_aper; +per_type_encoder_f S1AP_E_RABToBeSwitchedDLList_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSwitchedDLList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULItem.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULItem.c new file mode 100644 index 0000000000..5b062bf3fc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULItem.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSwitchedULItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedULItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItem, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItem, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_E_RABToBeSwitchedULItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_E_RABToBeSwitchedULItem_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSwitchedULItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSwitchedULItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedULItem_specs_1 = { + sizeof(struct S1AP_E_RABToBeSwitchedULItem), + offsetof(struct S1AP_E_RABToBeSwitchedULItem, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSwitchedULItem_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_E_RABToBeSwitchedULItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedULItem = { + "E-RABToBeSwitchedULItem", + "E-RABToBeSwitchedULItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSwitchedULItem_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSwitchedULItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItem_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSwitchedULItem_1, + 4, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSwitchedULItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULItem.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULItem.h new file mode 100644 index 0000000000..a0d782afb2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULItem.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSwitchedULItem_H_ +#define _S1AP_E_RABToBeSwitchedULItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-ID.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_E-RABToBeSwitchedULItem */ +typedef struct S1AP_E_RABToBeSwitchedULItem { + S1AP_E_RAB_ID_t e_RAB_ID; + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t gTP_TEID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSwitchedULItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedULItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSwitchedULItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULList.c b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULList.c new file mode 100644 index 0000000000..98fe6d04bc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULList.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-RABToBeSwitchedULList.h" + +int +S1AP_E_RABToBeSwitchedULList_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 256)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_E_RAB_IE_ContainerList_1142P5, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_RABToBeSwitchedULList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_E_RABToBeSwitchedULList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSwitchedULList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedULList = { + "E-RABToBeSwitchedULList", + "E-RABToBeSwitchedULList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_E_RABToBeSwitchedULList_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSwitchedULList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULList_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_RABToBeSwitchedULList_constr_1, &asn_PER_type_S1AP_E_RABToBeSwitchedULList_constr_1, S1AP_E_RABToBeSwitchedULList_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P5_11, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P5_specs_11 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULList.h b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULList.h new file mode 100644 index 0000000000..1c4735f913 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-RABToBeSwitchedULList.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_RABToBeSwitchedULList_H_ +#define _S1AP_E_RABToBeSwitchedULList_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-RAB-IE-ContainerList.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-RABToBeSwitchedULList */ +typedef S1AP_E_RAB_IE_ContainerList_1142P5_t S1AP_E_RABToBeSwitchedULList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedULList; +asn_struct_free_f S1AP_E_RABToBeSwitchedULList_free; +asn_struct_print_f S1AP_E_RABToBeSwitchedULList_print; +asn_constr_check_f S1AP_E_RABToBeSwitchedULList_constraint; +ber_type_decoder_f S1AP_E_RABToBeSwitchedULList_decode_ber; +der_type_encoder_f S1AP_E_RABToBeSwitchedULList_encode_der; +xer_type_decoder_f S1AP_E_RABToBeSwitchedULList_decode_xer; +xer_type_encoder_f S1AP_E_RABToBeSwitchedULList_encode_xer; +oer_type_decoder_f S1AP_E_RABToBeSwitchedULList_decode_oer; +oer_type_encoder_f S1AP_E_RABToBeSwitchedULList_encode_oer; +per_type_decoder_f S1AP_E_RABToBeSwitchedULList_decode_uper; +per_type_encoder_f S1AP_E_RABToBeSwitchedULList_encode_uper; +per_type_decoder_f S1AP_E_RABToBeSwitchedULList_decode_aper; +per_type_encoder_f S1AP_E_RABToBeSwitchedULList_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_RABToBeSwitchedULList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.c b/lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.c new file mode 100644 index 0000000000..d47cb2b646 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_E-UTRAN-Trace-ID.h" + +int +S1AP_E_UTRAN_Trace_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_E_UTRAN_Trace_ID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +asn_per_constraints_t asn_PER_type_S1AP_E_UTRAN_Trace_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_UTRAN_Trace_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_UTRAN_Trace_ID = { + "E-UTRAN-Trace-ID", + "E-UTRAN-Trace-ID", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_E_UTRAN_Trace_ID_tags_1, + sizeof(asn_DEF_S1AP_E_UTRAN_Trace_ID_tags_1) + /sizeof(asn_DEF_S1AP_E_UTRAN_Trace_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_UTRAN_Trace_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_UTRAN_Trace_ID_tags_1) + /sizeof(asn_DEF_S1AP_E_UTRAN_Trace_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_E_UTRAN_Trace_ID_constr_1, &asn_PER_type_S1AP_E_UTRAN_Trace_ID_constr_1, S1AP_E_UTRAN_Trace_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.h b/lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.h new file mode 100644 index 0000000000..205dc73372 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_E-UTRAN-Trace-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_E_UTRAN_Trace_ID_H_ +#define _S1AP_E_UTRAN_Trace_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_E-UTRAN-Trace-ID */ +typedef OCTET_STRING_t S1AP_E_UTRAN_Trace_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_E_UTRAN_Trace_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_UTRAN_Trace_ID; +asn_struct_free_f S1AP_E_UTRAN_Trace_ID_free; +asn_struct_print_f S1AP_E_UTRAN_Trace_ID_print; +asn_constr_check_f S1AP_E_UTRAN_Trace_ID_constraint; +ber_type_decoder_f S1AP_E_UTRAN_Trace_ID_decode_ber; +der_type_encoder_f S1AP_E_UTRAN_Trace_ID_encode_der; +xer_type_decoder_f S1AP_E_UTRAN_Trace_ID_decode_xer; +xer_type_encoder_f S1AP_E_UTRAN_Trace_ID_encode_xer; +oer_type_decoder_f S1AP_E_UTRAN_Trace_ID_decode_oer; +oer_type_encoder_f S1AP_E_UTRAN_Trace_ID_encode_oer; +per_type_decoder_f S1AP_E_UTRAN_Trace_ID_decode_uper; +per_type_encoder_f S1AP_E_UTRAN_Trace_ID_encode_uper; +per_type_decoder_f S1AP_E_UTRAN_Trace_ID_decode_aper; +per_type_encoder_f S1AP_E_UTRAN_Trace_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_E_UTRAN_Trace_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EARFCN.c b/lib/s1ap3/asn1c/S1AP_EARFCN.c new file mode 100644 index 0000000000..0a2ba890c1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EARFCN.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EARFCN.h" + +int +S1AP_EARFCN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 262143)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_EARFCN_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_EARFCN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 18, -1, 0, 262143 } /* (0..262143,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EARFCN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EARFCN = { + "EARFCN", + "EARFCN", + &asn_OP_NativeInteger, + asn_DEF_S1AP_EARFCN_tags_1, + sizeof(asn_DEF_S1AP_EARFCN_tags_1) + /sizeof(asn_DEF_S1AP_EARFCN_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EARFCN_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EARFCN_tags_1) + /sizeof(asn_DEF_S1AP_EARFCN_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EARFCN_constr_1, &asn_PER_type_S1AP_EARFCN_constr_1, S1AP_EARFCN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EARFCN.h b/lib/s1ap3/asn1c/S1AP_EARFCN.h new file mode 100644 index 0000000000..a6dac5e47d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EARFCN.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EARFCN_H_ +#define _S1AP_EARFCN_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_EARFCN */ +typedef long S1AP_EARFCN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_EARFCN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EARFCN; +asn_struct_free_f S1AP_EARFCN_free; +asn_struct_print_f S1AP_EARFCN_print; +asn_constr_check_f S1AP_EARFCN_constraint; +ber_type_decoder_f S1AP_EARFCN_decode_ber; +der_type_encoder_f S1AP_EARFCN_encode_der; +xer_type_decoder_f S1AP_EARFCN_decode_xer; +xer_type_encoder_f S1AP_EARFCN_encode_xer; +oer_type_decoder_f S1AP_EARFCN_decode_oer; +oer_type_encoder_f S1AP_EARFCN_encode_oer; +per_type_decoder_f S1AP_EARFCN_decode_uper; +per_type_encoder_f S1AP_EARFCN_encode_uper; +per_type_decoder_f S1AP_EARFCN_decode_aper; +per_type_encoder_f S1AP_EARFCN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EARFCN_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ECGI-List.c b/lib/s1ap3/asn1c/S1AP_ECGI-List.c new file mode 100644 index 0000000000..5e5dd45849 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ECGI-List.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ECGI-List.h" + +#include "S1AP_EUTRAN-CGI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ECGI_List_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ECGI_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ECGI_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ECGI_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ECGI_List_specs_1 = { + sizeof(struct S1AP_ECGI_List), + offsetof(struct S1AP_ECGI_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ECGI_List = { + "ECGI-List", + "ECGI-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ECGI_List_tags_1, + sizeof(asn_DEF_S1AP_ECGI_List_tags_1) + /sizeof(asn_DEF_S1AP_ECGI_List_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ECGI_List_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ECGI_List_tags_1) + /sizeof(asn_DEF_S1AP_ECGI_List_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ECGI_List_constr_1, &asn_PER_type_S1AP_ECGI_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ECGI_List_1, + 1, /* Single element */ + &asn_SPC_S1AP_ECGI_List_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ECGI-List.h b/lib/s1ap3/asn1c/S1AP_ECGI-List.h new file mode 100644 index 0000000000..372064742d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ECGI-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ECGI_List_H_ +#define _S1AP_ECGI_List_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_EUTRAN_CGI; + +/* S1AP_ECGI-List */ +typedef struct S1AP_ECGI_List { + A_SEQUENCE_OF(struct S1AP_EUTRAN_CGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ECGI_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ECGI_List; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ECGI_List_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ECGI_List_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ECGI_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ECGI_List_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ECGIList.c b/lib/s1ap3/asn1c/S1AP_ECGIList.c new file mode 100644 index 0000000000..d292c47c52 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ECGIList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ECGIList.h" + +#include "S1AP_EUTRAN-CGI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ECGIList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ECGIList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ECGIList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ECGIList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ECGIList_specs_1 = { + sizeof(struct S1AP_ECGIList), + offsetof(struct S1AP_ECGIList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ECGIList = { + "ECGIList", + "ECGIList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ECGIList_tags_1, + sizeof(asn_DEF_S1AP_ECGIList_tags_1) + /sizeof(asn_DEF_S1AP_ECGIList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ECGIList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ECGIList_tags_1) + /sizeof(asn_DEF_S1AP_ECGIList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ECGIList_constr_1, &asn_PER_type_S1AP_ECGIList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ECGIList_1, + 1, /* Single element */ + &asn_SPC_S1AP_ECGIList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ECGIList.h b/lib/s1ap3/asn1c/S1AP_ECGIList.h new file mode 100644 index 0000000000..8ae0f21a03 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ECGIList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ECGIList_H_ +#define _S1AP_ECGIList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_EUTRAN_CGI; + +/* S1AP_ECGIList */ +typedef struct S1AP_ECGIList { + A_SEQUENCE_OF(struct S1AP_EUTRAN_CGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ECGIList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ECGIList; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ECGIList_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ECGIList_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ECGIList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ECGIList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ECGIListForRestart.c b/lib/s1ap3/asn1c/S1AP_ECGIListForRestart.c new file mode 100644 index 0000000000..bcb6b3b160 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ECGIListForRestart.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ECGIListForRestart.h" + +#include "S1AP_EUTRAN-CGI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ECGIListForRestart_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_ECGIListForRestart_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_ECGIListForRestart_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ECGIListForRestart_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_ECGIListForRestart_specs_1 = { + sizeof(struct S1AP_ECGIListForRestart), + offsetof(struct S1AP_ECGIListForRestart, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ECGIListForRestart = { + "ECGIListForRestart", + "ECGIListForRestart", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ECGIListForRestart_tags_1, + sizeof(asn_DEF_S1AP_ECGIListForRestart_tags_1) + /sizeof(asn_DEF_S1AP_ECGIListForRestart_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ECGIListForRestart_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ECGIListForRestart_tags_1) + /sizeof(asn_DEF_S1AP_ECGIListForRestart_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ECGIListForRestart_constr_1, &asn_PER_type_S1AP_ECGIListForRestart_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ECGIListForRestart_1, + 1, /* Single element */ + &asn_SPC_S1AP_ECGIListForRestart_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ECGIListForRestart.h b/lib/s1ap3/asn1c/S1AP_ECGIListForRestart.h new file mode 100644 index 0000000000..65988a0cbf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ECGIListForRestart.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ECGIListForRestart_H_ +#define _S1AP_ECGIListForRestart_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_EUTRAN_CGI; + +/* S1AP_ECGIListForRestart */ +typedef struct S1AP_ECGIListForRestart { + A_SEQUENCE_OF(struct S1AP_EUTRAN_CGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ECGIListForRestart_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ECGIListForRestart; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ECGIListForRestart_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENB-ID.c b/lib/s1ap3/asn1c/S1AP_ENB-ID.c new file mode 100644 index 0000000000..0d5cf5d213 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENB-ID.c @@ -0,0 +1,241 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENB-ID.h" + +static int +memb_S1AP_macroENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_homeENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_short_macroENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_long_macroENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_macroENB_ID_constr_2 CC_NOTUSED = { + { 0, 0 }, + 20 /* (SIZE(20..20)) */}; +static asn_per_constraints_t asn_PER_memb_S1AP_macroENB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_homeENB_ID_constr_3 CC_NOTUSED = { + { 0, 0 }, + 28 /* (SIZE(28..28)) */}; +static asn_per_constraints_t asn_PER_memb_S1AP_homeENB_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_short_macroENB_ID_constr_5 CC_NOTUSED = { + { 0, 0 }, + 18 /* (SIZE(18..18)) */}; +static asn_per_constraints_t asn_PER_memb_S1AP_short_macroENB_ID_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_long_macroENB_ID_constr_6 CC_NOTUSED = { + { 0, 0 }, + 21 /* (SIZE(21..21)) */}; +static asn_per_constraints_t asn_PER_memb_S1AP_long_macroENB_ID_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ENB_ID_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ENB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENB_ID, choice.macroENB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { &asn_OER_memb_S1AP_macroENB_ID_constr_2, &asn_PER_memb_S1AP_macroENB_ID_constr_2, memb_S1AP_macroENB_ID_constraint_1 }, + 0, 0, /* No default value */ + "macroENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENB_ID, choice.homeENB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { &asn_OER_memb_S1AP_homeENB_ID_constr_3, &asn_PER_memb_S1AP_homeENB_ID_constr_3, memb_S1AP_homeENB_ID_constraint_1 }, + 0, 0, /* No default value */ + "homeENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENB_ID, choice.short_macroENB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { &asn_OER_memb_S1AP_short_macroENB_ID_constr_5, &asn_PER_memb_S1AP_short_macroENB_ID_constr_5, memb_S1AP_short_macroENB_ID_constraint_1 }, + 0, 0, /* No default value */ + "short-macroENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENB_ID, choice.long_macroENB_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { &asn_OER_memb_S1AP_long_macroENB_ID_constr_6, &asn_PER_memb_S1AP_long_macroENB_ID_constr_6, memb_S1AP_long_macroENB_ID_constraint_1 }, + 0, 0, /* No default value */ + "long-macroENB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macroENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* homeENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-macroENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-macroENB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_ENB_ID_specs_1 = { + sizeof(struct S1AP_ENB_ID), + offsetof(struct S1AP_ENB_ID, _asn_ctx), + offsetof(struct S1AP_ENB_ID, present), + sizeof(((struct S1AP_ENB_ID *)0)->present), + asn_MAP_S1AP_ENB_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENB_ID = { + "ENB-ID", + "ENB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_ENB_ID_constr_1, &asn_PER_type_S1AP_ENB_ID_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_ENB_ID_1, + 4, /* Elements count */ + &asn_SPC_S1AP_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENB-ID.h b/lib/s1ap3/asn1c/S1AP_ENB-ID.h new file mode 100644 index 0000000000..d1d3cc0f92 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENB-ID.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENB_ID_H_ +#define _S1AP_ENB_ID_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ENB_ID_PR { + ENB_ID_PR_NOTHING, /* No components present */ + ENB_ID_PR_macroENB_ID, + ENB_ID_PR_homeENB_ID, + /* Extensions may appear below */ + ENB_ID_PR_short_macroENB_ID, + ENB_ID_PR_long_macroENB_ID +} S1AP_ENB_ID_PR; + +/* S1AP_ENB-ID */ +typedef struct S1AP_ENB_ID { + S1AP_ENB_ID_PR present; + union S1AP_ENB_ID_u { + BIT_STRING_t macroENB_ID; + BIT_STRING_t homeENB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + BIT_STRING_t short_macroENB_ID; + BIT_STRING_t long_macroENB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENB_ID; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_ENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENB_ID_1[4]; +extern asn_per_constraints_t asn_PER_type_S1AP_ENB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENB_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENB-StatusTransfer-TransparentContainer.c b/lib/s1ap3/asn1c/S1AP_ENB-StatusTransfer-TransparentContainer.c new file mode 100644 index 0000000000..18d225bd4d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENB-StatusTransfer-TransparentContainer.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENB-StatusTransfer-TransparentContainer.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_ENB_StatusTransfer_TransparentContainer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENB_StatusTransfer_TransparentContainer, bearers_SubjectToStatusTransferList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Bearers_SubjectToStatusTransferList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "bearers-SubjectToStatusTransferList" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ENB_StatusTransfer_TransparentContainer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P48, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ENB_StatusTransfer_TransparentContainer_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENB_StatusTransfer_TransparentContainer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bearers-SubjectToStatusTransferList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENB_StatusTransfer_TransparentContainer_specs_1 = { + sizeof(struct S1AP_ENB_StatusTransfer_TransparentContainer), + offsetof(struct S1AP_ENB_StatusTransfer_TransparentContainer, _asn_ctx), + asn_MAP_S1AP_ENB_StatusTransfer_TransparentContainer_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_ENB_StatusTransfer_TransparentContainer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer = { + "ENB-StatusTransfer-TransparentContainer", + "ENB-StatusTransfer-TransparentContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_tags_1, + sizeof(asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENB_StatusTransfer_TransparentContainer_1, + 2, /* Elements count */ + &asn_SPC_S1AP_ENB_StatusTransfer_TransparentContainer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENB-StatusTransfer-TransparentContainer.h b/lib/s1ap3/asn1c/S1AP_ENB-StatusTransfer-TransparentContainer.h new file mode 100644 index 0000000000..6a92cfcd6b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENB-StatusTransfer-TransparentContainer.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENB_StatusTransfer_TransparentContainer_H_ +#define _S1AP_ENB_StatusTransfer_TransparentContainer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_Bearers-SubjectToStatusTransferList.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ENB-StatusTransfer-TransparentContainer */ +typedef struct S1AP_ENB_StatusTransfer_TransparentContainer { + S1AP_Bearers_SubjectToStatusTransferList_t bearers_SubjectToStatusTransferList; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENB_StatusTransfer_TransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENB_StatusTransfer_TransparentContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.c b/lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.c new file mode 100644 index 0000000000..e1748e4b64 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENB-UE-S1AP-ID.h" + +int +S1AP_ENB_UE_S1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 16777215)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ENB_UE_S1AP_ID_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..16777215) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ENB_UE_S1AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 24, -1, 0, 16777215 } /* (0..16777215) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENB_UE_S1AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENB_UE_S1AP_ID = { + "ENB-UE-S1AP-ID", + "ENB-UE-S1AP-ID", + &asn_OP_NativeInteger, + asn_DEF_S1AP_ENB_UE_S1AP_ID_tags_1, + sizeof(asn_DEF_S1AP_ENB_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_S1AP_ENB_UE_S1AP_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENB_UE_S1AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENB_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_S1AP_ENB_UE_S1AP_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ENB_UE_S1AP_ID_constr_1, &asn_PER_type_S1AP_ENB_UE_S1AP_ID_constr_1, S1AP_ENB_UE_S1AP_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.h b/lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.h new file mode 100644 index 0000000000..f4574e61e9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENB-UE-S1AP-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENB_UE_S1AP_ID_H_ +#define _S1AP_ENB_UE_S1AP_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENB-UE-S1AP-ID */ +typedef long S1AP_ENB_UE_S1AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ENB_UE_S1AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENB_UE_S1AP_ID; +asn_struct_free_f S1AP_ENB_UE_S1AP_ID_free; +asn_struct_print_f S1AP_ENB_UE_S1AP_ID_print; +asn_constr_check_f S1AP_ENB_UE_S1AP_ID_constraint; +ber_type_decoder_f S1AP_ENB_UE_S1AP_ID_decode_ber; +der_type_encoder_f S1AP_ENB_UE_S1AP_ID_encode_der; +xer_type_decoder_f S1AP_ENB_UE_S1AP_ID_decode_xer; +xer_type_encoder_f S1AP_ENB_UE_S1AP_ID_encode_xer; +oer_type_decoder_f S1AP_ENB_UE_S1AP_ID_decode_oer; +oer_type_encoder_f S1AP_ENB_UE_S1AP_ID_encode_oer; +per_type_decoder_f S1AP_ENB_UE_S1AP_ID_decode_uper; +per_type_encoder_f S1AP_ENB_UE_S1AP_ID_encode_uper; +per_type_decoder_f S1AP_ENB_UE_S1AP_ID_decode_aper; +per_type_encoder_f S1AP_ENB_UE_S1AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENB_UE_S1AP_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBCPRelocationIndication.c b/lib/s1ap3/asn1c/S1AP_ENBCPRelocationIndication.c new file mode 100644 index 0000000000..11d02d2eed --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBCPRelocationIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBCPRelocationIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_ENBCPRelocationIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBCPRelocationIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P89, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBCPRelocationIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBCPRelocationIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBCPRelocationIndication_specs_1 = { + sizeof(struct S1AP_ENBCPRelocationIndication), + offsetof(struct S1AP_ENBCPRelocationIndication, _asn_ctx), + asn_MAP_S1AP_ENBCPRelocationIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBCPRelocationIndication = { + "ENBCPRelocationIndication", + "ENBCPRelocationIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBCPRelocationIndication_tags_1, + sizeof(asn_DEF_S1AP_ENBCPRelocationIndication_tags_1) + /sizeof(asn_DEF_S1AP_ENBCPRelocationIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBCPRelocationIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBCPRelocationIndication_tags_1) + /sizeof(asn_DEF_S1AP_ENBCPRelocationIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBCPRelocationIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ENBCPRelocationIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBCPRelocationIndication.h b/lib/s1ap3/asn1c/S1AP_ENBCPRelocationIndication.h new file mode 100644 index 0000000000..56244e9478 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBCPRelocationIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBCPRelocationIndication_H_ +#define _S1AP_ENBCPRelocationIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBCPRelocationIndication */ +typedef struct S1AP_ENBCPRelocationIndication { + S1AP_ProtocolIE_Container_6551P89_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBCPRelocationIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBCPRelocationIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBCPRelocationIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBCPRelocationIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBCPRelocationIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBConfigurationTransfer.c b/lib/s1ap3/asn1c/S1AP_ENBConfigurationTransfer.c new file mode 100644 index 0000000000..df2b40b7e4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBConfigurationTransfer.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBConfigurationTransfer.h" + +asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P67, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBConfigurationTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBConfigurationTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationTransfer_specs_1 = { + sizeof(struct S1AP_ENBConfigurationTransfer), + offsetof(struct S1AP_ENBConfigurationTransfer, _asn_ctx), + asn_MAP_S1AP_ENBConfigurationTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationTransfer = { + "ENBConfigurationTransfer", + "ENBConfigurationTransfer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBConfigurationTransfer_tags_1, + sizeof(asn_DEF_S1AP_ENBConfigurationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_ENBConfigurationTransfer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBConfigurationTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBConfigurationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_ENBConfigurationTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBConfigurationTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ENBConfigurationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBConfigurationTransfer.h b/lib/s1ap3/asn1c/S1AP_ENBConfigurationTransfer.h new file mode 100644 index 0000000000..3b26a0d913 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBConfigurationTransfer.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBConfigurationTransfer_H_ +#define _S1AP_ENBConfigurationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBConfigurationTransfer */ +typedef struct S1AP_ENBConfigurationTransfer { + S1AP_ProtocolIE_Container_6551P67_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBConfigurationTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationTransfer; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationTransfer_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationTransfer_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBConfigurationTransfer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.c b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.c new file mode 100644 index 0000000000..0d72f9a18d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBConfigurationUpdate.h" + +asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P43, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBConfigurationUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBConfigurationUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdate_specs_1 = { + sizeof(struct S1AP_ENBConfigurationUpdate), + offsetof(struct S1AP_ENBConfigurationUpdate, _asn_ctx), + asn_MAP_S1AP_ENBConfigurationUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdate = { + "ENBConfigurationUpdate", + "ENBConfigurationUpdate", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBConfigurationUpdate_tags_1, + sizeof(asn_DEF_S1AP_ENBConfigurationUpdate_tags_1) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdate_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBConfigurationUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBConfigurationUpdate_tags_1) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBConfigurationUpdate_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ENBConfigurationUpdate_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.h b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.h new file mode 100644 index 0000000000..5188dff76f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBConfigurationUpdate_H_ +#define _S1AP_ENBConfigurationUpdate_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBConfigurationUpdate */ +typedef struct S1AP_ENBConfigurationUpdate { + S1AP_ProtocolIE_Container_6551P43_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBConfigurationUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBConfigurationUpdate_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateAcknowledge.c b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateAcknowledge.c new file mode 100644 index 0000000000..8f03401ae2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateAcknowledge.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBConfigurationUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P44, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBConfigurationUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateAcknowledge_specs_1 = { + sizeof(struct S1AP_ENBConfigurationUpdateAcknowledge), + offsetof(struct S1AP_ENBConfigurationUpdateAcknowledge, _asn_ctx), + asn_MAP_S1AP_ENBConfigurationUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge = { + "ENBConfigurationUpdateAcknowledge", + "ENBConfigurationUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge_tags_1, + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBConfigurationUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ENBConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateAcknowledge.h b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateAcknowledge.h new file mode 100644 index 0000000000..c27923c345 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBConfigurationUpdateAcknowledge_H_ +#define _S1AP_ENBConfigurationUpdateAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBConfigurationUpdateAcknowledge */ +typedef struct S1AP_ENBConfigurationUpdateAcknowledge { + S1AP_ProtocolIE_Container_6551P44_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBConfigurationUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBConfigurationUpdateAcknowledge_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateFailure.c b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateFailure.c new file mode 100644 index 0000000000..2d644cfe47 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBConfigurationUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P45, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBConfigurationUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBConfigurationUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateFailure_specs_1 = { + sizeof(struct S1AP_ENBConfigurationUpdateFailure), + offsetof(struct S1AP_ENBConfigurationUpdateFailure, _asn_ctx), + asn_MAP_S1AP_ENBConfigurationUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateFailure = { + "ENBConfigurationUpdateFailure", + "ENBConfigurationUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBConfigurationUpdateFailure_tags_1, + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBConfigurationUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBConfigurationUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ENBConfigurationUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateFailure.h b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateFailure.h new file mode 100644 index 0000000000..83dfc77f13 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBConfigurationUpdateFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBConfigurationUpdateFailure_H_ +#define _S1AP_ENBConfigurationUpdateFailure_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBConfigurationUpdateFailure */ +typedef struct S1AP_ENBConfigurationUpdateFailure { + S1AP_ProtocolIE_Container_6551P45_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBConfigurationUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBConfigurationUpdateFailure_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBDirectInformationTransfer.c b/lib/s1ap3/asn1c/S1AP_ENBDirectInformationTransfer.c new file mode 100644 index 0000000000..d17b1e1862 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBDirectInformationTransfer.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBDirectInformationTransfer.h" + +asn_TYPE_member_t asn_MBR_S1AP_ENBDirectInformationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBDirectInformationTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P65, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBDirectInformationTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBDirectInformationTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBDirectInformationTransfer_specs_1 = { + sizeof(struct S1AP_ENBDirectInformationTransfer), + offsetof(struct S1AP_ENBDirectInformationTransfer, _asn_ctx), + asn_MAP_S1AP_ENBDirectInformationTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBDirectInformationTransfer = { + "ENBDirectInformationTransfer", + "ENBDirectInformationTransfer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBDirectInformationTransfer_tags_1, + sizeof(asn_DEF_S1AP_ENBDirectInformationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_ENBDirectInformationTransfer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBDirectInformationTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBDirectInformationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_ENBDirectInformationTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBDirectInformationTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ENBDirectInformationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBDirectInformationTransfer.h b/lib/s1ap3/asn1c/S1AP_ENBDirectInformationTransfer.h new file mode 100644 index 0000000000..6c4eb5260c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBDirectInformationTransfer.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBDirectInformationTransfer_H_ +#define _S1AP_ENBDirectInformationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBDirectInformationTransfer */ +typedef struct S1AP_ENBDirectInformationTransfer { + S1AP_ProtocolIE_Container_6551P65_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBDirectInformationTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBDirectInformationTransfer; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBDirectInformationTransfer_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBDirectInformationTransfer_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBDirectInformationTransfer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBIndirectX2TransportLayerAddresses.c b/lib/s1ap3/asn1c/S1AP_ENBIndirectX2TransportLayerAddresses.c new file mode 100644 index 0000000000..0172fb057f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBIndirectX2TransportLayerAddresses.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBIndirectX2TransportLayerAddresses.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_ENBIndirectX2TransportLayerAddresses_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..2)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_ENBIndirectX2TransportLayerAddresses_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 1, 1, 1, 2 } /* (SIZE(1..2)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_ENBIndirectX2TransportLayerAddresses_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_ENBIndirectX2TransportLayerAddresses_specs_1 = { + sizeof(struct S1AP_ENBIndirectX2TransportLayerAddresses), + offsetof(struct S1AP_ENBIndirectX2TransportLayerAddresses, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses = { + "ENBIndirectX2TransportLayerAddresses", + "ENBIndirectX2TransportLayerAddresses", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses_tags_1, + sizeof(asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses_tags_1) + /sizeof(asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses_tags_1) + /sizeof(asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ENBIndirectX2TransportLayerAddresses_constr_1, &asn_PER_type_S1AP_ENBIndirectX2TransportLayerAddresses_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ENBIndirectX2TransportLayerAddresses_1, + 1, /* Single element */ + &asn_SPC_S1AP_ENBIndirectX2TransportLayerAddresses_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBIndirectX2TransportLayerAddresses.h b/lib/s1ap3/asn1c/S1AP_ENBIndirectX2TransportLayerAddresses.h new file mode 100644 index 0000000000..3b48a76717 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBIndirectX2TransportLayerAddresses.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBIndirectX2TransportLayerAddresses_H_ +#define _S1AP_ENBIndirectX2TransportLayerAddresses_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TransportLayerAddress.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBIndirectX2TransportLayerAddresses */ +typedef struct S1AP_ENBIndirectX2TransportLayerAddresses { + A_SEQUENCE_OF(S1AP_TransportLayerAddress_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBIndirectX2TransportLayerAddresses_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBIndirectX2TransportLayerAddresses_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.c b/lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.c new file mode 100644 index 0000000000..4114669337 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBStatusTransfer.h" + +asn_TYPE_member_t asn_MBR_S1AP_ENBStatusTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBStatusTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P52, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBStatusTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBStatusTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBStatusTransfer_specs_1 = { + sizeof(struct S1AP_ENBStatusTransfer), + offsetof(struct S1AP_ENBStatusTransfer, _asn_ctx), + asn_MAP_S1AP_ENBStatusTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBStatusTransfer = { + "ENBStatusTransfer", + "ENBStatusTransfer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBStatusTransfer_tags_1, + sizeof(asn_DEF_S1AP_ENBStatusTransfer_tags_1) + /sizeof(asn_DEF_S1AP_ENBStatusTransfer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBStatusTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBStatusTransfer_tags_1) + /sizeof(asn_DEF_S1AP_ENBStatusTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBStatusTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ENBStatusTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.h b/lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.h new file mode 100644 index 0000000000..b603ab361a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBStatusTransfer.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBStatusTransfer_H_ +#define _S1AP_ENBStatusTransfer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBStatusTransfer */ +typedef struct S1AP_ENBStatusTransfer { + S1AP_ProtocolIE_Container_6551P52_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBStatusTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBStatusTransfer; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBStatusTransfer_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBStatusTransfer_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBStatusTransfer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.c b/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.c new file mode 100644 index 0000000000..122f8f27f8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBX2ExtTLA.h" + +#include "S1AP_ENBX2GTPTLAs.h" +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_ENBX2ExtTLA_1[] = { + { ATF_POINTER, 3, offsetof(struct S1AP_ENBX2ExtTLA, iPsecTLA), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iPsecTLA" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_ENBX2ExtTLA, gTPTLAa), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ENBX2GTPTLAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTPTLAa" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ENBX2ExtTLA, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P118, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ENBX2ExtTLA_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBX2ExtTLA_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBX2ExtTLA_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iPsecTLA */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gTPTLAa */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBX2ExtTLA_specs_1 = { + sizeof(struct S1AP_ENBX2ExtTLA), + offsetof(struct S1AP_ENBX2ExtTLA, _asn_ctx), + asn_MAP_S1AP_ENBX2ExtTLA_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_ENBX2ExtTLA_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2ExtTLA = { + "ENBX2ExtTLA", + "ENBX2ExtTLA", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBX2ExtTLA_tags_1, + sizeof(asn_DEF_S1AP_ENBX2ExtTLA_tags_1) + /sizeof(asn_DEF_S1AP_ENBX2ExtTLA_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBX2ExtTLA_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBX2ExtTLA_tags_1) + /sizeof(asn_DEF_S1AP_ENBX2ExtTLA_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBX2ExtTLA_1, + 3, /* Elements count */ + &asn_SPC_S1AP_ENBX2ExtTLA_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.h b/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.h new file mode 100644 index 0000000000..7b432db419 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLA.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBX2ExtTLA_H_ +#define _S1AP_ENBX2ExtTLA_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TransportLayerAddress.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ENBX2GTPTLAs; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ENBX2ExtTLA */ +typedef struct S1AP_ENBX2ExtTLA { + S1AP_TransportLayerAddress_t *iPsecTLA; /* OPTIONAL */ + struct S1AP_ENBX2GTPTLAs *gTPTLAa; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBX2ExtTLA_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2ExtTLA; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBX2ExtTLA_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBX2ExtTLA_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBX2ExtTLA_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.c b/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.c new file mode 100644 index 0000000000..711ea1e2f5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBX2ExtTLAs.h" + +#include "S1AP_ENBX2ExtTLA.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ENBX2ExtTLAs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_ENBX2ExtTLAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_ENBX2ExtTLAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBX2ExtTLA, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBX2ExtTLAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_ENBX2ExtTLAs_specs_1 = { + sizeof(struct S1AP_ENBX2ExtTLAs), + offsetof(struct S1AP_ENBX2ExtTLAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2ExtTLAs = { + "ENBX2ExtTLAs", + "ENBX2ExtTLAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ENBX2ExtTLAs_tags_1, + sizeof(asn_DEF_S1AP_ENBX2ExtTLAs_tags_1) + /sizeof(asn_DEF_S1AP_ENBX2ExtTLAs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBX2ExtTLAs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBX2ExtTLAs_tags_1) + /sizeof(asn_DEF_S1AP_ENBX2ExtTLAs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ENBX2ExtTLAs_constr_1, &asn_PER_type_S1AP_ENBX2ExtTLAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ENBX2ExtTLAs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ENBX2ExtTLAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.h b/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.h new file mode 100644 index 0000000000..34204b1326 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBX2ExtTLAs.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBX2ExtTLAs_H_ +#define _S1AP_ENBX2ExtTLAs_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ENBX2ExtTLA; + +/* S1AP_ENBX2ExtTLAs */ +typedef struct S1AP_ENBX2ExtTLAs { + A_SEQUENCE_OF(struct S1AP_ENBX2ExtTLA) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBX2ExtTLAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2ExtTLAs; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBX2ExtTLAs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.c b/lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.c new file mode 100644 index 0000000000..fef6b8d158 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBX2GTPTLAs.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_ENBX2GTPTLAs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ENBX2GTPTLAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ENBX2GTPTLAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBX2GTPTLAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ENBX2GTPTLAs_specs_1 = { + sizeof(struct S1AP_ENBX2GTPTLAs), + offsetof(struct S1AP_ENBX2GTPTLAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2GTPTLAs = { + "ENBX2GTPTLAs", + "ENBX2GTPTLAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ENBX2GTPTLAs_tags_1, + sizeof(asn_DEF_S1AP_ENBX2GTPTLAs_tags_1) + /sizeof(asn_DEF_S1AP_ENBX2GTPTLAs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBX2GTPTLAs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBX2GTPTLAs_tags_1) + /sizeof(asn_DEF_S1AP_ENBX2GTPTLAs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ENBX2GTPTLAs_constr_1, &asn_PER_type_S1AP_ENBX2GTPTLAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ENBX2GTPTLAs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ENBX2GTPTLAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.h b/lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.h new file mode 100644 index 0000000000..2075e9f399 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBX2GTPTLAs.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBX2GTPTLAs_H_ +#define _S1AP_ENBX2GTPTLAs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TransportLayerAddress.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBX2GTPTLAs */ +typedef struct S1AP_ENBX2GTPTLAs { + A_SEQUENCE_OF(S1AP_TransportLayerAddress_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBX2GTPTLAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2GTPTLAs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ENBX2GTPTLAs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBX2GTPTLAs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ENBX2GTPTLAs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBX2GTPTLAs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBX2TLAs.c b/lib/s1ap3/asn1c/S1AP_ENBX2TLAs.c new file mode 100644 index 0000000000..1ff5eaca42 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBX2TLAs.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBX2TLAs.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_ENBX2TLAs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..2)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ENBX2TLAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 1, 1, 1, 2 } /* (SIZE(1..2)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ENBX2TLAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBX2TLAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ENBX2TLAs_specs_1 = { + sizeof(struct S1AP_ENBX2TLAs), + offsetof(struct S1AP_ENBX2TLAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2TLAs = { + "ENBX2TLAs", + "ENBX2TLAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ENBX2TLAs_tags_1, + sizeof(asn_DEF_S1AP_ENBX2TLAs_tags_1) + /sizeof(asn_DEF_S1AP_ENBX2TLAs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBX2TLAs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBX2TLAs_tags_1) + /sizeof(asn_DEF_S1AP_ENBX2TLAs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ENBX2TLAs_constr_1, &asn_PER_type_S1AP_ENBX2TLAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ENBX2TLAs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ENBX2TLAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBX2TLAs.h b/lib/s1ap3/asn1c/S1AP_ENBX2TLAs.h new file mode 100644 index 0000000000..73fbe84614 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBX2TLAs.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBX2TLAs_H_ +#define _S1AP_ENBX2TLAs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TransportLayerAddress.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBX2TLAs */ +typedef struct S1AP_ENBX2TLAs { + A_SEQUENCE_OF(S1AP_TransportLayerAddress_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBX2TLAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2TLAs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ENBX2TLAs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBX2TLAs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ENBX2TLAs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBX2TLAs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ENBname.c b/lib/s1ap3/asn1c/S1AP_ENBname.c new file mode 100644 index 0000000000..e20fa6991a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBname.c @@ -0,0 +1,109 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ENBname.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_1[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +S1AP_ENBname_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 150) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_S1AP_ENBname_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_S1AP_ENBname_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using PrintableString, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ENBname_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_ENBname_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_S1AP_ENBname_1_v2c, /* Value to PER code map */ + asn_PER_MAP_S1AP_ENBname_1_c2v /* PER code to value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBname_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBname = { + "ENBname", + "ENBname", + &asn_OP_PrintableString, + asn_DEF_S1AP_ENBname_tags_1, + sizeof(asn_DEF_S1AP_ENBname_tags_1) + /sizeof(asn_DEF_S1AP_ENBname_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ENBname_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBname_tags_1) + /sizeof(asn_DEF_S1AP_ENBname_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ENBname_constr_1, &asn_PER_type_S1AP_ENBname_constr_1, S1AP_ENBname_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ENBname.h b/lib/s1ap3/asn1c/S1AP_ENBname.h new file mode 100644 index 0000000000..a9073c956f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ENBname.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ENBname_H_ +#define _S1AP_ENBname_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ENBname */ +typedef PrintableString_t S1AP_ENBname_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBname; +asn_struct_free_f S1AP_ENBname_free; +asn_struct_print_f S1AP_ENBname_print; +asn_constr_check_f S1AP_ENBname_constraint; +ber_type_decoder_f S1AP_ENBname_decode_ber; +der_type_encoder_f S1AP_ENBname_encode_der; +xer_type_decoder_f S1AP_ENBname_decode_xer; +xer_type_encoder_f S1AP_ENBname_encode_xer; +oer_type_decoder_f S1AP_ENBname_decode_oer; +oer_type_encoder_f S1AP_ENBname_encode_oer; +per_type_decoder_f S1AP_ENBname_decode_uper; +per_type_encoder_f S1AP_ENBname_encode_uper; +per_type_decoder_f S1AP_ENBname_decode_aper; +per_type_encoder_f S1AP_ENBname_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ENBname_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EPLMNs.c b/lib/s1ap3/asn1c/S1AP_EPLMNs.c new file mode 100644 index 0000000000..3169966614 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EPLMNs.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EPLMNs.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_EPLMNs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..15)) */}; +asn_per_constraints_t asn_PER_type_S1AP_EPLMNs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_EPLMNs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EPLMNs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_EPLMNs_specs_1 = { + sizeof(struct S1AP_EPLMNs), + offsetof(struct S1AP_EPLMNs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EPLMNs = { + "EPLMNs", + "EPLMNs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_EPLMNs_tags_1, + sizeof(asn_DEF_S1AP_EPLMNs_tags_1) + /sizeof(asn_DEF_S1AP_EPLMNs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EPLMNs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EPLMNs_tags_1) + /sizeof(asn_DEF_S1AP_EPLMNs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EPLMNs_constr_1, &asn_PER_type_S1AP_EPLMNs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_EPLMNs_1, + 1, /* Single element */ + &asn_SPC_S1AP_EPLMNs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EPLMNs.h b/lib/s1ap3/asn1c/S1AP_EPLMNs.h new file mode 100644 index 0000000000..74a7cfe193 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EPLMNs.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EPLMNs_H_ +#define _S1AP_EPLMNs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_EPLMNs */ +typedef struct S1AP_EPLMNs { + A_SEQUENCE_OF(S1AP_PLMNidentity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EPLMNs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EPLMNs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_EPLMNs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_EPLMNs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_EPLMNs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EPLMNs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.c b/lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.c new file mode 100644 index 0000000000..4e99add0e7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EUTRAN-CGI.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_EUTRAN_CGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EUTRAN_CGI, pLMNidentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNidentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EUTRAN_CGI, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CellIdentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_EUTRAN_CGI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P52, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_EUTRAN_CGI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_EUTRAN_CGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_EUTRAN_CGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_EUTRAN_CGI_specs_1 = { + sizeof(struct S1AP_EUTRAN_CGI), + offsetof(struct S1AP_EUTRAN_CGI, _asn_ctx), + asn_MAP_S1AP_EUTRAN_CGI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_EUTRAN_CGI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EUTRAN_CGI = { + "EUTRAN-CGI", + "EUTRAN-CGI", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_EUTRAN_CGI_tags_1, + sizeof(asn_DEF_S1AP_EUTRAN_CGI_tags_1) + /sizeof(asn_DEF_S1AP_EUTRAN_CGI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EUTRAN_CGI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EUTRAN_CGI_tags_1) + /sizeof(asn_DEF_S1AP_EUTRAN_CGI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_EUTRAN_CGI_1, + 3, /* Elements count */ + &asn_SPC_S1AP_EUTRAN_CGI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.h b/lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.h new file mode 100644 index 0000000000..8f44fdea7c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EUTRAN-CGI.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EUTRAN_CGI_H_ +#define _S1AP_EUTRAN_CGI_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include "S1AP_CellIdentity.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_EUTRAN-CGI */ +typedef struct S1AP_EUTRAN_CGI { + S1AP_PLMNidentity_t pLMNidentity; + S1AP_CellIdentity_t cell_ID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EUTRAN_CGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EUTRAN_CGI; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_EUTRAN_CGI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_EUTRAN_CGI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EUTRAN_CGI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EUTRANRoundTripDelayEstimationInfo.c b/lib/s1ap3/asn1c/S1AP_EUTRANRoundTripDelayEstimationInfo.c new file mode 100644 index 0000000000..a5c654bdd3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EUTRANRoundTripDelayEstimationInfo.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EUTRANRoundTripDelayEstimationInfo.h" + +int +S1AP_EUTRANRoundTripDelayEstimationInfo_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 2047)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_EUTRANRoundTripDelayEstimationInfo_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..2047) */, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_EUTRANRoundTripDelayEstimationInfo_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 11, 11, 0, 2047 } /* (0..2047) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo = { + "EUTRANRoundTripDelayEstimationInfo", + "EUTRANRoundTripDelayEstimationInfo", + &asn_OP_NativeInteger, + asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo_tags_1, + sizeof(asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo_tags_1) + /sizeof(asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo_tags_1) + /sizeof(asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EUTRANRoundTripDelayEstimationInfo_constr_1, &asn_PER_type_S1AP_EUTRANRoundTripDelayEstimationInfo_constr_1, S1AP_EUTRANRoundTripDelayEstimationInfo_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EUTRANRoundTripDelayEstimationInfo.h b/lib/s1ap3/asn1c/S1AP_EUTRANRoundTripDelayEstimationInfo.h new file mode 100644 index 0000000000..82ab563b77 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EUTRANRoundTripDelayEstimationInfo.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EUTRANRoundTripDelayEstimationInfo_H_ +#define _S1AP_EUTRANRoundTripDelayEstimationInfo_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_EUTRANRoundTripDelayEstimationInfo */ +typedef long S1AP_EUTRANRoundTripDelayEstimationInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo; +asn_struct_free_f S1AP_EUTRANRoundTripDelayEstimationInfo_free; +asn_struct_print_f S1AP_EUTRANRoundTripDelayEstimationInfo_print; +asn_constr_check_f S1AP_EUTRANRoundTripDelayEstimationInfo_constraint; +ber_type_decoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_decode_ber; +der_type_encoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_encode_der; +xer_type_decoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_decode_xer; +xer_type_encoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_encode_xer; +oer_type_decoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_decode_oer; +oer_type_encoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_encode_oer; +per_type_decoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_decode_uper; +per_type_encoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_encode_uper; +per_type_decoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_decode_aper; +per_type_encoder_f S1AP_EUTRANRoundTripDelayEstimationInfo_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EUTRANRoundTripDelayEstimationInfo_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast-Item.c b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast-Item.c new file mode 100644 index 0000000000..433bfb8698 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EmergencyAreaID-Broadcast-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Broadcast_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item, emergencyAreaID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EmergencyAreaID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "emergencyAreaID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item, completedCellinEAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CompletedCellinEAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "completedCellinEAI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P43, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_EmergencyAreaID_Broadcast_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_EmergencyAreaID_Broadcast_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* emergencyAreaID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* completedCellinEAI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_EmergencyAreaID_Broadcast_Item_specs_1 = { + sizeof(struct S1AP_EmergencyAreaID_Broadcast_Item), + offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item, _asn_ctx), + asn_MAP_S1AP_EmergencyAreaID_Broadcast_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_EmergencyAreaID_Broadcast_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item = { + "EmergencyAreaID-Broadcast-Item", + "EmergencyAreaID-Broadcast-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_tags_1, + sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_EmergencyAreaID_Broadcast_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_EmergencyAreaID_Broadcast_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast-Item.h b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast-Item.h new file mode 100644 index 0000000000..7c60569a42 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EmergencyAreaID_Broadcast_Item_H_ +#define _S1AP_EmergencyAreaID_Broadcast_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EmergencyAreaID.h" +#include "S1AP_CompletedCellinEAI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_EmergencyAreaID-Broadcast-Item */ +typedef struct S1AP_EmergencyAreaID_Broadcast_Item { + S1AP_EmergencyAreaID_t emergencyAreaID; + S1AP_CompletedCellinEAI_t completedCellinEAI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EmergencyAreaID_Broadcast_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_EmergencyAreaID_Broadcast_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Broadcast_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EmergencyAreaID_Broadcast_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast.c b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast.c new file mode 100644 index 0000000000..47b8246fe4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EmergencyAreaID-Broadcast.h" + +#include "S1AP_EmergencyAreaID-Broadcast-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_EmergencyAreaID_Broadcast_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_EmergencyAreaID_Broadcast_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Broadcast_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EmergencyAreaID_Broadcast_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_EmergencyAreaID_Broadcast_specs_1 = { + sizeof(struct S1AP_EmergencyAreaID_Broadcast), + offsetof(struct S1AP_EmergencyAreaID_Broadcast, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Broadcast = { + "EmergencyAreaID-Broadcast", + "EmergencyAreaID-Broadcast", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_EmergencyAreaID_Broadcast_tags_1, + sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EmergencyAreaID_Broadcast_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EmergencyAreaID_Broadcast_constr_1, &asn_PER_type_S1AP_EmergencyAreaID_Broadcast_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_EmergencyAreaID_Broadcast_1, + 1, /* Single element */ + &asn_SPC_S1AP_EmergencyAreaID_Broadcast_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast.h b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast.h new file mode 100644 index 0000000000..595789a08b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Broadcast.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EmergencyAreaID_Broadcast_H_ +#define _S1AP_EmergencyAreaID_Broadcast_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_EmergencyAreaID_Broadcast_Item; + +/* S1AP_EmergencyAreaID-Broadcast */ +typedef struct S1AP_EmergencyAreaID_Broadcast { + A_SEQUENCE_OF(struct S1AP_EmergencyAreaID_Broadcast_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EmergencyAreaID_Broadcast_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Broadcast; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_EmergencyAreaID_Broadcast_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Broadcast_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_EmergencyAreaID_Broadcast_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EmergencyAreaID_Broadcast_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled-Item.c b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled-Item.c new file mode 100644 index 0000000000..9242877ef9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EmergencyAreaID-Cancelled-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Cancelled_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item, emergencyAreaID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EmergencyAreaID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "emergencyAreaID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item, cancelledCellinEAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CancelledCellinEAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cancelledCellinEAI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P44, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_EmergencyAreaID_Cancelled_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_EmergencyAreaID_Cancelled_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* emergencyAreaID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cancelledCellinEAI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_EmergencyAreaID_Cancelled_Item_specs_1 = { + sizeof(struct S1AP_EmergencyAreaID_Cancelled_Item), + offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item, _asn_ctx), + asn_MAP_S1AP_EmergencyAreaID_Cancelled_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_EmergencyAreaID_Cancelled_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item = { + "EmergencyAreaID-Cancelled-Item", + "EmergencyAreaID-Cancelled-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_tags_1, + sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_EmergencyAreaID_Cancelled_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_EmergencyAreaID_Cancelled_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled-Item.h b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled-Item.h new file mode 100644 index 0000000000..6d4c73cd35 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EmergencyAreaID_Cancelled_Item_H_ +#define _S1AP_EmergencyAreaID_Cancelled_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EmergencyAreaID.h" +#include "S1AP_CancelledCellinEAI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_EmergencyAreaID-Cancelled-Item */ +typedef struct S1AP_EmergencyAreaID_Cancelled_Item { + S1AP_EmergencyAreaID_t emergencyAreaID; + S1AP_CancelledCellinEAI_t cancelledCellinEAI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EmergencyAreaID_Cancelled_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_EmergencyAreaID_Cancelled_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Cancelled_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EmergencyAreaID_Cancelled_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled.c b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled.c new file mode 100644 index 0000000000..31833f88bd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EmergencyAreaID-Cancelled.h" + +#include "S1AP_EmergencyAreaID-Cancelled-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_EmergencyAreaID_Cancelled_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_EmergencyAreaID_Cancelled_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Cancelled_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EmergencyAreaID_Cancelled_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_EmergencyAreaID_Cancelled_specs_1 = { + sizeof(struct S1AP_EmergencyAreaID_Cancelled), + offsetof(struct S1AP_EmergencyAreaID_Cancelled, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Cancelled = { + "EmergencyAreaID-Cancelled", + "EmergencyAreaID-Cancelled", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_EmergencyAreaID_Cancelled_tags_1, + sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EmergencyAreaID_Cancelled_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EmergencyAreaID_Cancelled_constr_1, &asn_PER_type_S1AP_EmergencyAreaID_Cancelled_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_EmergencyAreaID_Cancelled_1, + 1, /* Single element */ + &asn_SPC_S1AP_EmergencyAreaID_Cancelled_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled.h b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled.h new file mode 100644 index 0000000000..451129d39e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID-Cancelled.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EmergencyAreaID_Cancelled_H_ +#define _S1AP_EmergencyAreaID_Cancelled_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_EmergencyAreaID_Cancelled_Item; + +/* S1AP_EmergencyAreaID-Cancelled */ +typedef struct S1AP_EmergencyAreaID_Cancelled { + A_SEQUENCE_OF(struct S1AP_EmergencyAreaID_Cancelled_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EmergencyAreaID_Cancelled_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Cancelled; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_EmergencyAreaID_Cancelled_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Cancelled_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_EmergencyAreaID_Cancelled_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EmergencyAreaID_Cancelled_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID.c b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID.c new file mode 100644 index 0000000000..fbc8e8d86b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EmergencyAreaID.h" + +int +S1AP_EmergencyAreaID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_EmergencyAreaID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 3 /* (SIZE(3..3)) */}; +asn_per_constraints_t asn_PER_type_S1AP_EmergencyAreaID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EmergencyAreaID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID = { + "EmergencyAreaID", + "EmergencyAreaID", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_EmergencyAreaID_tags_1, + sizeof(asn_DEF_S1AP_EmergencyAreaID_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EmergencyAreaID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EmergencyAreaID_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EmergencyAreaID_constr_1, &asn_PER_type_S1AP_EmergencyAreaID_constr_1, S1AP_EmergencyAreaID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaID.h b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID.h new file mode 100644 index 0000000000..8489bbe0bd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EmergencyAreaID_H_ +#define _S1AP_EmergencyAreaID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_EmergencyAreaID */ +typedef OCTET_STRING_t S1AP_EmergencyAreaID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_EmergencyAreaID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID; +asn_struct_free_f S1AP_EmergencyAreaID_free; +asn_struct_print_f S1AP_EmergencyAreaID_print; +asn_constr_check_f S1AP_EmergencyAreaID_constraint; +ber_type_decoder_f S1AP_EmergencyAreaID_decode_ber; +der_type_encoder_f S1AP_EmergencyAreaID_encode_der; +xer_type_decoder_f S1AP_EmergencyAreaID_decode_xer; +xer_type_encoder_f S1AP_EmergencyAreaID_encode_xer; +oer_type_decoder_f S1AP_EmergencyAreaID_decode_oer; +oer_type_encoder_f S1AP_EmergencyAreaID_encode_oer; +per_type_decoder_f S1AP_EmergencyAreaID_decode_uper; +per_type_encoder_f S1AP_EmergencyAreaID_encode_uper; +per_type_decoder_f S1AP_EmergencyAreaID_decode_aper; +per_type_encoder_f S1AP_EmergencyAreaID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EmergencyAreaID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.c b/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.c new file mode 100644 index 0000000000..b1c99de56a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EmergencyAreaIDList.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_EmergencyAreaIDList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_EmergencyAreaIDList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaIDList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_EmergencyAreaID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EmergencyAreaIDList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_EmergencyAreaIDList_specs_1 = { + sizeof(struct S1AP_EmergencyAreaIDList), + offsetof(struct S1AP_EmergencyAreaIDList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaIDList = { + "EmergencyAreaIDList", + "EmergencyAreaIDList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_EmergencyAreaIDList_tags_1, + sizeof(asn_DEF_S1AP_EmergencyAreaIDList_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaIDList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EmergencyAreaIDList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EmergencyAreaIDList_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaIDList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EmergencyAreaIDList_constr_1, &asn_PER_type_S1AP_EmergencyAreaIDList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_EmergencyAreaIDList_1, + 1, /* Single element */ + &asn_SPC_S1AP_EmergencyAreaIDList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.h b/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.h new file mode 100644 index 0000000000..2816e7a9e6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDList.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EmergencyAreaIDList_H_ +#define _S1AP_EmergencyAreaIDList_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EmergencyAreaID.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_EmergencyAreaIDList */ +typedef struct S1AP_EmergencyAreaIDList { + A_SEQUENCE_OF(S1AP_EmergencyAreaID_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EmergencyAreaIDList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaIDList; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_EmergencyAreaIDList_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaIDList_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_EmergencyAreaIDList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EmergencyAreaIDList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDListForRestart.c b/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDListForRestart.c new file mode 100644 index 0000000000..a368107706 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDListForRestart.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EmergencyAreaIDListForRestart.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_EmergencyAreaIDListForRestart_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_EmergencyAreaIDListForRestart_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaIDListForRestart_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_EmergencyAreaID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EmergencyAreaIDListForRestart_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_EmergencyAreaIDListForRestart_specs_1 = { + sizeof(struct S1AP_EmergencyAreaIDListForRestart), + offsetof(struct S1AP_EmergencyAreaIDListForRestart, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaIDListForRestart = { + "EmergencyAreaIDListForRestart", + "EmergencyAreaIDListForRestart", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_EmergencyAreaIDListForRestart_tags_1, + sizeof(asn_DEF_S1AP_EmergencyAreaIDListForRestart_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaIDListForRestart_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EmergencyAreaIDListForRestart_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EmergencyAreaIDListForRestart_tags_1) + /sizeof(asn_DEF_S1AP_EmergencyAreaIDListForRestart_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EmergencyAreaIDListForRestart_constr_1, &asn_PER_type_S1AP_EmergencyAreaIDListForRestart_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_EmergencyAreaIDListForRestart_1, + 1, /* Single element */ + &asn_SPC_S1AP_EmergencyAreaIDListForRestart_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDListForRestart.h b/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDListForRestart.h new file mode 100644 index 0000000000..c82020e946 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EmergencyAreaIDListForRestart.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EmergencyAreaIDListForRestart_H_ +#define _S1AP_EmergencyAreaIDListForRestart_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EmergencyAreaID.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_EmergencyAreaIDListForRestart */ +typedef struct S1AP_EmergencyAreaIDListForRestart { + A_SEQUENCE_OF(S1AP_EmergencyAreaID_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EmergencyAreaIDListForRestart_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaIDListForRestart; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EmergencyAreaIDListForRestart_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.c b/lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.c new file mode 100644 index 0000000000..00d8a37b21 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EncryptionAlgorithms.h" + +int +S1AP_EncryptionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_EncryptionAlgorithms_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +asn_per_constraints_t asn_PER_type_S1AP_EncryptionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EncryptionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EncryptionAlgorithms = { + "EncryptionAlgorithms", + "EncryptionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_EncryptionAlgorithms_tags_1, + sizeof(asn_DEF_S1AP_EncryptionAlgorithms_tags_1) + /sizeof(asn_DEF_S1AP_EncryptionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EncryptionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EncryptionAlgorithms_tags_1) + /sizeof(asn_DEF_S1AP_EncryptionAlgorithms_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EncryptionAlgorithms_constr_1, &asn_PER_type_S1AP_EncryptionAlgorithms_constr_1, S1AP_EncryptionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.h b/lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.h new file mode 100644 index 0000000000..23f446d23a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EncryptionAlgorithms.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EncryptionAlgorithms_H_ +#define _S1AP_EncryptionAlgorithms_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_EncryptionAlgorithms */ +typedef BIT_STRING_t S1AP_EncryptionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_EncryptionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EncryptionAlgorithms; +asn_struct_free_f S1AP_EncryptionAlgorithms_free; +asn_struct_print_f S1AP_EncryptionAlgorithms_print; +asn_constr_check_f S1AP_EncryptionAlgorithms_constraint; +ber_type_decoder_f S1AP_EncryptionAlgorithms_decode_ber; +der_type_encoder_f S1AP_EncryptionAlgorithms_encode_der; +xer_type_decoder_f S1AP_EncryptionAlgorithms_decode_xer; +xer_type_encoder_f S1AP_EncryptionAlgorithms_encode_xer; +oer_type_decoder_f S1AP_EncryptionAlgorithms_decode_oer; +oer_type_encoder_f S1AP_EncryptionAlgorithms_encode_oer; +per_type_decoder_f S1AP_EncryptionAlgorithms_decode_uper; +per_type_encoder_f S1AP_EncryptionAlgorithms_encode_uper; +per_type_decoder_f S1AP_EncryptionAlgorithms_decode_aper; +per_type_encoder_f S1AP_EncryptionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EncryptionAlgorithms_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EnhancedCoverageRestricted.c b/lib/s1ap3/asn1c/S1AP_EnhancedCoverageRestricted.c new file mode 100644 index 0000000000..103ece727d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EnhancedCoverageRestricted.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EnhancedCoverageRestricted.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_EnhancedCoverageRestricted_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_EnhancedCoverageRestricted_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_EnhancedCoverageRestricted_value2enum_1[] = { + { 0, 10, "restricted" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_EnhancedCoverageRestricted_enum2value_1[] = { + 0 /* restricted(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_EnhancedCoverageRestricted_specs_1 = { + asn_MAP_S1AP_EnhancedCoverageRestricted_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_EnhancedCoverageRestricted_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EnhancedCoverageRestricted_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EnhancedCoverageRestricted = { + "EnhancedCoverageRestricted", + "EnhancedCoverageRestricted", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_EnhancedCoverageRestricted_tags_1, + sizeof(asn_DEF_S1AP_EnhancedCoverageRestricted_tags_1) + /sizeof(asn_DEF_S1AP_EnhancedCoverageRestricted_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EnhancedCoverageRestricted_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EnhancedCoverageRestricted_tags_1) + /sizeof(asn_DEF_S1AP_EnhancedCoverageRestricted_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EnhancedCoverageRestricted_constr_1, &asn_PER_type_S1AP_EnhancedCoverageRestricted_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_EnhancedCoverageRestricted_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EnhancedCoverageRestricted.h b/lib/s1ap3/asn1c/S1AP_EnhancedCoverageRestricted.h new file mode 100644 index 0000000000..f901b0dc87 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EnhancedCoverageRestricted.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EnhancedCoverageRestricted_H_ +#define _S1AP_EnhancedCoverageRestricted_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_EnhancedCoverageRestricted { + S1AP_EnhancedCoverageRestricted_restricted = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_EnhancedCoverageRestricted; + +/* S1AP_EnhancedCoverageRestricted */ +typedef long S1AP_EnhancedCoverageRestricted_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EnhancedCoverageRestricted; +asn_struct_free_f S1AP_EnhancedCoverageRestricted_free; +asn_struct_print_f S1AP_EnhancedCoverageRestricted_print; +asn_constr_check_f S1AP_EnhancedCoverageRestricted_constraint; +ber_type_decoder_f S1AP_EnhancedCoverageRestricted_decode_ber; +der_type_encoder_f S1AP_EnhancedCoverageRestricted_encode_der; +xer_type_decoder_f S1AP_EnhancedCoverageRestricted_decode_xer; +xer_type_encoder_f S1AP_EnhancedCoverageRestricted_encode_xer; +oer_type_decoder_f S1AP_EnhancedCoverageRestricted_decode_oer; +oer_type_encoder_f S1AP_EnhancedCoverageRestricted_encode_oer; +per_type_decoder_f S1AP_EnhancedCoverageRestricted_decode_uper; +per_type_encoder_f S1AP_EnhancedCoverageRestricted_encode_uper; +per_type_decoder_f S1AP_EnhancedCoverageRestricted_decode_aper; +per_type_encoder_f S1AP_EnhancedCoverageRestricted_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EnhancedCoverageRestricted_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ErrorIndication.c b/lib/s1ap3/asn1c/S1AP_ErrorIndication.c new file mode 100644 index 0000000000..b80b529eb8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ErrorIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ErrorIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_ErrorIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ErrorIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P39, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ErrorIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ErrorIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ErrorIndication_specs_1 = { + sizeof(struct S1AP_ErrorIndication), + offsetof(struct S1AP_ErrorIndication, _asn_ctx), + asn_MAP_S1AP_ErrorIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ErrorIndication = { + "ErrorIndication", + "ErrorIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ErrorIndication_tags_1, + sizeof(asn_DEF_S1AP_ErrorIndication_tags_1) + /sizeof(asn_DEF_S1AP_ErrorIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ErrorIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ErrorIndication_tags_1) + /sizeof(asn_DEF_S1AP_ErrorIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ErrorIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ErrorIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ErrorIndication.h b/lib/s1ap3/asn1c/S1AP_ErrorIndication.h new file mode 100644 index 0000000000..c40abba78a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ErrorIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ErrorIndication_H_ +#define _S1AP_ErrorIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ErrorIndication */ +typedef struct S1AP_ErrorIndication { + S1AP_ProtocolIE_Container_6551P39_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ErrorIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ErrorIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ErrorIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ErrorIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ErrorIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_EventType.c b/lib/s1ap3/asn1c/S1AP_EventType.c new file mode 100644 index 0000000000..75855e096c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EventType.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_EventType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_EventType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_EventType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_EventType_value2enum_1[] = { + { 0, 6, "direct" }, + { 1, 20, "change-of-serve-cell" }, + { 2, 25, "stop-change-of-serve-cell" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_EventType_enum2value_1[] = { + 1, /* change-of-serve-cell(1) */ + 0, /* direct(0) */ + 2 /* stop-change-of-serve-cell(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_EventType_specs_1 = { + asn_MAP_S1AP_EventType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_EventType_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EventType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EventType = { + "EventType", + "EventType", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_EventType_tags_1, + sizeof(asn_DEF_S1AP_EventType_tags_1) + /sizeof(asn_DEF_S1AP_EventType_tags_1[0]), /* 1 */ + asn_DEF_S1AP_EventType_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_EventType_tags_1) + /sizeof(asn_DEF_S1AP_EventType_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_EventType_constr_1, &asn_PER_type_S1AP_EventType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_EventType_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_EventType.h b/lib/s1ap3/asn1c/S1AP_EventType.h new file mode 100644 index 0000000000..9a96df8ab5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_EventType.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_EventType_H_ +#define _S1AP_EventType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_EventType { + S1AP_EventType_direct = 0, + S1AP_EventType_change_of_serve_cell = 1, + S1AP_EventType_stop_change_of_serve_cell = 2 + /* + * Enumeration is extensible + */ +} e_S1AP_EventType; + +/* S1AP_EventType */ +typedef long S1AP_EventType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_EventType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EventType; +extern const asn_INTEGER_specifics_t asn_SPC_EventType_specs_1; +asn_struct_free_f EventType_free; +asn_struct_print_f EventType_print; +asn_constr_check_f EventType_constraint; +ber_type_decoder_f EventType_decode_ber; +der_type_encoder_f EventType_encode_der; +xer_type_decoder_f EventType_decode_xer; +xer_type_encoder_f EventType_encode_xer; +oer_type_decoder_f EventType_decode_oer; +oer_type_encoder_f EventType_encode_oer; +per_type_decoder_f EventType_decode_uper; +per_type_encoder_f EventType_encode_uper; +per_type_decoder_f EventType_decode_aper; +per_type_encoder_f EventType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_EventType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.c b/lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.c new file mode 100644 index 0000000000..731ccffb6c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ExpectedActivityPeriod.h" + +int +S1AP_ExpectedActivityPeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if(((value >= 1 && value <= 30) || (value == 40) || (value == 50) || (value == 60) || (value == 80) || (value == 100) || (value == 120) || (value == 150) || (value >= 180 && value <= 181))) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ExpectedActivityPeriod_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ExpectedActivityPeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 181 } /* (1..181,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ExpectedActivityPeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedActivityPeriod = { + "ExpectedActivityPeriod", + "ExpectedActivityPeriod", + &asn_OP_NativeInteger, + asn_DEF_S1AP_ExpectedActivityPeriod_tags_1, + sizeof(asn_DEF_S1AP_ExpectedActivityPeriod_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedActivityPeriod_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ExpectedActivityPeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ExpectedActivityPeriod_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedActivityPeriod_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ExpectedActivityPeriod_constr_1, &asn_PER_type_S1AP_ExpectedActivityPeriod_constr_1, S1AP_ExpectedActivityPeriod_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.h b/lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.h new file mode 100644 index 0000000000..c25339febe --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedActivityPeriod.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ExpectedActivityPeriod_H_ +#define _S1AP_ExpectedActivityPeriod_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ExpectedActivityPeriod */ +typedef long S1AP_ExpectedActivityPeriod_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ExpectedActivityPeriod_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedActivityPeriod; +asn_struct_free_f S1AP_ExpectedActivityPeriod_free; +asn_struct_print_f S1AP_ExpectedActivityPeriod_print; +asn_constr_check_f S1AP_ExpectedActivityPeriod_constraint; +ber_type_decoder_f S1AP_ExpectedActivityPeriod_decode_ber; +der_type_encoder_f S1AP_ExpectedActivityPeriod_encode_der; +xer_type_decoder_f S1AP_ExpectedActivityPeriod_decode_xer; +xer_type_encoder_f S1AP_ExpectedActivityPeriod_encode_xer; +oer_type_decoder_f S1AP_ExpectedActivityPeriod_decode_oer; +oer_type_encoder_f S1AP_ExpectedActivityPeriod_encode_oer; +per_type_decoder_f S1AP_ExpectedActivityPeriod_decode_uper; +per_type_encoder_f S1AP_ExpectedActivityPeriod_encode_uper; +per_type_decoder_f S1AP_ExpectedActivityPeriod_decode_aper; +per_type_encoder_f S1AP_ExpectedActivityPeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ExpectedActivityPeriod_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.c b/lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.c new file mode 100644 index 0000000000..33fb385df7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ExpectedHOInterval.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ExpectedHOInterval_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ExpectedHOInterval_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ExpectedHOInterval_value2enum_1[] = { + { 0, 5, "sec15" }, + { 1, 5, "sec30" }, + { 2, 5, "sec60" }, + { 3, 5, "sec90" }, + { 4, 6, "sec120" }, + { 5, 6, "sec180" }, + { 6, 9, "long-time" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_ExpectedHOInterval_enum2value_1[] = { + 6, /* long-time(6) */ + 4, /* sec120(4) */ + 0, /* sec15(0) */ + 5, /* sec180(5) */ + 1, /* sec30(1) */ + 2, /* sec60(2) */ + 3 /* sec90(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_ExpectedHOInterval_specs_1 = { + asn_MAP_S1AP_ExpectedHOInterval_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ExpectedHOInterval_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ExpectedHOInterval_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedHOInterval = { + "ExpectedHOInterval", + "ExpectedHOInterval", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ExpectedHOInterval_tags_1, + sizeof(asn_DEF_S1AP_ExpectedHOInterval_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedHOInterval_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ExpectedHOInterval_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ExpectedHOInterval_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedHOInterval_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ExpectedHOInterval_constr_1, &asn_PER_type_S1AP_ExpectedHOInterval_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ExpectedHOInterval_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.h b/lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.h new file mode 100644 index 0000000000..ad7aced736 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedHOInterval.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ExpectedHOInterval_H_ +#define _S1AP_ExpectedHOInterval_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ExpectedHOInterval { + S1AP_ExpectedHOInterval_sec15 = 0, + S1AP_ExpectedHOInterval_sec30 = 1, + S1AP_ExpectedHOInterval_sec60 = 2, + S1AP_ExpectedHOInterval_sec90 = 3, + S1AP_ExpectedHOInterval_sec120 = 4, + S1AP_ExpectedHOInterval_sec180 = 5, + S1AP_ExpectedHOInterval_long_time = 6 + /* + * Enumeration is extensible + */ +} e_S1AP_ExpectedHOInterval; + +/* S1AP_ExpectedHOInterval */ +typedef long S1AP_ExpectedHOInterval_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ExpectedHOInterval_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedHOInterval; +extern const asn_INTEGER_specifics_t asn_SPC_ExpectedHOInterval_specs_1; +asn_struct_free_f ExpectedHOInterval_free; +asn_struct_print_f ExpectedHOInterval_print; +asn_constr_check_f ExpectedHOInterval_constraint; +ber_type_decoder_f ExpectedHOInterval_decode_ber; +der_type_encoder_f ExpectedHOInterval_encode_der; +xer_type_decoder_f ExpectedHOInterval_decode_xer; +xer_type_encoder_f ExpectedHOInterval_encode_xer; +oer_type_decoder_f ExpectedHOInterval_decode_oer; +oer_type_encoder_f ExpectedHOInterval_encode_oer; +per_type_decoder_f ExpectedHOInterval_decode_uper; +per_type_encoder_f ExpectedHOInterval_encode_uper; +per_type_decoder_f ExpectedHOInterval_decode_aper; +per_type_encoder_f ExpectedHOInterval_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ExpectedHOInterval_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.c b/lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.c new file mode 100644 index 0000000000..ef03af5d11 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ExpectedIdlePeriod.h" + +int +S1AP_ExpectedIdlePeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if(((value >= 1 && value <= 30) || (value == 40) || (value == 50) || (value == 60) || (value == 80) || (value == 100) || (value == 120) || (value == 150) || (value >= 180 && value <= 181))) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ExpectedIdlePeriod_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ExpectedIdlePeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 181 } /* (1..181,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ExpectedIdlePeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedIdlePeriod = { + "ExpectedIdlePeriod", + "ExpectedIdlePeriod", + &asn_OP_NativeInteger, + asn_DEF_S1AP_ExpectedIdlePeriod_tags_1, + sizeof(asn_DEF_S1AP_ExpectedIdlePeriod_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedIdlePeriod_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ExpectedIdlePeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ExpectedIdlePeriod_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedIdlePeriod_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ExpectedIdlePeriod_constr_1, &asn_PER_type_S1AP_ExpectedIdlePeriod_constr_1, S1AP_ExpectedIdlePeriod_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.h b/lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.h new file mode 100644 index 0000000000..71f20b0ab6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedIdlePeriod.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ExpectedIdlePeriod_H_ +#define _S1AP_ExpectedIdlePeriod_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ExpectedIdlePeriod */ +typedef long S1AP_ExpectedIdlePeriod_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ExpectedIdlePeriod_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedIdlePeriod; +asn_struct_free_f S1AP_ExpectedIdlePeriod_free; +asn_struct_print_f S1AP_ExpectedIdlePeriod_print; +asn_constr_check_f S1AP_ExpectedIdlePeriod_constraint; +ber_type_decoder_f S1AP_ExpectedIdlePeriod_decode_ber; +der_type_encoder_f S1AP_ExpectedIdlePeriod_encode_der; +xer_type_decoder_f S1AP_ExpectedIdlePeriod_decode_xer; +xer_type_encoder_f S1AP_ExpectedIdlePeriod_encode_xer; +oer_type_decoder_f S1AP_ExpectedIdlePeriod_decode_oer; +oer_type_encoder_f S1AP_ExpectedIdlePeriod_encode_oer; +per_type_decoder_f S1AP_ExpectedIdlePeriod_decode_uper; +per_type_encoder_f S1AP_ExpectedIdlePeriod_encode_uper; +per_type_decoder_f S1AP_ExpectedIdlePeriod_decode_aper; +per_type_encoder_f S1AP_ExpectedIdlePeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ExpectedIdlePeriod_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedUEActivityBehaviour.c b/lib/s1ap3/asn1c/S1AP_ExpectedUEActivityBehaviour.c new file mode 100644 index 0000000000..e0a233f85b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedUEActivityBehaviour.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ExpectedUEActivityBehaviour.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_ExpectedUEActivityBehaviour_1[] = { + { ATF_POINTER, 4, offsetof(struct S1AP_ExpectedUEActivityBehaviour, expectedActivityPeriod), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ExpectedActivityPeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedActivityPeriod" + }, + { ATF_POINTER, 3, offsetof(struct S1AP_ExpectedUEActivityBehaviour, expectedIdlePeriod), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ExpectedIdlePeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedIdlePeriod" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_ExpectedUEActivityBehaviour, sourceofUEActivityBehaviourInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sourceofUEActivityBehaviourInformation" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ExpectedUEActivityBehaviour, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P54, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ExpectedUEActivityBehaviour_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ExpectedUEActivityBehaviour_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ExpectedUEActivityBehaviour_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* expectedActivityPeriod */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* expectedIdlePeriod */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sourceofUEActivityBehaviourInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ExpectedUEActivityBehaviour_specs_1 = { + sizeof(struct S1AP_ExpectedUEActivityBehaviour), + offsetof(struct S1AP_ExpectedUEActivityBehaviour, _asn_ctx), + asn_MAP_S1AP_ExpectedUEActivityBehaviour_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_ExpectedUEActivityBehaviour_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedUEActivityBehaviour = { + "ExpectedUEActivityBehaviour", + "ExpectedUEActivityBehaviour", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ExpectedUEActivityBehaviour_tags_1, + sizeof(asn_DEF_S1AP_ExpectedUEActivityBehaviour_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedUEActivityBehaviour_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ExpectedUEActivityBehaviour_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ExpectedUEActivityBehaviour_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedUEActivityBehaviour_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ExpectedUEActivityBehaviour_1, + 4, /* Elements count */ + &asn_SPC_S1AP_ExpectedUEActivityBehaviour_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedUEActivityBehaviour.h b/lib/s1ap3/asn1c/S1AP_ExpectedUEActivityBehaviour.h new file mode 100644 index 0000000000..c54ac09525 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedUEActivityBehaviour.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ExpectedUEActivityBehaviour_H_ +#define _S1AP_ExpectedUEActivityBehaviour_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ExpectedActivityPeriod.h" +#include "S1AP_ExpectedIdlePeriod.h" +#include "S1AP_SourceOfUEActivityBehaviourInformation.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ExpectedUEActivityBehaviour */ +typedef struct S1AP_ExpectedUEActivityBehaviour { + S1AP_ExpectedActivityPeriod_t *expectedActivityPeriod; /* OPTIONAL */ + S1AP_ExpectedIdlePeriod_t *expectedIdlePeriod; /* OPTIONAL */ + S1AP_SourceOfUEActivityBehaviourInformation_t *sourceofUEActivityBehaviourInformation; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ExpectedUEActivityBehaviour_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedUEActivityBehaviour; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ExpectedUEActivityBehaviour_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ExpectedUEActivityBehaviour_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ExpectedUEActivityBehaviour_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.c b/lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.c new file mode 100644 index 0000000000..82990e80d7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ExpectedUEBehaviour.h" + +#include "S1AP_ExpectedUEActivityBehaviour.h" +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_ExpectedUEBehaviour_1[] = { + { ATF_POINTER, 3, offsetof(struct S1AP_ExpectedUEBehaviour, expectedActivity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ExpectedUEActivityBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedActivity" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_ExpectedUEBehaviour, expectedHOInterval), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ExpectedHOInterval, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedHOInterval" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ExpectedUEBehaviour, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P53, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ExpectedUEBehaviour_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ExpectedUEBehaviour_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ExpectedUEBehaviour_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* expectedActivity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* expectedHOInterval */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_ExpectedUEBehaviour_specs_1 = { + sizeof(struct S1AP_ExpectedUEBehaviour), + offsetof(struct S1AP_ExpectedUEBehaviour, _asn_ctx), + asn_MAP_S1AP_ExpectedUEBehaviour_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_ExpectedUEBehaviour_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedUEBehaviour = { + "ExpectedUEBehaviour", + "ExpectedUEBehaviour", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ExpectedUEBehaviour_tags_1, + sizeof(asn_DEF_S1AP_ExpectedUEBehaviour_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedUEBehaviour_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ExpectedUEBehaviour_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ExpectedUEBehaviour_tags_1) + /sizeof(asn_DEF_S1AP_ExpectedUEBehaviour_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ExpectedUEBehaviour_1, + 3, /* Elements count */ + &asn_SPC_S1AP_ExpectedUEBehaviour_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.h b/lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.h new file mode 100644 index 0000000000..e16386a4c9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExpectedUEBehaviour.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ExpectedUEBehaviour_H_ +#define _S1AP_ExpectedUEBehaviour_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ExpectedHOInterval.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ExpectedUEActivityBehaviour; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ExpectedUEBehaviour */ +typedef struct S1AP_ExpectedUEBehaviour { + struct S1AP_ExpectedUEActivityBehaviour *expectedActivity; /* OPTIONAL */ + S1AP_ExpectedHOInterval_t *expectedHOInterval; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ExpectedUEBehaviour_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedUEBehaviour; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ExpectedUEBehaviour_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Extended-UEIdentityIndexValue.c b/lib/s1ap3/asn1c/S1AP_Extended-UEIdentityIndexValue.c new file mode 100644 index 0000000000..a61ca932d9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Extended-UEIdentityIndexValue.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Extended-UEIdentityIndexValue.h" + +int +S1AP_Extended_UEIdentityIndexValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 14)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Extended_UEIdentityIndexValue_constr_1 CC_NOTUSED = { + { 0, 0 }, + 14 /* (SIZE(14..14)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_Extended_UEIdentityIndexValue_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 14, 14 } /* (SIZE(14..14)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Extended_UEIdentityIndexValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Extended_UEIdentityIndexValue = { + "Extended-UEIdentityIndexValue", + "Extended-UEIdentityIndexValue", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_Extended_UEIdentityIndexValue_tags_1, + sizeof(asn_DEF_S1AP_Extended_UEIdentityIndexValue_tags_1) + /sizeof(asn_DEF_S1AP_Extended_UEIdentityIndexValue_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Extended_UEIdentityIndexValue_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Extended_UEIdentityIndexValue_tags_1) + /sizeof(asn_DEF_S1AP_Extended_UEIdentityIndexValue_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Extended_UEIdentityIndexValue_constr_1, &asn_PER_type_S1AP_Extended_UEIdentityIndexValue_constr_1, S1AP_Extended_UEIdentityIndexValue_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Extended-UEIdentityIndexValue.h b/lib/s1ap3/asn1c/S1AP_Extended-UEIdentityIndexValue.h new file mode 100644 index 0000000000..88f25197e5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Extended-UEIdentityIndexValue.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Extended_UEIdentityIndexValue_H_ +#define _S1AP_Extended_UEIdentityIndexValue_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Extended-UEIdentityIndexValue */ +typedef BIT_STRING_t S1AP_Extended_UEIdentityIndexValue_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Extended_UEIdentityIndexValue; +asn_struct_free_f S1AP_Extended_UEIdentityIndexValue_free; +asn_struct_print_f S1AP_Extended_UEIdentityIndexValue_print; +asn_constr_check_f S1AP_Extended_UEIdentityIndexValue_constraint; +ber_type_decoder_f S1AP_Extended_UEIdentityIndexValue_decode_ber; +der_type_encoder_f S1AP_Extended_UEIdentityIndexValue_encode_der; +xer_type_decoder_f S1AP_Extended_UEIdentityIndexValue_decode_xer; +xer_type_encoder_f S1AP_Extended_UEIdentityIndexValue_encode_xer; +oer_type_decoder_f S1AP_Extended_UEIdentityIndexValue_decode_oer; +oer_type_encoder_f S1AP_Extended_UEIdentityIndexValue_encode_oer; +per_type_decoder_f S1AP_Extended_UEIdentityIndexValue_decode_uper; +per_type_encoder_f S1AP_Extended_UEIdentityIndexValue_encode_uper; +per_type_decoder_f S1AP_Extended_UEIdentityIndexValue_decode_aper; +per_type_encoder_f S1AP_Extended_UEIdentityIndexValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Extended_UEIdentityIndexValue_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.c b/lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.c new file mode 100644 index 0000000000..f42f8041b6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ExtendedRNC-ID.h" + +int +S1AP_ExtendedRNC_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 4096 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ExtendedRNC_ID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (4096..65535) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ExtendedRNC_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 4096, 65535 } /* (4096..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ExtendedRNC_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ExtendedRNC_ID = { + "ExtendedRNC-ID", + "ExtendedRNC-ID", + &asn_OP_NativeInteger, + asn_DEF_S1AP_ExtendedRNC_ID_tags_1, + sizeof(asn_DEF_S1AP_ExtendedRNC_ID_tags_1) + /sizeof(asn_DEF_S1AP_ExtendedRNC_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ExtendedRNC_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ExtendedRNC_ID_tags_1) + /sizeof(asn_DEF_S1AP_ExtendedRNC_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ExtendedRNC_ID_constr_1, &asn_PER_type_S1AP_ExtendedRNC_ID_constr_1, S1AP_ExtendedRNC_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.h b/lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.h new file mode 100644 index 0000000000..b29bf16aeb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExtendedRNC-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ExtendedRNC_ID_H_ +#define _S1AP_ExtendedRNC_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ExtendedRNC-ID */ +typedef long S1AP_ExtendedRNC_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ExtendedRNC_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ExtendedRNC_ID; +asn_struct_free_f S1AP_ExtendedRNC_ID_free; +asn_struct_print_f S1AP_ExtendedRNC_ID_print; +asn_constr_check_f S1AP_ExtendedRNC_ID_constraint; +ber_type_decoder_f S1AP_ExtendedRNC_ID_decode_ber; +der_type_encoder_f S1AP_ExtendedRNC_ID_encode_der; +xer_type_decoder_f S1AP_ExtendedRNC_ID_decode_xer; +xer_type_encoder_f S1AP_ExtendedRNC_ID_encode_xer; +oer_type_decoder_f S1AP_ExtendedRNC_ID_decode_oer; +oer_type_encoder_f S1AP_ExtendedRNC_ID_encode_oer; +per_type_decoder_f S1AP_ExtendedRNC_ID_decode_uper; +per_type_encoder_f S1AP_ExtendedRNC_ID_encode_uper; +per_type_decoder_f S1AP_ExtendedRNC_ID_decode_aper; +per_type_encoder_f S1AP_ExtendedRNC_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ExtendedRNC_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ExtendedRepetitionPeriod.c b/lib/s1ap3/asn1c/S1AP_ExtendedRepetitionPeriod.c new file mode 100644 index 0000000000..f98580916c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExtendedRepetitionPeriod.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ExtendedRepetitionPeriod.h" + +int +S1AP_ExtendedRepetitionPeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 4096 && value <= 131071)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ExtendedRepetitionPeriod_constr_1 CC_NOTUSED = { + { 4, 1 } /* (4096..131071) */, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_ExtendedRepetitionPeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 17, -1, 4096, 131071 } /* (4096..131071) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ExtendedRepetitionPeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ExtendedRepetitionPeriod = { + "ExtendedRepetitionPeriod", + "ExtendedRepetitionPeriod", + &asn_OP_NativeInteger, + asn_DEF_S1AP_ExtendedRepetitionPeriod_tags_1, + sizeof(asn_DEF_S1AP_ExtendedRepetitionPeriod_tags_1) + /sizeof(asn_DEF_S1AP_ExtendedRepetitionPeriod_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ExtendedRepetitionPeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ExtendedRepetitionPeriod_tags_1) + /sizeof(asn_DEF_S1AP_ExtendedRepetitionPeriod_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ExtendedRepetitionPeriod_constr_1, &asn_PER_type_S1AP_ExtendedRepetitionPeriod_constr_1, S1AP_ExtendedRepetitionPeriod_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ExtendedRepetitionPeriod.h b/lib/s1ap3/asn1c/S1AP_ExtendedRepetitionPeriod.h new file mode 100644 index 0000000000..f50f4e0449 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ExtendedRepetitionPeriod.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ExtendedRepetitionPeriod_H_ +#define _S1AP_ExtendedRepetitionPeriod_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ExtendedRepetitionPeriod */ +typedef long S1AP_ExtendedRepetitionPeriod_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ExtendedRepetitionPeriod; +asn_struct_free_f S1AP_ExtendedRepetitionPeriod_free; +asn_struct_print_f S1AP_ExtendedRepetitionPeriod_print; +asn_constr_check_f S1AP_ExtendedRepetitionPeriod_constraint; +ber_type_decoder_f S1AP_ExtendedRepetitionPeriod_decode_ber; +der_type_encoder_f S1AP_ExtendedRepetitionPeriod_encode_der; +xer_type_decoder_f S1AP_ExtendedRepetitionPeriod_decode_xer; +xer_type_encoder_f S1AP_ExtendedRepetitionPeriod_encode_xer; +oer_type_decoder_f S1AP_ExtendedRepetitionPeriod_decode_oer; +oer_type_encoder_f S1AP_ExtendedRepetitionPeriod_encode_oer; +per_type_decoder_f S1AP_ExtendedRepetitionPeriod_decode_uper; +per_type_encoder_f S1AP_ExtendedRepetitionPeriod_encode_uper; +per_type_decoder_f S1AP_ExtendedRepetitionPeriod_decode_aper; +per_type_encoder_f S1AP_ExtendedRepetitionPeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ExtendedRepetitionPeriod_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.c b/lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.c new file mode 100644 index 0000000000..b76ccf327f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ForbiddenInterRATs.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ForbiddenInterRATs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ForbiddenInterRATs_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ForbiddenInterRATs_value2enum_1[] = { + { 0, 3, "all" }, + { 1, 5, "geran" }, + { 2, 5, "utran" }, + { 3, 8, "cdma2000" }, + { 4, 13, "geranandutran" }, + { 5, 16, "cdma2000andutran" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_ForbiddenInterRATs_enum2value_1[] = { + 0, /* all(0) */ + 3, /* cdma2000(3) */ + 5, /* cdma2000andutran(5) */ + 1, /* geran(1) */ + 4, /* geranandutran(4) */ + 2 /* utran(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_ForbiddenInterRATs_specs_1 = { + asn_MAP_S1AP_ForbiddenInterRATs_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ForbiddenInterRATs_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ForbiddenInterRATs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenInterRATs = { + "ForbiddenInterRATs", + "ForbiddenInterRATs", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ForbiddenInterRATs_tags_1, + sizeof(asn_DEF_S1AP_ForbiddenInterRATs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenInterRATs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ForbiddenInterRATs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ForbiddenInterRATs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenInterRATs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ForbiddenInterRATs_constr_1, &asn_PER_type_S1AP_ForbiddenInterRATs_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ForbiddenInterRATs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.h b/lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.h new file mode 100644 index 0000000000..9f1b030efd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenInterRATs.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ForbiddenInterRATs_H_ +#define _S1AP_ForbiddenInterRATs_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ForbiddenInterRATs { + S1AP_ForbiddenInterRATs_all = 0, + S1AP_ForbiddenInterRATs_geran = 1, + S1AP_ForbiddenInterRATs_utran = 2, + S1AP_ForbiddenInterRATs_cdma2000 = 3, + /* + * Enumeration is extensible + */ + S1AP_ForbiddenInterRATs_geranandutran = 4, + S1AP_ForbiddenInterRATs_cdma2000andutran = 5 +} e_S1AP_ForbiddenInterRATs; + +/* S1AP_ForbiddenInterRATs */ +typedef long S1AP_ForbiddenInterRATs_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ForbiddenInterRATs_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenInterRATs; +extern const asn_INTEGER_specifics_t asn_SPC_ForbiddenInterRATs_specs_1; +asn_struct_free_f ForbiddenInterRATs_free; +asn_struct_print_f ForbiddenInterRATs_print; +asn_constr_check_f ForbiddenInterRATs_constraint; +ber_type_decoder_f ForbiddenInterRATs_decode_ber; +der_type_encoder_f ForbiddenInterRATs_encode_der; +xer_type_decoder_f ForbiddenInterRATs_decode_xer; +xer_type_encoder_f ForbiddenInterRATs_encode_xer; +oer_type_decoder_f ForbiddenInterRATs_decode_oer; +oer_type_encoder_f ForbiddenInterRATs_encode_oer; +per_type_decoder_f ForbiddenInterRATs_decode_uper; +per_type_encoder_f ForbiddenInterRATs_encode_uper; +per_type_decoder_f ForbiddenInterRATs_decode_aper; +per_type_encoder_f ForbiddenInterRATs_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ForbiddenInterRATs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenLACs.c b/lib/s1ap3/asn1c/S1AP_ForbiddenLACs.c new file mode 100644 index 0000000000..0341eebe2d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenLACs.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ForbiddenLACs.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_ForbiddenLACs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4096)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ForbiddenLACs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 12, 12, 1, 4096 } /* (SIZE(1..4096)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ForbiddenLACs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_LAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ForbiddenLACs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ForbiddenLACs_specs_1 = { + sizeof(struct S1AP_ForbiddenLACs), + offsetof(struct S1AP_ForbiddenLACs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenLACs = { + "ForbiddenLACs", + "ForbiddenLACs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ForbiddenLACs_tags_1, + sizeof(asn_DEF_S1AP_ForbiddenLACs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenLACs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ForbiddenLACs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ForbiddenLACs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenLACs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ForbiddenLACs_constr_1, &asn_PER_type_S1AP_ForbiddenLACs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ForbiddenLACs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ForbiddenLACs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenLACs.h b/lib/s1ap3/asn1c/S1AP_ForbiddenLACs.h new file mode 100644 index 0000000000..3be827a27d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenLACs.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ForbiddenLACs_H_ +#define _S1AP_ForbiddenLACs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_LAC.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ForbiddenLACs */ +typedef struct S1AP_ForbiddenLACs { + A_SEQUENCE_OF(S1AP_LAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ForbiddenLACs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenLACs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ForbiddenLACs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ForbiddenLACs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ForbiddenLACs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ForbiddenLACs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.c b/lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.c new file mode 100644 index 0000000000..6ff4b94cf7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ForbiddenLAs-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_ForbiddenLAs_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenLAs_Item, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenLAs_Item, forbiddenLACs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ForbiddenLACs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenLACs" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ForbiddenLAs_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P56, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ForbiddenLAs_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ForbiddenLAs_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ForbiddenLAs_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* forbiddenLACs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ForbiddenLAs_Item_specs_1 = { + sizeof(struct S1AP_ForbiddenLAs_Item), + offsetof(struct S1AP_ForbiddenLAs_Item, _asn_ctx), + asn_MAP_S1AP_ForbiddenLAs_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_ForbiddenLAs_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenLAs_Item = { + "ForbiddenLAs-Item", + "ForbiddenLAs-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ForbiddenLAs_Item_tags_1, + sizeof(asn_DEF_S1AP_ForbiddenLAs_Item_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenLAs_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ForbiddenLAs_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ForbiddenLAs_Item_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenLAs_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ForbiddenLAs_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_ForbiddenLAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.h b/lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.h new file mode 100644 index 0000000000..2882350bd4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenLAs-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ForbiddenLAs_Item_H_ +#define _S1AP_ForbiddenLAs_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include "S1AP_ForbiddenLACs.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ForbiddenLAs-Item */ +typedef struct S1AP_ForbiddenLAs_Item { + S1AP_PLMNidentity_t pLMN_Identity; + S1AP_ForbiddenLACs_t forbiddenLACs; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ForbiddenLAs_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenLAs_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ForbiddenLAs_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ForbiddenLAs_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ForbiddenLAs_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenLAs.c b/lib/s1ap3/asn1c/S1AP_ForbiddenLAs.c new file mode 100644 index 0000000000..162be48244 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenLAs.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ForbiddenLAs.h" + +#include "S1AP_ForbiddenLAs-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ForbiddenLAs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ForbiddenLAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ForbiddenLAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ForbiddenLAs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ForbiddenLAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ForbiddenLAs_specs_1 = { + sizeof(struct S1AP_ForbiddenLAs), + offsetof(struct S1AP_ForbiddenLAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenLAs = { + "ForbiddenLAs", + "ForbiddenLAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ForbiddenLAs_tags_1, + sizeof(asn_DEF_S1AP_ForbiddenLAs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenLAs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ForbiddenLAs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ForbiddenLAs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenLAs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ForbiddenLAs_constr_1, &asn_PER_type_S1AP_ForbiddenLAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ForbiddenLAs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ForbiddenLAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenLAs.h b/lib/s1ap3/asn1c/S1AP_ForbiddenLAs.h new file mode 100644 index 0000000000..3adaef5254 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenLAs.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ForbiddenLAs_H_ +#define _S1AP_ForbiddenLAs_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ForbiddenLAs_Item; + +/* S1AP_ForbiddenLAs */ +typedef struct S1AP_ForbiddenLAs { + A_SEQUENCE_OF(struct S1AP_ForbiddenLAs_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ForbiddenLAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenLAs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ForbiddenLAs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ForbiddenLAs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ForbiddenLAs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ForbiddenLAs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenTACs.c b/lib/s1ap3/asn1c/S1AP_ForbiddenTACs.c new file mode 100644 index 0000000000..c34f6bc6a2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenTACs.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ForbiddenTACs.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_ForbiddenTACs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..4096)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ForbiddenTACs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 12, 12, 1, 4096 } /* (SIZE(1..4096)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ForbiddenTACs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ForbiddenTACs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ForbiddenTACs_specs_1 = { + sizeof(struct S1AP_ForbiddenTACs), + offsetof(struct S1AP_ForbiddenTACs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenTACs = { + "ForbiddenTACs", + "ForbiddenTACs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ForbiddenTACs_tags_1, + sizeof(asn_DEF_S1AP_ForbiddenTACs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenTACs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ForbiddenTACs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ForbiddenTACs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenTACs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ForbiddenTACs_constr_1, &asn_PER_type_S1AP_ForbiddenTACs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ForbiddenTACs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ForbiddenTACs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenTACs.h b/lib/s1ap3/asn1c/S1AP_ForbiddenTACs.h new file mode 100644 index 0000000000..cf0f2c13a9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenTACs.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ForbiddenTACs_H_ +#define _S1AP_ForbiddenTACs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TAC.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ForbiddenTACs */ +typedef struct S1AP_ForbiddenTACs { + A_SEQUENCE_OF(S1AP_TAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ForbiddenTACs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenTACs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ForbiddenTACs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ForbiddenTACs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ForbiddenTACs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ForbiddenTACs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.c b/lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.c new file mode 100644 index 0000000000..46db349f6d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ForbiddenTAs-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_ForbiddenTAs_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenTAs_Item, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenTAs_Item, forbiddenTACs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ForbiddenTACs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenTACs" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ForbiddenTAs_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P55, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ForbiddenTAs_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ForbiddenTAs_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ForbiddenTAs_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* forbiddenTACs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ForbiddenTAs_Item_specs_1 = { + sizeof(struct S1AP_ForbiddenTAs_Item), + offsetof(struct S1AP_ForbiddenTAs_Item, _asn_ctx), + asn_MAP_S1AP_ForbiddenTAs_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_ForbiddenTAs_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenTAs_Item = { + "ForbiddenTAs-Item", + "ForbiddenTAs-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ForbiddenTAs_Item_tags_1, + sizeof(asn_DEF_S1AP_ForbiddenTAs_Item_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenTAs_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ForbiddenTAs_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ForbiddenTAs_Item_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenTAs_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ForbiddenTAs_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_ForbiddenTAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.h b/lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.h new file mode 100644 index 0000000000..6405ff49dc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenTAs-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ForbiddenTAs_Item_H_ +#define _S1AP_ForbiddenTAs_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include "S1AP_ForbiddenTACs.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ForbiddenTAs-Item */ +typedef struct S1AP_ForbiddenTAs_Item { + S1AP_PLMNidentity_t pLMN_Identity; + S1AP_ForbiddenTACs_t forbiddenTACs; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ForbiddenTAs_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenTAs_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ForbiddenTAs_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ForbiddenTAs_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ForbiddenTAs_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenTAs.c b/lib/s1ap3/asn1c/S1AP_ForbiddenTAs.c new file mode 100644 index 0000000000..84442694d7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenTAs.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ForbiddenTAs.h" + +#include "S1AP_ForbiddenTAs-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ForbiddenTAs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ForbiddenTAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ForbiddenTAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ForbiddenTAs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ForbiddenTAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ForbiddenTAs_specs_1 = { + sizeof(struct S1AP_ForbiddenTAs), + offsetof(struct S1AP_ForbiddenTAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenTAs = { + "ForbiddenTAs", + "ForbiddenTAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ForbiddenTAs_tags_1, + sizeof(asn_DEF_S1AP_ForbiddenTAs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenTAs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ForbiddenTAs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ForbiddenTAs_tags_1) + /sizeof(asn_DEF_S1AP_ForbiddenTAs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ForbiddenTAs_constr_1, &asn_PER_type_S1AP_ForbiddenTAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ForbiddenTAs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ForbiddenTAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ForbiddenTAs.h b/lib/s1ap3/asn1c/S1AP_ForbiddenTAs.h new file mode 100644 index 0000000000..aa4e5b2885 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ForbiddenTAs.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ForbiddenTAs_H_ +#define _S1AP_ForbiddenTAs_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ForbiddenTAs_Item; + +/* S1AP_ForbiddenTAs */ +typedef struct S1AP_ForbiddenTAs { + A_SEQUENCE_OF(struct S1AP_ForbiddenTAs_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ForbiddenTAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenTAs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ForbiddenTAs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ForbiddenTAs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ForbiddenTAs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ForbiddenTAs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_GBR-QosInformation.c b/lib/s1ap3/asn1c/S1AP_GBR-QosInformation.c new file mode 100644 index 0000000000..8237d4a2ee --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GBR-QosInformation.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_GBR-QosInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_GBR_QosInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GBR_QosInformation, e_RAB_MaximumBitrateDL), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-MaximumBitrateDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GBR_QosInformation, e_RAB_MaximumBitrateUL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-MaximumBitrateUL" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GBR_QosInformation, e_RAB_GuaranteedBitrateDL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-GuaranteedBitrateDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GBR_QosInformation, e_RAB_GuaranteedBitrateUL), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-GuaranteedBitrateUL" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_GBR_QosInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P57, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_GBR_QosInformation_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_S1AP_GBR_QosInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_GBR_QosInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-MaximumBitrateDL */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-MaximumBitrateUL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e-RAB-GuaranteedBitrateDL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e-RAB-GuaranteedBitrateUL */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_GBR_QosInformation_specs_1 = { + sizeof(struct S1AP_GBR_QosInformation), + offsetof(struct S1AP_GBR_QosInformation, _asn_ctx), + asn_MAP_S1AP_GBR_QosInformation_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_GBR_QosInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GBR_QosInformation = { + "GBR-QosInformation", + "GBR-QosInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_GBR_QosInformation_tags_1, + sizeof(asn_DEF_S1AP_GBR_QosInformation_tags_1) + /sizeof(asn_DEF_S1AP_GBR_QosInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_GBR_QosInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_GBR_QosInformation_tags_1) + /sizeof(asn_DEF_S1AP_GBR_QosInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_GBR_QosInformation_1, + 5, /* Elements count */ + &asn_SPC_S1AP_GBR_QosInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_GBR-QosInformation.h b/lib/s1ap3/asn1c/S1AP_GBR-QosInformation.h new file mode 100644 index 0000000000..821f7f401a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GBR-QosInformation.h @@ -0,0 +1,51 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_GBR_QosInformation_H_ +#define _S1AP_GBR_QosInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_BitRate.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_GBR-QosInformation */ +typedef struct S1AP_GBR_QosInformation { + S1AP_BitRate_t e_RAB_MaximumBitrateDL; + S1AP_BitRate_t e_RAB_MaximumBitrateUL; + S1AP_BitRate_t e_RAB_GuaranteedBitrateDL; + S1AP_BitRate_t e_RAB_GuaranteedBitrateUL; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_GBR_QosInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GBR_QosInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_GBR_QosInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_GBR_QosInformation_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_GBR_QosInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.c b/lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.c new file mode 100644 index 0000000000..146c4e94f5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_GERAN-Cell-ID.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_GERAN_Cell_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GERAN_Cell_ID, lAI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "lAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GERAN_Cell_ID, rAC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GERAN_Cell_ID, cI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_GERAN_Cell_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P46, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_GERAN_Cell_ID_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_GERAN_Cell_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_GERAN_Cell_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cI */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_GERAN_Cell_ID_specs_1 = { + sizeof(struct S1AP_GERAN_Cell_ID), + offsetof(struct S1AP_GERAN_Cell_ID, _asn_ctx), + asn_MAP_S1AP_GERAN_Cell_ID_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_GERAN_Cell_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GERAN_Cell_ID = { + "GERAN-Cell-ID", + "GERAN-Cell-ID", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_GERAN_Cell_ID_tags_1, + sizeof(asn_DEF_S1AP_GERAN_Cell_ID_tags_1) + /sizeof(asn_DEF_S1AP_GERAN_Cell_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_GERAN_Cell_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_GERAN_Cell_ID_tags_1) + /sizeof(asn_DEF_S1AP_GERAN_Cell_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_GERAN_Cell_ID_1, + 4, /* Elements count */ + &asn_SPC_S1AP_GERAN_Cell_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.h b/lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.h new file mode 100644 index 0000000000..bdabd2a5f3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GERAN-Cell-ID.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_GERAN_Cell_ID_H_ +#define _S1AP_GERAN_Cell_ID_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_LAI.h" +#include "S1AP_RAC.h" +#include "S1AP_CI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_GERAN-Cell-ID */ +typedef struct S1AP_GERAN_Cell_ID { + S1AP_LAI_t lAI; + S1AP_RAC_t rAC; + S1AP_CI_t cI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_GERAN_Cell_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GERAN_Cell_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_GERAN_Cell_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_GERAN_Cell_ID_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_GERAN_Cell_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_GTP-TEID.c b/lib/s1ap3/asn1c/S1AP_GTP-TEID.c new file mode 100644 index 0000000000..a75b85c5de --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GTP-TEID.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_GTP-TEID.h" + +int +S1AP_GTP_TEID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_GTP_TEID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 4 /* (SIZE(4..4)) */}; +asn_per_constraints_t asn_PER_type_S1AP_GTP_TEID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_GTP_TEID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GTP_TEID = { + "GTP-TEID", + "GTP-TEID", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_GTP_TEID_tags_1, + sizeof(asn_DEF_S1AP_GTP_TEID_tags_1) + /sizeof(asn_DEF_S1AP_GTP_TEID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_GTP_TEID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_GTP_TEID_tags_1) + /sizeof(asn_DEF_S1AP_GTP_TEID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_GTP_TEID_constr_1, &asn_PER_type_S1AP_GTP_TEID_constr_1, S1AP_GTP_TEID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_GTP-TEID.h b/lib/s1ap3/asn1c/S1AP_GTP-TEID.h new file mode 100644 index 0000000000..39838fa1b6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GTP-TEID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_GTP_TEID_H_ +#define _S1AP_GTP_TEID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_GTP-TEID */ +typedef OCTET_STRING_t S1AP_GTP_TEID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_GTP_TEID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GTP_TEID; +asn_struct_free_f S1AP_GTP_TEID_free; +asn_struct_print_f S1AP_GTP_TEID_print; +asn_constr_check_f S1AP_GTP_TEID_constraint; +ber_type_decoder_f S1AP_GTP_TEID_decode_ber; +der_type_encoder_f S1AP_GTP_TEID_encode_der; +xer_type_decoder_f S1AP_GTP_TEID_decode_xer; +xer_type_encoder_f S1AP_GTP_TEID_encode_xer; +oer_type_decoder_f S1AP_GTP_TEID_decode_oer; +oer_type_encoder_f S1AP_GTP_TEID_encode_oer; +per_type_decoder_f S1AP_GTP_TEID_decode_uper; +per_type_encoder_f S1AP_GTP_TEID_encode_uper; +per_type_decoder_f S1AP_GTP_TEID_decode_aper; +per_type_encoder_f S1AP_GTP_TEID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_GTP_TEID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_GUMMEI.c b/lib/s1ap3/asn1c/S1AP_GUMMEI.c new file mode 100644 index 0000000000..319497c661 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GUMMEI.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_GUMMEI.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_GUMMEI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GUMMEI, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GUMMEI, mME_Group_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MME_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-Group-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GUMMEI, mME_Code), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MME_Code, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-Code" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_GUMMEI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P58, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_GUMMEI_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_GUMMEI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_GUMMEI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mME-Group-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mME-Code */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_GUMMEI_specs_1 = { + sizeof(struct S1AP_GUMMEI), + offsetof(struct S1AP_GUMMEI, _asn_ctx), + asn_MAP_S1AP_GUMMEI_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_GUMMEI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GUMMEI = { + "GUMMEI", + "GUMMEI", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_GUMMEI_tags_1, + sizeof(asn_DEF_S1AP_GUMMEI_tags_1) + /sizeof(asn_DEF_S1AP_GUMMEI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_GUMMEI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_GUMMEI_tags_1) + /sizeof(asn_DEF_S1AP_GUMMEI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_GUMMEI_1, + 4, /* Elements count */ + &asn_SPC_S1AP_GUMMEI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_GUMMEI.h b/lib/s1ap3/asn1c/S1AP_GUMMEI.h new file mode 100644 index 0000000000..518d4b454a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GUMMEI.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_GUMMEI_H_ +#define _S1AP_GUMMEI_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include "S1AP_MME-Group-ID.h" +#include "S1AP_MME-Code.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_GUMMEI */ +typedef struct S1AP_GUMMEI { + S1AP_PLMNidentity_t pLMN_Identity; + S1AP_MME_Group_ID_t mME_Group_ID; + S1AP_MME_Code_t mME_Code; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_GUMMEI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GUMMEI; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_GUMMEI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_GUMMEI_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_GUMMEI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_GUMMEIList.c b/lib/s1ap3/asn1c/S1AP_GUMMEIList.c new file mode 100644 index 0000000000..595773c754 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GUMMEIList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_GUMMEIList.h" + +#include "S1AP_GUMMEI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_GUMMEIList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_GUMMEIList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_GUMMEIList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_GUMMEIList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_GUMMEIList_specs_1 = { + sizeof(struct S1AP_GUMMEIList), + offsetof(struct S1AP_GUMMEIList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GUMMEIList = { + "GUMMEIList", + "GUMMEIList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_GUMMEIList_tags_1, + sizeof(asn_DEF_S1AP_GUMMEIList_tags_1) + /sizeof(asn_DEF_S1AP_GUMMEIList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_GUMMEIList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_GUMMEIList_tags_1) + /sizeof(asn_DEF_S1AP_GUMMEIList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_GUMMEIList_constr_1, &asn_PER_type_S1AP_GUMMEIList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_GUMMEIList_1, + 1, /* Single element */ + &asn_SPC_S1AP_GUMMEIList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_GUMMEIList.h b/lib/s1ap3/asn1c/S1AP_GUMMEIList.h new file mode 100644 index 0000000000..c0c678bebf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GUMMEIList.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_GUMMEIList_H_ +#define _S1AP_GUMMEIList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_GUMMEI; + +/* S1AP_GUMMEIList */ +typedef struct S1AP_GUMMEIList { + A_SEQUENCE_OF(struct S1AP_GUMMEI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_GUMMEIList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GUMMEIList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_GUMMEIList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_GUMMEIType.c b/lib/s1ap3/asn1c/S1AP_GUMMEIType.c new file mode 100644 index 0000000000..517efe4539 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GUMMEIType.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_GUMMEIType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_GUMMEIType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_GUMMEIType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_GUMMEIType_value2enum_1[] = { + { 0, 6, "native" }, + { 1, 6, "mapped" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_GUMMEIType_enum2value_1[] = { + 1, /* mapped(1) */ + 0 /* native(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_GUMMEIType_specs_1 = { + asn_MAP_S1AP_GUMMEIType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_GUMMEIType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_GUMMEIType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GUMMEIType = { + "GUMMEIType", + "GUMMEIType", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_GUMMEIType_tags_1, + sizeof(asn_DEF_S1AP_GUMMEIType_tags_1) + /sizeof(asn_DEF_S1AP_GUMMEIType_tags_1[0]), /* 1 */ + asn_DEF_S1AP_GUMMEIType_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_GUMMEIType_tags_1) + /sizeof(asn_DEF_S1AP_GUMMEIType_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_GUMMEIType_constr_1, &asn_PER_type_S1AP_GUMMEIType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_GUMMEIType_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_GUMMEIType.h b/lib/s1ap3/asn1c/S1AP_GUMMEIType.h new file mode 100644 index 0000000000..f05165e1a9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GUMMEIType.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_GUMMEIType_H_ +#define _S1AP_GUMMEIType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_GUMMEIType { + S1AP_GUMMEIType_native = 0, + S1AP_GUMMEIType_mapped = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_GUMMEIType; + +/* S1AP_GUMMEIType */ +typedef long S1AP_GUMMEIType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GUMMEIType; +asn_struct_free_f S1AP_GUMMEIType_free; +asn_struct_print_f S1AP_GUMMEIType_print; +asn_constr_check_f S1AP_GUMMEIType_constraint; +ber_type_decoder_f S1AP_GUMMEIType_decode_ber; +der_type_encoder_f S1AP_GUMMEIType_encode_der; +xer_type_decoder_f S1AP_GUMMEIType_decode_xer; +xer_type_encoder_f S1AP_GUMMEIType_encode_xer; +oer_type_decoder_f S1AP_GUMMEIType_decode_oer; +oer_type_encoder_f S1AP_GUMMEIType_encode_oer; +per_type_decoder_f S1AP_GUMMEIType_decode_uper; +per_type_encoder_f S1AP_GUMMEIType_encode_uper; +per_type_decoder_f S1AP_GUMMEIType_decode_aper; +per_type_encoder_f S1AP_GUMMEIType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_GUMMEIType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_GWContextReleaseIndication.c b/lib/s1ap3/asn1c/S1AP_GWContextReleaseIndication.c new file mode 100644 index 0000000000..bd3819be17 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GWContextReleaseIndication.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_GWContextReleaseIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_GWContextReleaseIndication_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_GWContextReleaseIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_GWContextReleaseIndication_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_GWContextReleaseIndication_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_GWContextReleaseIndication_specs_1 = { + asn_MAP_S1AP_GWContextReleaseIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_GWContextReleaseIndication_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_GWContextReleaseIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GWContextReleaseIndication = { + "GWContextReleaseIndication", + "GWContextReleaseIndication", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_GWContextReleaseIndication_tags_1, + sizeof(asn_DEF_S1AP_GWContextReleaseIndication_tags_1) + /sizeof(asn_DEF_S1AP_GWContextReleaseIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_GWContextReleaseIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_GWContextReleaseIndication_tags_1) + /sizeof(asn_DEF_S1AP_GWContextReleaseIndication_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_GWContextReleaseIndication_constr_1, &asn_PER_type_S1AP_GWContextReleaseIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_GWContextReleaseIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_GWContextReleaseIndication.h b/lib/s1ap3/asn1c/S1AP_GWContextReleaseIndication.h new file mode 100644 index 0000000000..75e8e77c1d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_GWContextReleaseIndication.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_GWContextReleaseIndication_H_ +#define _S1AP_GWContextReleaseIndication_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_GWContextReleaseIndication { + S1AP_GWContextReleaseIndication_true = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_GWContextReleaseIndication; + +/* S1AP_GWContextReleaseIndication */ +typedef long S1AP_GWContextReleaseIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GWContextReleaseIndication; +asn_struct_free_f S1AP_GWContextReleaseIndication_free; +asn_struct_print_f S1AP_GWContextReleaseIndication_print; +asn_constr_check_f S1AP_GWContextReleaseIndication_constraint; +ber_type_decoder_f S1AP_GWContextReleaseIndication_decode_ber; +der_type_encoder_f S1AP_GWContextReleaseIndication_encode_der; +xer_type_decoder_f S1AP_GWContextReleaseIndication_decode_xer; +xer_type_encoder_f S1AP_GWContextReleaseIndication_encode_xer; +oer_type_decoder_f S1AP_GWContextReleaseIndication_decode_oer; +oer_type_encoder_f S1AP_GWContextReleaseIndication_encode_oer; +per_type_decoder_f S1AP_GWContextReleaseIndication_decode_uper; +per_type_encoder_f S1AP_GWContextReleaseIndication_encode_uper; +per_type_decoder_f S1AP_GWContextReleaseIndication_decode_aper; +per_type_encoder_f S1AP_GWContextReleaseIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_GWContextReleaseIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Global-ENB-ID.c b/lib/s1ap3/asn1c/S1AP_Global-ENB-ID.c new file mode 100644 index 0000000000..7290e00913 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Global-ENB-ID.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Global-ENB-ID.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_Global_ENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Global_ENB_ID, pLMNidentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNidentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Global_ENB_ID, eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_Global_ENB_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P47, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_Global_ENB_ID_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_Global_ENB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Global_ENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_Global_ENB_ID_specs_1 = { + sizeof(struct S1AP_Global_ENB_ID), + offsetof(struct S1AP_Global_ENB_ID, _asn_ctx), + asn_MAP_S1AP_Global_ENB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_Global_ENB_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Global_ENB_ID = { + "Global-ENB-ID", + "Global-ENB-ID", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Global_ENB_ID_tags_1, + sizeof(asn_DEF_S1AP_Global_ENB_ID_tags_1) + /sizeof(asn_DEF_S1AP_Global_ENB_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Global_ENB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Global_ENB_ID_tags_1) + /sizeof(asn_DEF_S1AP_Global_ENB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Global_ENB_ID_1, + 3, /* Elements count */ + &asn_SPC_S1AP_Global_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Global-ENB-ID.h b/lib/s1ap3/asn1c/S1AP_Global-ENB-ID.h new file mode 100644 index 0000000000..a2340ffa86 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Global-ENB-ID.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Global_ENB_ID_H_ +#define _S1AP_Global_ENB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include "S1AP_ENB-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_Global-ENB-ID */ +typedef struct S1AP_Global_ENB_ID { + S1AP_PLMNidentity_t pLMNidentity; + S1AP_ENB_ID_t eNB_ID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Global_ENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Global_ENB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_Global_ENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_Global_ENB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Global_ENB_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HFN.c b/lib/s1ap3/asn1c/S1AP_HFN.c new file mode 100644 index 0000000000..8c49baa11e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HFN.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HFN.h" + +int +S1AP_HFN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1048575)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_HFN_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..1048575) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_HFN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 20, -1, 0, 1048575 } /* (0..1048575) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HFN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HFN = { + "HFN", + "HFN", + &asn_OP_NativeInteger, + asn_DEF_S1AP_HFN_tags_1, + sizeof(asn_DEF_S1AP_HFN_tags_1) + /sizeof(asn_DEF_S1AP_HFN_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HFN_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HFN_tags_1) + /sizeof(asn_DEF_S1AP_HFN_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_HFN_constr_1, &asn_PER_type_S1AP_HFN_constr_1, S1AP_HFN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HFN.h b/lib/s1ap3/asn1c/S1AP_HFN.h new file mode 100644 index 0000000000..15da2e68b3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HFN.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HFN_H_ +#define _S1AP_HFN_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HFN */ +typedef long S1AP_HFN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_HFN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HFN; +asn_struct_free_f S1AP_HFN_free; +asn_struct_print_f S1AP_HFN_print; +asn_constr_check_f S1AP_HFN_constraint; +ber_type_decoder_f S1AP_HFN_decode_ber; +der_type_encoder_f S1AP_HFN_encode_der; +xer_type_decoder_f S1AP_HFN_decode_xer; +xer_type_encoder_f S1AP_HFN_encode_xer; +oer_type_decoder_f S1AP_HFN_decode_oer; +oer_type_encoder_f S1AP_HFN_encode_oer; +per_type_decoder_f S1AP_HFN_decode_uper; +per_type_encoder_f S1AP_HFN_encode_uper; +per_type_decoder_f S1AP_HFN_decode_aper; +per_type_encoder_f S1AP_HFN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HFN_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HFNModified.c b/lib/s1ap3/asn1c/S1AP_HFNModified.c new file mode 100644 index 0000000000..d4a3e41237 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HFNModified.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HFNModified.h" + +int +S1AP_HFNModified_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 131071)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_HFNModified_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..131071) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_HFNModified_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 17, -1, 0, 131071 } /* (0..131071) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HFNModified_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HFNModified = { + "HFNModified", + "HFNModified", + &asn_OP_NativeInteger, + asn_DEF_S1AP_HFNModified_tags_1, + sizeof(asn_DEF_S1AP_HFNModified_tags_1) + /sizeof(asn_DEF_S1AP_HFNModified_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HFNModified_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HFNModified_tags_1) + /sizeof(asn_DEF_S1AP_HFNModified_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_HFNModified_constr_1, &asn_PER_type_S1AP_HFNModified_constr_1, S1AP_HFNModified_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HFNModified.h b/lib/s1ap3/asn1c/S1AP_HFNModified.h new file mode 100644 index 0000000000..3d55623420 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HFNModified.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HFNModified_H_ +#define _S1AP_HFNModified_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HFNModified */ +typedef long S1AP_HFNModified_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_HFNModified_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HFNModified; +asn_struct_free_f S1AP_HFNModified_free; +asn_struct_print_f S1AP_HFNModified_print; +asn_constr_check_f S1AP_HFNModified_constraint; +ber_type_decoder_f S1AP_HFNModified_decode_ber; +der_type_encoder_f S1AP_HFNModified_encode_der; +xer_type_decoder_f S1AP_HFNModified_decode_xer; +xer_type_encoder_f S1AP_HFNModified_encode_xer; +oer_type_decoder_f S1AP_HFNModified_decode_oer; +oer_type_encoder_f S1AP_HFNModified_encode_oer; +per_type_decoder_f S1AP_HFNModified_decode_uper; +per_type_encoder_f S1AP_HFNModified_encode_uper; +per_type_decoder_f S1AP_HFNModified_decode_aper; +per_type_encoder_f S1AP_HFNModified_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HFNModified_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.c b/lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.c new file mode 100644 index 0000000000..24e52d097b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HFNforPDCP-SNlength18.h" + +int +S1AP_HFNforPDCP_SNlength18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 16383)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_HFNforPDCP_SNlength18_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..16383) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_HFNforPDCP_SNlength18_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 0, 16383 } /* (0..16383) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HFNforPDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HFNforPDCP_SNlength18 = { + "HFNforPDCP-SNlength18", + "HFNforPDCP-SNlength18", + &asn_OP_NativeInteger, + asn_DEF_S1AP_HFNforPDCP_SNlength18_tags_1, + sizeof(asn_DEF_S1AP_HFNforPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_S1AP_HFNforPDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HFNforPDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HFNforPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_S1AP_HFNforPDCP_SNlength18_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_HFNforPDCP_SNlength18_constr_1, &asn_PER_type_S1AP_HFNforPDCP_SNlength18_constr_1, S1AP_HFNforPDCP_SNlength18_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.h b/lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.h new file mode 100644 index 0000000000..42e97454f5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HFNforPDCP-SNlength18.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HFNforPDCP_SNlength18_H_ +#define _S1AP_HFNforPDCP_SNlength18_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HFNforPDCP-SNlength18 */ +typedef long S1AP_HFNforPDCP_SNlength18_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_HFNforPDCP_SNlength18_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HFNforPDCP_SNlength18; +asn_struct_free_f S1AP_HFNforPDCP_SNlength18_free; +asn_struct_print_f S1AP_HFNforPDCP_SNlength18_print; +asn_constr_check_f S1AP_HFNforPDCP_SNlength18_constraint; +ber_type_decoder_f S1AP_HFNforPDCP_SNlength18_decode_ber; +der_type_encoder_f S1AP_HFNforPDCP_SNlength18_encode_der; +xer_type_decoder_f S1AP_HFNforPDCP_SNlength18_decode_xer; +xer_type_encoder_f S1AP_HFNforPDCP_SNlength18_encode_xer; +oer_type_decoder_f S1AP_HFNforPDCP_SNlength18_decode_oer; +oer_type_encoder_f S1AP_HFNforPDCP_SNlength18_encode_oer; +per_type_decoder_f S1AP_HFNforPDCP_SNlength18_decode_uper; +per_type_encoder_f S1AP_HFNforPDCP_SNlength18_encode_uper; +per_type_decoder_f S1AP_HFNforPDCP_SNlength18_decode_aper; +per_type_encoder_f S1AP_HFNforPDCP_SNlength18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HFNforPDCP_SNlength18_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverCancel.c b/lib/s1ap3/asn1c/S1AP_HandoverCancel.c new file mode 100644 index 0000000000..320c302197 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverCancel.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverCancel.h" + +asn_TYPE_member_t asn_MBR_S1AP_HandoverCancel_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancel, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverCancel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverCancel_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCancel_specs_1 = { + sizeof(struct S1AP_HandoverCancel), + offsetof(struct S1AP_HandoverCancel, _asn_ctx), + asn_MAP_S1AP_HandoverCancel_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCancel = { + "HandoverCancel", + "HandoverCancel", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverCancel_tags_1, + sizeof(asn_DEF_S1AP_HandoverCancel_tags_1) + /sizeof(asn_DEF_S1AP_HandoverCancel_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverCancel_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverCancel_tags_1) + /sizeof(asn_DEF_S1AP_HandoverCancel_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverCancel_1, + 1, /* Elements count */ + &asn_SPC_S1AP_HandoverCancel_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverCancel.h b/lib/s1ap3/asn1c/S1AP_HandoverCancel.h new file mode 100644 index 0000000000..e0cd4cedb6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverCancel.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverCancel_H_ +#define _S1AP_HandoverCancel_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HandoverCancel */ +typedef struct S1AP_HandoverCancel { + S1AP_ProtocolIE_Container_6551P10_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverCancel_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCancel; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCancel_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverCancel_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverCancel_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverCancelAcknowledge.c b/lib/s1ap3/asn1c/S1AP_HandoverCancelAcknowledge.c new file mode 100644 index 0000000000..67e0050318 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverCancelAcknowledge.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverCancelAcknowledge.h" + +asn_TYPE_member_t asn_MBR_S1AP_HandoverCancelAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverCancelAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverCancelAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCancelAcknowledge_specs_1 = { + sizeof(struct S1AP_HandoverCancelAcknowledge), + offsetof(struct S1AP_HandoverCancelAcknowledge, _asn_ctx), + asn_MAP_S1AP_HandoverCancelAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCancelAcknowledge = { + "HandoverCancelAcknowledge", + "HandoverCancelAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverCancelAcknowledge_tags_1, + sizeof(asn_DEF_S1AP_HandoverCancelAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_HandoverCancelAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverCancelAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverCancelAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_HandoverCancelAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverCancelAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1AP_HandoverCancelAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverCancelAcknowledge.h b/lib/s1ap3/asn1c/S1AP_HandoverCancelAcknowledge.h new file mode 100644 index 0000000000..91073e4a8d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverCancelAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverCancelAcknowledge_H_ +#define _S1AP_HandoverCancelAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HandoverCancelAcknowledge */ +typedef struct S1AP_HandoverCancelAcknowledge { + S1AP_ProtocolIE_Container_6551P11_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverCancelAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCancelAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCancelAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverCancelAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverCancelAcknowledge_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverCommand.c b/lib/s1ap3/asn1c/S1AP_HandoverCommand.c new file mode 100644 index 0000000000..a50aab1d2e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverCommand.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverCommand.h" + +asn_TYPE_member_t asn_MBR_S1AP_HandoverCommand_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommand, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverCommand_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverCommand_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCommand_specs_1 = { + sizeof(struct S1AP_HandoverCommand), + offsetof(struct S1AP_HandoverCommand, _asn_ctx), + asn_MAP_S1AP_HandoverCommand_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCommand = { + "HandoverCommand", + "HandoverCommand", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverCommand_tags_1, + sizeof(asn_DEF_S1AP_HandoverCommand_tags_1) + /sizeof(asn_DEF_S1AP_HandoverCommand_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverCommand_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverCommand_tags_1) + /sizeof(asn_DEF_S1AP_HandoverCommand_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverCommand_1, + 1, /* Elements count */ + &asn_SPC_S1AP_HandoverCommand_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverCommand.h b/lib/s1ap3/asn1c/S1AP_HandoverCommand.h new file mode 100644 index 0000000000..82fd126785 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverCommand.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverCommand_H_ +#define _S1AP_HandoverCommand_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HandoverCommand */ +typedef struct S1AP_HandoverCommand { + S1AP_ProtocolIE_Container_6551P1_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverCommand_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCommand; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCommand_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverCommand_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverCommand_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverFailure.c b/lib/s1ap3/asn1c/S1AP_HandoverFailure.c new file mode 100644 index 0000000000..8fd9edb5ab --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverFailure.h" + +asn_TYPE_member_t asn_MBR_S1AP_HandoverFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverFailure_specs_1 = { + sizeof(struct S1AP_HandoverFailure), + offsetof(struct S1AP_HandoverFailure, _asn_ctx), + asn_MAP_S1AP_HandoverFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverFailure = { + "HandoverFailure", + "HandoverFailure", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverFailure_tags_1, + sizeof(asn_DEF_S1AP_HandoverFailure_tags_1) + /sizeof(asn_DEF_S1AP_HandoverFailure_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverFailure_tags_1) + /sizeof(asn_DEF_S1AP_HandoverFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverFailure_1, + 1, /* Elements count */ + &asn_SPC_S1AP_HandoverFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverFailure.h b/lib/s1ap3/asn1c/S1AP_HandoverFailure.h new file mode 100644 index 0000000000..d9e6a56c30 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverFailure_H_ +#define _S1AP_HandoverFailure_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HandoverFailure */ +typedef struct S1AP_HandoverFailure { + S1AP_ProtocolIE_Container_6551P5_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverFailure_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverNotify.c b/lib/s1ap3/asn1c/S1AP_HandoverNotify.c new file mode 100644 index 0000000000..25648fcb32 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverNotify.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverNotify.h" + +asn_TYPE_member_t asn_MBR_S1AP_HandoverNotify_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotify, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverNotify_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverNotify_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverNotify_specs_1 = { + sizeof(struct S1AP_HandoverNotify), + offsetof(struct S1AP_HandoverNotify, _asn_ctx), + asn_MAP_S1AP_HandoverNotify_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverNotify = { + "HandoverNotify", + "HandoverNotify", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverNotify_tags_1, + sizeof(asn_DEF_S1AP_HandoverNotify_tags_1) + /sizeof(asn_DEF_S1AP_HandoverNotify_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverNotify_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverNotify_tags_1) + /sizeof(asn_DEF_S1AP_HandoverNotify_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverNotify_1, + 1, /* Elements count */ + &asn_SPC_S1AP_HandoverNotify_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverNotify.h b/lib/s1ap3/asn1c/S1AP_HandoverNotify.h new file mode 100644 index 0000000000..99b5edf38c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverNotify.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverNotify_H_ +#define _S1AP_HandoverNotify_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HandoverNotify */ +typedef struct S1AP_HandoverNotify { + S1AP_ProtocolIE_Container_6551P6_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverNotify_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverNotify; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverNotify_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverNotify_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverNotify_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverPreparationFailure.c b/lib/s1ap3/asn1c/S1AP_HandoverPreparationFailure.c new file mode 100644 index 0000000000..eb13454b32 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverPreparationFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverPreparationFailure.h" + +asn_TYPE_member_t asn_MBR_S1AP_HandoverPreparationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverPreparationFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverPreparationFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverPreparationFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverPreparationFailure_specs_1 = { + sizeof(struct S1AP_HandoverPreparationFailure), + offsetof(struct S1AP_HandoverPreparationFailure, _asn_ctx), + asn_MAP_S1AP_HandoverPreparationFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverPreparationFailure = { + "HandoverPreparationFailure", + "HandoverPreparationFailure", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverPreparationFailure_tags_1, + sizeof(asn_DEF_S1AP_HandoverPreparationFailure_tags_1) + /sizeof(asn_DEF_S1AP_HandoverPreparationFailure_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverPreparationFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverPreparationFailure_tags_1) + /sizeof(asn_DEF_S1AP_HandoverPreparationFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverPreparationFailure_1, + 1, /* Elements count */ + &asn_SPC_S1AP_HandoverPreparationFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverPreparationFailure.h b/lib/s1ap3/asn1c/S1AP_HandoverPreparationFailure.h new file mode 100644 index 0000000000..d983b2397f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverPreparationFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverPreparationFailure_H_ +#define _S1AP_HandoverPreparationFailure_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HandoverPreparationFailure */ +typedef struct S1AP_HandoverPreparationFailure { + S1AP_ProtocolIE_Container_6551P2_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverPreparationFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverPreparationFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverPreparationFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverPreparationFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverPreparationFailure_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverRequest.c b/lib/s1ap3/asn1c/S1AP_HandoverRequest.c new file mode 100644 index 0000000000..a861bc6551 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_HandoverRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequest_specs_1 = { + sizeof(struct S1AP_HandoverRequest), + offsetof(struct S1AP_HandoverRequest, _asn_ctx), + asn_MAP_S1AP_HandoverRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequest = { + "HandoverRequest", + "HandoverRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverRequest_tags_1, + sizeof(asn_DEF_S1AP_HandoverRequest_tags_1) + /sizeof(asn_DEF_S1AP_HandoverRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverRequest_tags_1) + /sizeof(asn_DEF_S1AP_HandoverRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_HandoverRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverRequest.h b/lib/s1ap3/asn1c/S1AP_HandoverRequest.h new file mode 100644 index 0000000000..3501074dc0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverRequest_H_ +#define _S1AP_HandoverRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HandoverRequest */ +typedef struct S1AP_HandoverRequest { + S1AP_ProtocolIE_Container_6551P3_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverRequestAcknowledge.c b/lib/s1ap3/asn1c/S1AP_HandoverRequestAcknowledge.c new file mode 100644 index 0000000000..7d844a04be --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverRequestAcknowledge.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverRequestAcknowledge.h" + +asn_TYPE_member_t asn_MBR_S1AP_HandoverRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequestAcknowledge_specs_1 = { + sizeof(struct S1AP_HandoverRequestAcknowledge), + offsetof(struct S1AP_HandoverRequestAcknowledge, _asn_ctx), + asn_MAP_S1AP_HandoverRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequestAcknowledge = { + "HandoverRequestAcknowledge", + "HandoverRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverRequestAcknowledge_tags_1, + sizeof(asn_DEF_S1AP_HandoverRequestAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_HandoverRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverRequestAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_HandoverRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1AP_HandoverRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverRequestAcknowledge.h b/lib/s1ap3/asn1c/S1AP_HandoverRequestAcknowledge.h new file mode 100644 index 0000000000..befab16185 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverRequestAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverRequestAcknowledge_H_ +#define _S1AP_HandoverRequestAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HandoverRequestAcknowledge */ +typedef struct S1AP_HandoverRequestAcknowledge { + S1AP_ProtocolIE_Container_6551P4_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequestAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequestAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverRequestAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverRequestAcknowledge_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverRequired.c b/lib/s1ap3/asn1c/S1AP_HandoverRequired.c new file mode 100644 index 0000000000..19164c46f2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverRequired.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverRequired.h" + +asn_TYPE_member_t asn_MBR_S1AP_HandoverRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequired_specs_1 = { + sizeof(struct S1AP_HandoverRequired), + offsetof(struct S1AP_HandoverRequired, _asn_ctx), + asn_MAP_S1AP_HandoverRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequired = { + "HandoverRequired", + "HandoverRequired", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverRequired_tags_1, + sizeof(asn_DEF_S1AP_HandoverRequired_tags_1) + /sizeof(asn_DEF_S1AP_HandoverRequired_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverRequired_tags_1) + /sizeof(asn_DEF_S1AP_HandoverRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverRequired_1, + 1, /* Elements count */ + &asn_SPC_S1AP_HandoverRequired_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverRequired.h b/lib/s1ap3/asn1c/S1AP_HandoverRequired.h new file mode 100644 index 0000000000..8c3155f8a7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverRequired.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverRequired_H_ +#define _S1AP_HandoverRequired_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_HandoverRequired */ +typedef struct S1AP_HandoverRequired { + S1AP_ProtocolIE_Container_6551P0_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequired; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequired_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverRequired_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverRequired_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverRestrictionList.c b/lib/s1ap3/asn1c/S1AP_HandoverRestrictionList.c new file mode 100644 index 0000000000..d16ae00e06 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverRestrictionList.c @@ -0,0 +1,106 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverRestrictionList.h" + +#include "S1AP_EPLMNs.h" +#include "S1AP_ForbiddenTAs.h" +#include "S1AP_ForbiddenLAs.h" +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_HandoverRestrictionList_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRestrictionList, servingPLMN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servingPLMN" + }, + { ATF_POINTER, 5, offsetof(struct S1AP_HandoverRestrictionList, equivalentPLMNs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EPLMNs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "equivalentPLMNs" + }, + { ATF_POINTER, 4, offsetof(struct S1AP_HandoverRestrictionList, forbiddenTAs), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ForbiddenTAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenTAs" + }, + { ATF_POINTER, 3, offsetof(struct S1AP_HandoverRestrictionList, forbiddenLAs), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ForbiddenLAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenLAs" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_HandoverRestrictionList, forbiddenInterRATs), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ForbiddenInterRATs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenInterRATs" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_HandoverRestrictionList, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P59, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_HandoverRestrictionList_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverRestrictionList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverRestrictionList_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servingPLMN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* equivalentPLMNs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* forbiddenTAs */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* forbiddenLAs */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* forbiddenInterRATs */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRestrictionList_specs_1 = { + sizeof(struct S1AP_HandoverRestrictionList), + offsetof(struct S1AP_HandoverRestrictionList, _asn_ctx), + asn_MAP_S1AP_HandoverRestrictionList_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_HandoverRestrictionList_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRestrictionList = { + "HandoverRestrictionList", + "HandoverRestrictionList", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverRestrictionList_tags_1, + sizeof(asn_DEF_S1AP_HandoverRestrictionList_tags_1) + /sizeof(asn_DEF_S1AP_HandoverRestrictionList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverRestrictionList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverRestrictionList_tags_1) + /sizeof(asn_DEF_S1AP_HandoverRestrictionList_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverRestrictionList_1, + 6, /* Elements count */ + &asn_SPC_S1AP_HandoverRestrictionList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverRestrictionList.h b/lib/s1ap3/asn1c/S1AP_HandoverRestrictionList.h new file mode 100644 index 0000000000..63bff0481f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverRestrictionList.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverRestrictionList_H_ +#define _S1AP_HandoverRestrictionList_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include "S1AP_ForbiddenInterRATs.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_EPLMNs; +struct S1AP_ForbiddenTAs; +struct S1AP_ForbiddenLAs; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_HandoverRestrictionList */ +typedef struct S1AP_HandoverRestrictionList { + S1AP_PLMNidentity_t servingPLMN; + struct S1AP_EPLMNs *equivalentPLMNs; /* OPTIONAL */ + struct S1AP_ForbiddenTAs *forbiddenTAs; /* OPTIONAL */ + struct S1AP_ForbiddenLAs *forbiddenLAs; /* OPTIONAL */ + S1AP_ForbiddenInterRATs_t *forbiddenInterRATs; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverRestrictionList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRestrictionList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverRestrictionList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_HandoverType.c b/lib/s1ap3/asn1c/S1AP_HandoverType.c new file mode 100644 index 0000000000..96eea6aef7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverType.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_HandoverType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_HandoverType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_HandoverType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_HandoverType_value2enum_1[] = { + { 0, 8, "intralte" }, + { 1, 10, "ltetoutran" }, + { 2, 10, "ltetogeran" }, + { 3, 10, "utrantolte" }, + { 4, 10, "gerantolte" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_HandoverType_enum2value_1[] = { + 4, /* gerantolte(4) */ + 0, /* intralte(0) */ + 2, /* ltetogeran(2) */ + 1, /* ltetoutran(1) */ + 3 /* utrantolte(3) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_HandoverType_specs_1 = { + asn_MAP_S1AP_HandoverType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_HandoverType_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverType = { + "HandoverType", + "HandoverType", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_HandoverType_tags_1, + sizeof(asn_DEF_S1AP_HandoverType_tags_1) + /sizeof(asn_DEF_S1AP_HandoverType_tags_1[0]), /* 1 */ + asn_DEF_S1AP_HandoverType_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverType_tags_1) + /sizeof(asn_DEF_S1AP_HandoverType_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_HandoverType_constr_1, &asn_PER_type_S1AP_HandoverType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_HandoverType_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_HandoverType.h b/lib/s1ap3/asn1c/S1AP_HandoverType.h new file mode 100644 index 0000000000..77a9494897 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_HandoverType.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_HandoverType_H_ +#define _S1AP_HandoverType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_HandoverType { + S1AP_HandoverType_intralte = 0, + S1AP_HandoverType_ltetoutran = 1, + S1AP_HandoverType_ltetogeran = 2, + S1AP_HandoverType_utrantolte = 3, + S1AP_HandoverType_gerantolte = 4 + /* + * Enumeration is extensible + */ +} e_S1AP_HandoverType; + +/* S1AP_HandoverType */ +typedef long S1AP_HandoverType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverType; +asn_struct_free_f S1AP_HandoverType_free; +asn_struct_print_f S1AP_HandoverType_print; +asn_constr_check_f S1AP_HandoverType_constraint; +ber_type_decoder_f S1AP_HandoverType_decode_ber; +der_type_encoder_f S1AP_HandoverType_encode_der; +xer_type_decoder_f S1AP_HandoverType_decode_xer; +xer_type_encoder_f S1AP_HandoverType_encode_xer; +oer_type_decoder_f S1AP_HandoverType_decode_oer; +oer_type_encoder_f S1AP_HandoverType_encode_oer; +per_type_decoder_f S1AP_HandoverType_decode_uper; +per_type_encoder_f S1AP_HandoverType_encode_uper; +per_type_decoder_f S1AP_HandoverType_decode_aper; +per_type_encoder_f S1AP_HandoverType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_HandoverType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_IMSI.c b/lib/s1ap3/asn1c/S1AP_IMSI.c new file mode 100644 index 0000000000..14061caeb6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_IMSI.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_IMSI.h" + +int +S1AP_IMSI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 3 && size <= 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_IMSI_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(3..8)) */}; +asn_per_constraints_t asn_PER_type_S1AP_IMSI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 3, 8 } /* (SIZE(3..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_IMSI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_IMSI = { + "IMSI", + "IMSI", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_IMSI_tags_1, + sizeof(asn_DEF_S1AP_IMSI_tags_1) + /sizeof(asn_DEF_S1AP_IMSI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_IMSI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_IMSI_tags_1) + /sizeof(asn_DEF_S1AP_IMSI_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_IMSI_constr_1, &asn_PER_type_S1AP_IMSI_constr_1, S1AP_IMSI_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_IMSI.h b/lib/s1ap3/asn1c/S1AP_IMSI.h new file mode 100644 index 0000000000..2a5b8b8906 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_IMSI.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_IMSI_H_ +#define _S1AP_IMSI_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_IMSI */ +typedef OCTET_STRING_t S1AP_IMSI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_IMSI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_IMSI; +asn_struct_free_f S1AP_IMSI_free; +asn_struct_print_f S1AP_IMSI_print; +asn_constr_check_f S1AP_IMSI_constraint; +ber_type_decoder_f S1AP_IMSI_decode_ber; +der_type_encoder_f S1AP_IMSI_encode_der; +xer_type_decoder_f S1AP_IMSI_decode_xer; +xer_type_encoder_f S1AP_IMSI_encode_xer; +oer_type_decoder_f S1AP_IMSI_decode_oer; +oer_type_encoder_f S1AP_IMSI_encode_oer; +per_type_decoder_f S1AP_IMSI_decode_uper; +per_type_encoder_f S1AP_IMSI_encode_uper; +per_type_decoder_f S1AP_IMSI_decode_aper; +per_type_encoder_f S1AP_IMSI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_IMSI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ImmediateMDT.c b/lib/s1ap3/asn1c/S1AP_ImmediateMDT.c new file mode 100644 index 0000000000..e755ed6b5b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ImmediateMDT.c @@ -0,0 +1,95 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ImmediateMDT.h" + +#include "S1AP_M1ThresholdEventA2.h" +#include "S1AP_M1PeriodicReporting.h" +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_ImmediateMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT, measurementsToActivate), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MeasurementsToActivate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementsToActivate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT, m1reportingTrigger), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M1ReportingTrigger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m1reportingTrigger" + }, + { ATF_POINTER, 3, offsetof(struct S1AP_ImmediateMDT, m1thresholdeventA2), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M1ThresholdEventA2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m1thresholdeventA2" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_ImmediateMDT, m1periodicReporting), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M1PeriodicReporting, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m1periodicReporting" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ImmediateMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P60, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ImmediateMDT_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ImmediateMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ImmediateMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementsToActivate */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m1reportingTrigger */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* m1thresholdeventA2 */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m1periodicReporting */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ImmediateMDT_specs_1 = { + sizeof(struct S1AP_ImmediateMDT), + offsetof(struct S1AP_ImmediateMDT, _asn_ctx), + asn_MAP_S1AP_ImmediateMDT_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_ImmediateMDT_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ImmediateMDT = { + "ImmediateMDT", + "ImmediateMDT", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ImmediateMDT_tags_1, + sizeof(asn_DEF_S1AP_ImmediateMDT_tags_1) + /sizeof(asn_DEF_S1AP_ImmediateMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ImmediateMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ImmediateMDT_tags_1) + /sizeof(asn_DEF_S1AP_ImmediateMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ImmediateMDT_1, + 5, /* Elements count */ + &asn_SPC_S1AP_ImmediateMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ImmediateMDT.h b/lib/s1ap3/asn1c/S1AP_ImmediateMDT.h new file mode 100644 index 0000000000..52640afdf1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ImmediateMDT.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ImmediateMDT_H_ +#define _S1AP_ImmediateMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MeasurementsToActivate.h" +#include "S1AP_M1ReportingTrigger.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_M1ThresholdEventA2; +struct S1AP_M1PeriodicReporting; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ImmediateMDT */ +typedef struct S1AP_ImmediateMDT { + S1AP_MeasurementsToActivate_t measurementsToActivate; + S1AP_M1ReportingTrigger_t m1reportingTrigger; + struct S1AP_M1ThresholdEventA2 *m1thresholdeventA2; /* OPTIONAL */ + struct S1AP_M1PeriodicReporting *m1periodicReporting; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ImmediateMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ImmediateMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ImmediateMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ImmediateMDT_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ImmediateMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_InformationOnRecommendedCellsAndENBsForPaging.c b/lib/s1ap3/asn1c/S1AP_InformationOnRecommendedCellsAndENBsForPaging.c new file mode 100644 index 0000000000..dbc5cfb1e8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InformationOnRecommendedCellsAndENBsForPaging.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_InformationOnRecommendedCellsAndENBsForPaging.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_InformationOnRecommendedCellsAndENBsForPaging_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging, recommendedCellsForPaging), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RecommendedCellsForPaging, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "recommendedCellsForPaging" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging, recommendENBsForPaging), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RecommendedENBsForPaging, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "recommendENBsForPaging" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P61, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_InformationOnRecommendedCellsAndENBsForPaging_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InformationOnRecommendedCellsAndENBsForPaging_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* recommendedCellsForPaging */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* recommendENBsForPaging */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_InformationOnRecommendedCellsAndENBsForPaging_specs_1 = { + sizeof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging), + offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging, _asn_ctx), + asn_MAP_S1AP_InformationOnRecommendedCellsAndENBsForPaging_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_InformationOnRecommendedCellsAndENBsForPaging_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging = { + "InformationOnRecommendedCellsAndENBsForPaging", + "InformationOnRecommendedCellsAndENBsForPaging", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_tags_1, + sizeof(asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_tags_1) + /sizeof(asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_tags_1[0]), /* 1 */ + asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_tags_1) + /sizeof(asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InformationOnRecommendedCellsAndENBsForPaging_1, + 3, /* Elements count */ + &asn_SPC_S1AP_InformationOnRecommendedCellsAndENBsForPaging_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_InformationOnRecommendedCellsAndENBsForPaging.h b/lib/s1ap3/asn1c/S1AP_InformationOnRecommendedCellsAndENBsForPaging.h new file mode 100644 index 0000000000..6b5dd7eafd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InformationOnRecommendedCellsAndENBsForPaging.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_InformationOnRecommendedCellsAndENBsForPaging_H_ +#define _S1AP_InformationOnRecommendedCellsAndENBsForPaging_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_RecommendedCellsForPaging.h" +#include "S1AP_RecommendedENBsForPaging.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_InformationOnRecommendedCellsAndENBsForPaging */ +typedef struct S1AP_InformationOnRecommendedCellsAndENBsForPaging { + S1AP_RecommendedCellsForPaging_t recommendedCellsForPaging; + S1AP_RecommendedENBsForPaging_t recommendENBsForPaging; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InformationOnRecommendedCellsAndENBsForPaging_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_InformationOnRecommendedCellsAndENBsForPaging_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_InitialContextSetupFailure.c b/lib/s1ap3/asn1c/S1AP_InitialContextSetupFailure.c new file mode 100644 index 0000000000..168b8fc5e1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitialContextSetupFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_InitialContextSetupFailure.h" + +asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InitialContextSetupFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InitialContextSetupFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupFailure_specs_1 = { + sizeof(struct S1AP_InitialContextSetupFailure), + offsetof(struct S1AP_InitialContextSetupFailure, _asn_ctx), + asn_MAP_S1AP_InitialContextSetupFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupFailure = { + "InitialContextSetupFailure", + "InitialContextSetupFailure", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InitialContextSetupFailure_tags_1, + sizeof(asn_DEF_S1AP_InitialContextSetupFailure_tags_1) + /sizeof(asn_DEF_S1AP_InitialContextSetupFailure_tags_1[0]), /* 1 */ + asn_DEF_S1AP_InitialContextSetupFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_InitialContextSetupFailure_tags_1) + /sizeof(asn_DEF_S1AP_InitialContextSetupFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InitialContextSetupFailure_1, + 1, /* Elements count */ + &asn_SPC_S1AP_InitialContextSetupFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_InitialContextSetupFailure.h b/lib/s1ap3/asn1c/S1AP_InitialContextSetupFailure.h new file mode 100644 index 0000000000..928d8ad7e0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitialContextSetupFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_InitialContextSetupFailure_H_ +#define _S1AP_InitialContextSetupFailure_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_InitialContextSetupFailure */ +typedef struct S1AP_InitialContextSetupFailure { + S1AP_ProtocolIE_Container_6551P21_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InitialContextSetupFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_InitialContextSetupFailure_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_InitialContextSetupRequest.c b/lib/s1ap3/asn1c/S1AP_InitialContextSetupRequest.c new file mode 100644 index 0000000000..eac7902e5c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitialContextSetupRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_InitialContextSetupRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InitialContextSetupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InitialContextSetupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupRequest_specs_1 = { + sizeof(struct S1AP_InitialContextSetupRequest), + offsetof(struct S1AP_InitialContextSetupRequest, _asn_ctx), + asn_MAP_S1AP_InitialContextSetupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupRequest = { + "InitialContextSetupRequest", + "InitialContextSetupRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InitialContextSetupRequest_tags_1, + sizeof(asn_DEF_S1AP_InitialContextSetupRequest_tags_1) + /sizeof(asn_DEF_S1AP_InitialContextSetupRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_InitialContextSetupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_InitialContextSetupRequest_tags_1) + /sizeof(asn_DEF_S1AP_InitialContextSetupRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InitialContextSetupRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_InitialContextSetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_InitialContextSetupRequest.h b/lib/s1ap3/asn1c/S1AP_InitialContextSetupRequest.h new file mode 100644 index 0000000000..baabf931c7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitialContextSetupRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_InitialContextSetupRequest_H_ +#define _S1AP_InitialContextSetupRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_InitialContextSetupRequest */ +typedef struct S1AP_InitialContextSetupRequest { + S1AP_ProtocolIE_Container_6551P19_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InitialContextSetupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_InitialContextSetupRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_InitialContextSetupResponse.c b/lib/s1ap3/asn1c/S1AP_InitialContextSetupResponse.c new file mode 100644 index 0000000000..8d2c9b8598 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitialContextSetupResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_InitialContextSetupResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InitialContextSetupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InitialContextSetupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupResponse_specs_1 = { + sizeof(struct S1AP_InitialContextSetupResponse), + offsetof(struct S1AP_InitialContextSetupResponse, _asn_ctx), + asn_MAP_S1AP_InitialContextSetupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupResponse = { + "InitialContextSetupResponse", + "InitialContextSetupResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InitialContextSetupResponse_tags_1, + sizeof(asn_DEF_S1AP_InitialContextSetupResponse_tags_1) + /sizeof(asn_DEF_S1AP_InitialContextSetupResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_InitialContextSetupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_InitialContextSetupResponse_tags_1) + /sizeof(asn_DEF_S1AP_InitialContextSetupResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InitialContextSetupResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_InitialContextSetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_InitialContextSetupResponse.h b/lib/s1ap3/asn1c/S1AP_InitialContextSetupResponse.h new file mode 100644 index 0000000000..b9c3f201ff --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitialContextSetupResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_InitialContextSetupResponse_H_ +#define _S1AP_InitialContextSetupResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_InitialContextSetupResponse */ +typedef struct S1AP_InitialContextSetupResponse { + S1AP_ProtocolIE_Container_6551P20_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InitialContextSetupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_InitialContextSetupResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_InitialUEMessage.c b/lib/s1ap3/asn1c/S1AP_InitialUEMessage.c new file mode 100644 index 0000000000..23f079dc04 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitialUEMessage.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_InitialUEMessage.h" + +asn_TYPE_member_t asn_MBR_S1AP_InitialUEMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P32, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InitialUEMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InitialUEMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialUEMessage_specs_1 = { + sizeof(struct S1AP_InitialUEMessage), + offsetof(struct S1AP_InitialUEMessage, _asn_ctx), + asn_MAP_S1AP_InitialUEMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InitialUEMessage = { + "InitialUEMessage", + "InitialUEMessage", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InitialUEMessage_tags_1, + sizeof(asn_DEF_S1AP_InitialUEMessage_tags_1) + /sizeof(asn_DEF_S1AP_InitialUEMessage_tags_1[0]), /* 1 */ + asn_DEF_S1AP_InitialUEMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_InitialUEMessage_tags_1) + /sizeof(asn_DEF_S1AP_InitialUEMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InitialUEMessage_1, + 1, /* Elements count */ + &asn_SPC_S1AP_InitialUEMessage_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_InitialUEMessage.h b/lib/s1ap3/asn1c/S1AP_InitialUEMessage.h new file mode 100644 index 0000000000..355195591b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitialUEMessage.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_InitialUEMessage_H_ +#define _S1AP_InitialUEMessage_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_InitialUEMessage */ +typedef struct S1AP_InitialUEMessage { + S1AP_ProtocolIE_Container_6551P32_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InitialUEMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InitialUEMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialUEMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_InitialUEMessage_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_InitialUEMessage_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_InitiatingMessage.c b/lib/s1ap3/asn1c/S1AP_InitiatingMessage.c new file mode 100644 index 0000000000..8d3f0c8dd0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitiatingMessage.c @@ -0,0 +1,1302 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_InitiatingMessage.h" + +static const long asn_VAL_1_S1AP_id_HandoverPreparation = 0; +static const long asn_VAL_1_S1AP_reject = 0; +static const long asn_VAL_2_S1AP_id_HandoverResourceAllocation = 1; +static const long asn_VAL_2_S1AP_reject = 0; +static const long asn_VAL_3_S1AP_id_PathSwitchRequest = 3; +static const long asn_VAL_3_S1AP_reject = 0; +static const long asn_VAL_4_S1AP_id_E_RABSetup = 5; +static const long asn_VAL_4_S1AP_reject = 0; +static const long asn_VAL_5_S1AP_id_E_RABModify = 6; +static const long asn_VAL_5_S1AP_reject = 0; +static const long asn_VAL_6_S1AP_id_E_RABRelease = 7; +static const long asn_VAL_6_S1AP_reject = 0; +static const long asn_VAL_7_S1AP_id_InitialContextSetup = 9; +static const long asn_VAL_7_S1AP_reject = 0; +static const long asn_VAL_8_S1AP_id_HandoverCancel = 4; +static const long asn_VAL_8_S1AP_reject = 0; +static const long asn_VAL_9_S1AP_id_Kill = 43; +static const long asn_VAL_9_S1AP_reject = 0; +static const long asn_VAL_10_S1AP_id_Reset = 14; +static const long asn_VAL_10_S1AP_reject = 0; +static const long asn_VAL_11_S1AP_id_S1Setup = 17; +static const long asn_VAL_11_S1AP_reject = 0; +static const long asn_VAL_12_S1AP_id_UEContextModification = 21; +static const long asn_VAL_12_S1AP_reject = 0; +static const long asn_VAL_13_S1AP_id_UEContextRelease = 23; +static const long asn_VAL_13_S1AP_reject = 0; +static const long asn_VAL_14_S1AP_id_ENBConfigurationUpdate = 29; +static const long asn_VAL_14_S1AP_reject = 0; +static const long asn_VAL_15_S1AP_id_MMEConfigurationUpdate = 30; +static const long asn_VAL_15_S1AP_reject = 0; +static const long asn_VAL_16_S1AP_id_WriteReplaceWarning = 36; +static const long asn_VAL_16_S1AP_reject = 0; +static const long asn_VAL_17_S1AP_id_UERadioCapabilityMatch = 48; +static const long asn_VAL_17_S1AP_reject = 0; +static const long asn_VAL_18_S1AP_id_E_RABModificationIndication = 50; +static const long asn_VAL_18_S1AP_reject = 0; +static const long asn_VAL_19_S1AP_id_UEContextModificationIndication = 53; +static const long asn_VAL_19_S1AP_reject = 0; +static const long asn_VAL_20_S1AP_id_UEContextSuspend = 55; +static const long asn_VAL_20_S1AP_reject = 0; +static const long asn_VAL_21_S1AP_id_UEContextResume = 56; +static const long asn_VAL_21_S1AP_reject = 0; +static const long asn_VAL_22_S1AP_id_HandoverNotification = 2; +static const long asn_VAL_22_S1AP_ignore = 1; +static const long asn_VAL_23_S1AP_id_E_RABReleaseIndication = 8; +static const long asn_VAL_23_S1AP_ignore = 1; +static const long asn_VAL_24_S1AP_id_Paging = 10; +static const long asn_VAL_24_S1AP_ignore = 1; +static const long asn_VAL_25_S1AP_id_downlinkNASTransport = 11; +static const long asn_VAL_25_S1AP_ignore = 1; +static const long asn_VAL_26_S1AP_id_initialUEMessage = 12; +static const long asn_VAL_26_S1AP_ignore = 1; +static const long asn_VAL_27_S1AP_id_uplinkNASTransport = 13; +static const long asn_VAL_27_S1AP_ignore = 1; +static const long asn_VAL_28_S1AP_id_ErrorIndication = 15; +static const long asn_VAL_28_S1AP_ignore = 1; +static const long asn_VAL_29_S1AP_id_NASNonDeliveryIndication = 16; +static const long asn_VAL_29_S1AP_ignore = 1; +static const long asn_VAL_30_S1AP_id_UEContextReleaseRequest = 18; +static const long asn_VAL_30_S1AP_ignore = 1; +static const long asn_VAL_31_S1AP_id_DownlinkS1cdma2000tunnelling = 19; +static const long asn_VAL_31_S1AP_ignore = 1; +static const long asn_VAL_32_S1AP_id_UplinkS1cdma2000tunnelling = 20; +static const long asn_VAL_32_S1AP_ignore = 1; +static const long asn_VAL_33_S1AP_id_UECapabilityInfoIndication = 22; +static const long asn_VAL_33_S1AP_ignore = 1; +static const long asn_VAL_34_S1AP_id_eNBStatusTransfer = 24; +static const long asn_VAL_34_S1AP_ignore = 1; +static const long asn_VAL_35_S1AP_id_MMEStatusTransfer = 25; +static const long asn_VAL_35_S1AP_ignore = 1; +static const long asn_VAL_36_S1AP_id_DeactivateTrace = 26; +static const long asn_VAL_36_S1AP_ignore = 1; +static const long asn_VAL_37_S1AP_id_TraceStart = 27; +static const long asn_VAL_37_S1AP_ignore = 1; +static const long asn_VAL_38_S1AP_id_TraceFailureIndication = 28; +static const long asn_VAL_38_S1AP_ignore = 1; +static const long asn_VAL_39_S1AP_id_CellTrafficTrace = 42; +static const long asn_VAL_39_S1AP_ignore = 1; +static const long asn_VAL_40_S1AP_id_LocationReportingControl = 31; +static const long asn_VAL_40_S1AP_ignore = 1; +static const long asn_VAL_41_S1AP_id_LocationReportingFailureIndication = 32; +static const long asn_VAL_41_S1AP_ignore = 1; +static const long asn_VAL_42_S1AP_id_LocationReport = 33; +static const long asn_VAL_42_S1AP_ignore = 1; +static const long asn_VAL_43_S1AP_id_OverloadStart = 34; +static const long asn_VAL_43_S1AP_ignore = 1; +static const long asn_VAL_44_S1AP_id_OverloadStop = 35; +static const long asn_VAL_44_S1AP_reject = 0; +static const long asn_VAL_45_S1AP_id_eNBDirectInformationTransfer = 37; +static const long asn_VAL_45_S1AP_ignore = 1; +static const long asn_VAL_46_S1AP_id_MMEDirectInformationTransfer = 38; +static const long asn_VAL_46_S1AP_ignore = 1; +static const long asn_VAL_47_S1AP_id_eNBConfigurationTransfer = 40; +static const long asn_VAL_47_S1AP_ignore = 1; +static const long asn_VAL_48_S1AP_id_MMEConfigurationTransfer = 41; +static const long asn_VAL_48_S1AP_ignore = 1; +static const long asn_VAL_49_S1AP_id_PrivateMessage = 39; +static const long asn_VAL_49_S1AP_ignore = 1; +static const long asn_VAL_50_S1AP_id_downlinkUEAssociatedLPPaTransport = 44; +static const long asn_VAL_50_S1AP_ignore = 1; +static const long asn_VAL_51_S1AP_id_uplinkUEAssociatedLPPaTransport = 45; +static const long asn_VAL_51_S1AP_ignore = 1; +static const long asn_VAL_52_S1AP_id_downlinkNonUEAssociatedLPPaTransport = 46; +static const long asn_VAL_52_S1AP_ignore = 1; +static const long asn_VAL_53_S1AP_id_uplinkNonUEAssociatedLPPaTransport = 47; +static const long asn_VAL_53_S1AP_ignore = 1; +static const long asn_VAL_54_S1AP_id_PWSRestartIndication = 49; +static const long asn_VAL_54_S1AP_ignore = 1; +static const long asn_VAL_55_S1AP_id_RerouteNASRequest = 52; +static const long asn_VAL_55_S1AP_reject = 0; +static const long asn_VAL_56_S1AP_id_PWSFailureIndication = 51; +static const long asn_VAL_56_S1AP_ignore = 1; +static const long asn_VAL_57_S1AP_id_ConnectionEstablishmentIndication = 54; +static const long asn_VAL_57_S1AP_reject = 0; +static const long asn_VAL_58_S1AP_id_NASDeliveryIndication = 57; +static const long asn_VAL_58_S1AP_ignore = 1; +static const long asn_VAL_59_S1AP_id_RetrieveUEInformation = 58; +static const long asn_VAL_59_S1AP_reject = 0; +static const long asn_VAL_60_S1AP_id_UEInformationTransfer = 59; +static const long asn_VAL_60_S1AP_reject = 0; +static const long asn_VAL_61_S1AP_id_eNBCPRelocationIndication = 60; +static const long asn_VAL_61_S1AP_reject = 0; +static const long asn_VAL_62_S1AP_id_MMECPRelocationIndication = 61; +static const long asn_VAL_62_S1AP_reject = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverRequired }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverCommand }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverPreparationFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_1_S1AP_id_HandoverPreparation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_1_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverRequestAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_2_S1AP_id_HandoverResourceAllocation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_2_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PathSwitchRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_PathSwitchRequestAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_PathSwitchRequestFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_3_S1AP_id_PathSwitchRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_3_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABSetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABSetupResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_4_S1AP_id_E_RABSetup }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_4_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABModifyRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABModifyResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_5_S1AP_id_E_RABModify }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_5_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABReleaseCommand }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABReleaseResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_6_S1AP_id_E_RABRelease }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_6_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_InitialContextSetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_InitialContextSetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_InitialContextSetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_7_S1AP_id_InitialContextSetup }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_7_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverCancel }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverCancelAcknowledge }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_8_S1AP_id_HandoverCancel }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_8_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_KillRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_KillResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_9_S1AP_id_Kill }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_9_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_Reset }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_ResetAcknowledge }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_10_S1AP_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_10_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_S1SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_S1SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_S1SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_11_S1AP_id_S1Setup }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_11_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextModificationRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextModificationResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextModificationFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_12_S1AP_id_UEContextModification }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_12_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextReleaseCommand }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextReleaseComplete }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_13_S1AP_id_UEContextRelease }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_13_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_ENBConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_14_S1AP_id_ENBConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_14_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_MMEConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_15_S1AP_id_MMEConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_15_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_WriteReplaceWarningRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_WriteReplaceWarningResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_16_S1AP_id_WriteReplaceWarning }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_16_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UERadioCapabilityMatchRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UERadioCapabilityMatchResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_17_S1AP_id_UERadioCapabilityMatch }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_17_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABModificationIndication }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABModificationConfirm }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_18_S1AP_id_E_RABModificationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_18_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextModificationIndication }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextModificationConfirm }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_19_S1AP_id_UEContextModificationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_19_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextSuspendRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextSuspendResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_20_S1AP_id_UEContextSuspend }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_20_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextResumeRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextResumeResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextResumeFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_21_S1AP_id_UEContextResume }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_21_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverNotify }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_22_S1AP_id_HandoverNotification }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_22_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABReleaseIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_23_S1AP_id_E_RABReleaseIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_23_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_Paging }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_24_S1AP_id_Paging }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_24_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkNASTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_25_S1AP_id_downlinkNASTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_25_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_InitialUEMessage }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_26_S1AP_id_initialUEMessage }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_26_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkNASTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_27_S1AP_id_uplinkNASTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_27_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_28_S1AP_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_28_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_NASNonDeliveryIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_29_S1AP_id_NASNonDeliveryIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_29_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextReleaseRequest }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_30_S1AP_id_UEContextReleaseRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_30_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkS1cdma2000tunnelling }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_31_S1AP_id_DownlinkS1cdma2000tunnelling }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_31_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkS1cdma2000tunnelling }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_32_S1AP_id_UplinkS1cdma2000tunnelling }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_32_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UECapabilityInfoIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_33_S1AP_id_UECapabilityInfoIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_33_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBStatusTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_34_S1AP_id_eNBStatusTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_34_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEStatusTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_35_S1AP_id_MMEStatusTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_35_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DeactivateTrace }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_36_S1AP_id_DeactivateTrace }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_36_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_TraceStart }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_37_S1AP_id_TraceStart }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_37_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_TraceFailureIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_38_S1AP_id_TraceFailureIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_38_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_CellTrafficTrace }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_39_S1AP_id_CellTrafficTrace }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_39_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_LocationReportingControl }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_40_S1AP_id_LocationReportingControl }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_40_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_LocationReportingFailureIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_41_S1AP_id_LocationReportingFailureIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_41_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_LocationReport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_42_S1AP_id_LocationReport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_42_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_OverloadStart }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_43_S1AP_id_OverloadStart }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_43_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_OverloadStop }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_44_S1AP_id_OverloadStop }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_44_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBDirectInformationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_45_S1AP_id_eNBDirectInformationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_45_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEDirectInformationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_46_S1AP_id_MMEDirectInformationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_46_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBConfigurationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_47_S1AP_id_eNBConfigurationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_47_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEConfigurationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_48_S1AP_id_MMEConfigurationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_48_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PrivateMessage }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_49_S1AP_id_PrivateMessage }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_49_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_50_S1AP_id_downlinkUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_50_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_51_S1AP_id_uplinkUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_51_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_52_S1AP_id_downlinkNonUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_52_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_53_S1AP_id_uplinkNonUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_53_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PWSRestartIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_54_S1AP_id_PWSRestartIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_54_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_RerouteNASRequest }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_55_S1AP_id_RerouteNASRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_55_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PWSFailureIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_56_S1AP_id_PWSFailureIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_56_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ConnectionEstablishmentIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_57_S1AP_id_ConnectionEstablishmentIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_57_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_NASDeliveryIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_58_S1AP_id_NASDeliveryIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_58_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_RetrieveUEInformation }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_59_S1AP_id_RetrieveUEInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_59_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEInformationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_60_S1AP_id_UEInformationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_60_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBCPRelocationIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_61_S1AP_id_eNBCPRelocationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_61_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMECPRelocationIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_62_S1AP_id_MMECPRelocationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_62_S1AP_reject } +}; +static const asn_ioc_set_t asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1[] = { + { 62, 5, asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_S1AP_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitiatingMessage_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitiatingMessage_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 0; /* &InitiatingMessage */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_procedureCode_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.HandoverRequired), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRequired, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRequired" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.HandoverRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.PathSwitchRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PathSwitchRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PathSwitchRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.E_RABSetupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABSetupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.E_RABModifyRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABModifyRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.E_RABReleaseCommand), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABReleaseCommand, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABReleaseCommand" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.InitialContextSetupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InitialContextSetupRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitialContextSetupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.HandoverCancel), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverCancel, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverCancel" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.KillRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_KillRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "KillRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.Reset), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Reset, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Reset" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.S1SetupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S1SetupRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "S1SetupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UEContextModificationRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextModificationRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UEContextReleaseCommand), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextReleaseCommand, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextReleaseCommand" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.ENBConfigurationUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBConfigurationUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.MMEConfigurationUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEConfigurationUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMEConfigurationUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.WriteReplaceWarningRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_WriteReplaceWarningRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "WriteReplaceWarningRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UERadioCapabilityMatchRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapabilityMatchRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapabilityMatchRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.E_RABModificationIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModificationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABModificationIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UEContextModificationIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextModificationIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UEContextSuspendRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextSuspendRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextSuspendRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UEContextResumeRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextResumeRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextResumeRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.HandoverNotify), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverNotify, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverNotify" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.E_RABReleaseIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABReleaseIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABReleaseIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.Paging), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Paging, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Paging" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.DownlinkNASTransport), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DownlinkNASTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DownlinkNASTransport" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.InitialUEMessage), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InitialUEMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitialUEMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UplinkNASTransport), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UplinkNASTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UplinkNASTransport" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.ErrorIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ErrorIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ErrorIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.NASNonDeliveryIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_NASNonDeliveryIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NASNonDeliveryIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UEContextReleaseRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextReleaseRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextReleaseRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.DownlinkS1cdma2000tunnelling), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DownlinkS1cdma2000tunnelling, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DownlinkS1cdma2000tunnelling" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UplinkS1cdma2000tunnelling), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UplinkS1cdma2000tunnelling, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UplinkS1cdma2000tunnelling" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UECapabilityInfoIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UECapabilityInfoIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UECapabilityInfoIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.ENBStatusTransfer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBStatusTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBStatusTransfer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.MMEStatusTransfer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEStatusTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMEStatusTransfer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.DeactivateTrace), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DeactivateTrace, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DeactivateTrace" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.TraceStart), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TraceStart, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TraceStart" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.TraceFailureIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TraceFailureIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TraceFailureIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.CellTrafficTrace), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellTrafficTrace, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellTrafficTrace" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.LocationReportingControl), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LocationReportingControl, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LocationReportingControl" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.LocationReportingFailureIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LocationReportingFailureIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LocationReportingFailureIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.LocationReport), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LocationReport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LocationReport" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.OverloadStart), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_OverloadStart, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "OverloadStart" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.OverloadStop), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_OverloadStop, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "OverloadStop" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.ENBDirectInformationTransfer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBDirectInformationTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBDirectInformationTransfer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.MMEDirectInformationTransfer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEDirectInformationTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMEDirectInformationTransfer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.ENBConfigurationTransfer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBConfigurationTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationTransfer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.MMEConfigurationTransfer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEConfigurationTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMEConfigurationTransfer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.PrivateMessage), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PrivateMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PrivateMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.DownlinkUEAssociatedLPPaTransport), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DownlinkUEAssociatedLPPaTransport" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UplinkUEAssociatedLPPaTransport), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UplinkUEAssociatedLPPaTransport" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.DownlinkNonUEAssociatedLPPaTransport), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DownlinkNonUEAssociatedLPPaTransport" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UplinkNonUEAssociatedLPPaTransport), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UplinkNonUEAssociatedLPPaTransport" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.PWSRestartIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PWSRestartIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PWSRestartIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.RerouteNASRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RerouteNASRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RerouteNASRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.PWSFailureIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PWSFailureIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PWSFailureIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.ConnectionEstablishmentIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ConnectionEstablishmentIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ConnectionEstablishmentIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.NASDeliveryIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_NASDeliveryIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NASDeliveryIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.RetrieveUEInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RetrieveUEInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RetrieveUEInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.UEInformationTransfer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEInformationTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEInformationTransfer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.ENBCPRelocationIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBCPRelocationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBCPRelocationIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage__value, choice.MMECPRelocationIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMECPRelocationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMECPRelocationIndication" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_4[] = { 61, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_4[] = { 61, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 61 }, /* HandoverRequired */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 60 }, /* HandoverRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 59 }, /* PathSwitchRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 58 }, /* E-RABSetupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 57 }, /* E-RABModifyRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 56 }, /* E-RABReleaseCommand */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 55 }, /* InitialContextSetupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 54 }, /* HandoverCancel */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 53 }, /* KillRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 52 }, /* Reset */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 51 }, /* S1SetupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -11, 50 }, /* UEContextModificationRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -12, 49 }, /* UEContextReleaseCommand */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -13, 48 }, /* ENBConfigurationUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -14, 47 }, /* MMEConfigurationUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 15, -15, 46 }, /* WriteReplaceWarningRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 16, -16, 45 }, /* UERadioCapabilityMatchRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 17, -17, 44 }, /* E-RABModificationIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 18, -18, 43 }, /* UEContextModificationIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 19, -19, 42 }, /* UEContextSuspendRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 20, -20, 41 }, /* UEContextResumeRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 21, -21, 40 }, /* HandoverNotify */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 22, -22, 39 }, /* E-RABReleaseIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 23, -23, 38 }, /* Paging */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 24, -24, 37 }, /* DownlinkNASTransport */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 25, -25, 36 }, /* InitialUEMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 26, -26, 35 }, /* UplinkNASTransport */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 27, -27, 34 }, /* ErrorIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 28, -28, 33 }, /* NASNonDeliveryIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 29, -29, 32 }, /* UEContextReleaseRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 30, -30, 31 }, /* DownlinkS1cdma2000tunnelling */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 31, -31, 30 }, /* UplinkS1cdma2000tunnelling */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 32, -32, 29 }, /* UECapabilityInfoIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 33, -33, 28 }, /* ENBStatusTransfer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 34, -34, 27 }, /* MMEStatusTransfer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 35, -35, 26 }, /* DeactivateTrace */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 36, -36, 25 }, /* TraceStart */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 37, -37, 24 }, /* TraceFailureIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 38, -38, 23 }, /* CellTrafficTrace */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 39, -39, 22 }, /* LocationReportingControl */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 40, -40, 21 }, /* LocationReportingFailureIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 41, -41, 20 }, /* LocationReport */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 42, -42, 19 }, /* OverloadStart */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 43, -43, 18 }, /* OverloadStop */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 44, -44, 17 }, /* ENBDirectInformationTransfer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 45, -45, 16 }, /* MMEDirectInformationTransfer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 46, -46, 15 }, /* ENBConfigurationTransfer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 47, -47, 14 }, /* MMEConfigurationTransfer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 48, -48, 13 }, /* PrivateMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 49, -49, 12 }, /* DownlinkUEAssociatedLPPaTransport */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 50, -50, 11 }, /* UplinkUEAssociatedLPPaTransport */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 51, -51, 10 }, /* DownlinkNonUEAssociatedLPPaTransport */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 52, -52, 9 }, /* UplinkNonUEAssociatedLPPaTransport */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 53, -53, 8 }, /* PWSRestartIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 54, -54, 7 }, /* RerouteNASRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 55, -55, 6 }, /* PWSFailureIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 56, -56, 5 }, /* ConnectionEstablishmentIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 57, -57, 4 }, /* NASDeliveryIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 58, -58, 3 }, /* RetrieveUEInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 59, -59, 2 }, /* UEInformationTransfer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 60, -60, 1 }, /* ENBCPRelocationIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 61, -61, 0 } /* MMECPRelocationIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_4 = { + sizeof(struct S1AP_InitiatingMessage__value), + offsetof(struct S1AP_InitiatingMessage__value, _asn_ctx), + offsetof(struct S1AP_InitiatingMessage__value, present), + sizeof(((struct S1AP_InitiatingMessage__value *)0)->present), + asn_MAP_S1AP_value_tag2el_4, + 62, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_4, + asn_MAP_S1AP_value_from_canonical_4, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_4, + 62, /* Elements count */ + &asn_SPC_S1AP_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_InitiatingMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProcedureCode, + 0, + { &asn_OER_memb_S1AP_procedureCode_constr_2, &asn_PER_memb_S1AP_procedureCode_constr_2, memb_S1AP_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_InitiatingMessage_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_3, &asn_PER_memb_S1AP_criticality_constr_3, memb_S1AP_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_InitiatingMessage, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_4, + select_InitiatingMessage_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_4, &asn_PER_memb_S1AP_value_constr_4, memb_S1AP_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InitiatingMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InitiatingMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitiatingMessage_specs_1 = { + sizeof(struct S1AP_InitiatingMessage), + offsetof(struct S1AP_InitiatingMessage, _asn_ctx), + asn_MAP_S1AP_InitiatingMessage_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InitiatingMessage = { + "InitiatingMessage", + "InitiatingMessage", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InitiatingMessage_tags_1, + sizeof(asn_DEF_S1AP_InitiatingMessage_tags_1) + /sizeof(asn_DEF_S1AP_InitiatingMessage_tags_1[0]), /* 1 */ + asn_DEF_S1AP_InitiatingMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_InitiatingMessage_tags_1) + /sizeof(asn_DEF_S1AP_InitiatingMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InitiatingMessage_1, + 3, /* Elements count */ + &asn_SPC_S1AP_InitiatingMessage_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_InitiatingMessage.h b/lib/s1ap3/asn1c/S1AP_InitiatingMessage.h new file mode 100644 index 0000000000..3c7c657124 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InitiatingMessage.h @@ -0,0 +1,275 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_InitiatingMessage_H_ +#define _S1AP_InitiatingMessage_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProcedureCode.h" +#include "S1AP_Criticality.h" +#include +#include +#include "S1AP_HandoverRequired.h" +#include "S1AP_HandoverCommand.h" +#include "S1AP_HandoverPreparationFailure.h" +#include "S1AP_HandoverRequest.h" +#include "S1AP_HandoverRequestAcknowledge.h" +#include "S1AP_HandoverFailure.h" +#include "S1AP_PathSwitchRequest.h" +#include "S1AP_PathSwitchRequestAcknowledge.h" +#include "S1AP_PathSwitchRequestFailure.h" +#include "S1AP_E-RABSetupRequest.h" +#include "S1AP_E-RABSetupResponse.h" +#include "S1AP_E-RABModifyRequest.h" +#include "S1AP_E-RABModifyResponse.h" +#include "S1AP_E-RABReleaseCommand.h" +#include "S1AP_E-RABReleaseResponse.h" +#include "S1AP_InitialContextSetupRequest.h" +#include "S1AP_InitialContextSetupResponse.h" +#include "S1AP_InitialContextSetupFailure.h" +#include "S1AP_HandoverCancel.h" +#include "S1AP_HandoverCancelAcknowledge.h" +#include "S1AP_KillRequest.h" +#include "S1AP_KillResponse.h" +#include "S1AP_Reset.h" +#include "S1AP_ResetAcknowledge.h" +#include "S1AP_S1SetupRequest.h" +#include "S1AP_S1SetupResponse.h" +#include "S1AP_S1SetupFailure.h" +#include "S1AP_UEContextModificationRequest.h" +#include "S1AP_UEContextModificationResponse.h" +#include "S1AP_UEContextModificationFailure.h" +#include "S1AP_UEContextReleaseCommand.h" +#include "S1AP_UEContextReleaseComplete.h" +#include "S1AP_ENBConfigurationUpdate.h" +#include "S1AP_ENBConfigurationUpdateAcknowledge.h" +#include "S1AP_ENBConfigurationUpdateFailure.h" +#include "S1AP_MMEConfigurationUpdate.h" +#include "S1AP_MMEConfigurationUpdateAcknowledge.h" +#include "S1AP_MMEConfigurationUpdateFailure.h" +#include "S1AP_WriteReplaceWarningRequest.h" +#include "S1AP_WriteReplaceWarningResponse.h" +#include "S1AP_UERadioCapabilityMatchRequest.h" +#include "S1AP_UERadioCapabilityMatchResponse.h" +#include "S1AP_E-RABModificationIndication.h" +#include "S1AP_E-RABModificationConfirm.h" +#include "S1AP_UEContextModificationIndication.h" +#include "S1AP_UEContextModificationConfirm.h" +#include "S1AP_UEContextSuspendRequest.h" +#include "S1AP_UEContextSuspendResponse.h" +#include "S1AP_UEContextResumeRequest.h" +#include "S1AP_UEContextResumeResponse.h" +#include "S1AP_UEContextResumeFailure.h" +#include "S1AP_HandoverNotify.h" +#include "S1AP_E-RABReleaseIndication.h" +#include "S1AP_Paging.h" +#include "S1AP_DownlinkNASTransport.h" +#include "S1AP_InitialUEMessage.h" +#include "S1AP_UplinkNASTransport.h" +#include "S1AP_ErrorIndication.h" +#include "S1AP_NASNonDeliveryIndication.h" +#include "S1AP_UEContextReleaseRequest.h" +#include "S1AP_DownlinkS1cdma2000tunnelling.h" +#include "S1AP_UplinkS1cdma2000tunnelling.h" +#include "S1AP_UECapabilityInfoIndication.h" +#include "S1AP_ENBStatusTransfer.h" +#include "S1AP_MMEStatusTransfer.h" +#include "S1AP_DeactivateTrace.h" +#include "S1AP_TraceStart.h" +#include "S1AP_TraceFailureIndication.h" +#include "S1AP_CellTrafficTrace.h" +#include "S1AP_LocationReportingControl.h" +#include "S1AP_LocationReportingFailureIndication.h" +#include "S1AP_LocationReport.h" +#include "S1AP_OverloadStart.h" +#include "S1AP_OverloadStop.h" +#include "S1AP_ENBDirectInformationTransfer.h" +#include "S1AP_MMEDirectInformationTransfer.h" +#include "S1AP_ENBConfigurationTransfer.h" +#include "S1AP_MMEConfigurationTransfer.h" +#include "S1AP_PrivateMessage.h" +#include "S1AP_DownlinkUEAssociatedLPPaTransport.h" +#include "S1AP_UplinkUEAssociatedLPPaTransport.h" +#include "S1AP_DownlinkNonUEAssociatedLPPaTransport.h" +#include "S1AP_UplinkNonUEAssociatedLPPaTransport.h" +#include "S1AP_PWSRestartIndication.h" +#include "S1AP_RerouteNASRequest.h" +#include "S1AP_PWSFailureIndication.h" +#include "S1AP_ConnectionEstablishmentIndication.h" +#include "S1AP_NASDeliveryIndication.h" +#include "S1AP_RetrieveUEInformation.h" +#include "S1AP_UEInformationTransfer.h" +#include "S1AP_ENBCPRelocationIndication.h" +#include "S1AP_MMECPRelocationIndication.h" +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_InitiatingMessage__value_PR { + InitiatingMessage__value_PR_NOTHING, /* No components present */ + InitiatingMessage__value_PR_HandoverRequired, + InitiatingMessage__value_PR_HandoverRequest, + InitiatingMessage__value_PR_PathSwitchRequest, + InitiatingMessage__value_PR_E_RABSetupRequest, + InitiatingMessage__value_PR_E_RABModifyRequest, + InitiatingMessage__value_PR_E_RABReleaseCommand, + InitiatingMessage__value_PR_InitialContextSetupRequest, + InitiatingMessage__value_PR_HandoverCancel, + InitiatingMessage__value_PR_KillRequest, + InitiatingMessage__value_PR_Reset, + InitiatingMessage__value_PR_S1SetupRequest, + InitiatingMessage__value_PR_UEContextModificationRequest, + InitiatingMessage__value_PR_UEContextReleaseCommand, + InitiatingMessage__value_PR_ENBConfigurationUpdate, + InitiatingMessage__value_PR_MMEConfigurationUpdate, + InitiatingMessage__value_PR_WriteReplaceWarningRequest, + InitiatingMessage__value_PR_UERadioCapabilityMatchRequest, + InitiatingMessage__value_PR_E_RABModificationIndication, + InitiatingMessage__value_PR_UEContextModificationIndication, + InitiatingMessage__value_PR_UEContextSuspendRequest, + InitiatingMessage__value_PR_UEContextResumeRequest, + InitiatingMessage__value_PR_HandoverNotify, + InitiatingMessage__value_PR_E_RABReleaseIndication, + InitiatingMessage__value_PR_Paging, + InitiatingMessage__value_PR_DownlinkNASTransport, + InitiatingMessage__value_PR_InitialUEMessage, + InitiatingMessage__value_PR_UplinkNASTransport, + InitiatingMessage__value_PR_ErrorIndication, + InitiatingMessage__value_PR_NASNonDeliveryIndication, + InitiatingMessage__value_PR_UEContextReleaseRequest, + InitiatingMessage__value_PR_DownlinkS1cdma2000tunnelling, + InitiatingMessage__value_PR_UplinkS1cdma2000tunnelling, + InitiatingMessage__value_PR_UECapabilityInfoIndication, + InitiatingMessage__value_PR_ENBStatusTransfer, + InitiatingMessage__value_PR_MMEStatusTransfer, + InitiatingMessage__value_PR_DeactivateTrace, + InitiatingMessage__value_PR_TraceStart, + InitiatingMessage__value_PR_TraceFailureIndication, + InitiatingMessage__value_PR_CellTrafficTrace, + InitiatingMessage__value_PR_LocationReportingControl, + InitiatingMessage__value_PR_LocationReportingFailureIndication, + InitiatingMessage__value_PR_LocationReport, + InitiatingMessage__value_PR_OverloadStart, + InitiatingMessage__value_PR_OverloadStop, + InitiatingMessage__value_PR_ENBDirectInformationTransfer, + InitiatingMessage__value_PR_MMEDirectInformationTransfer, + InitiatingMessage__value_PR_ENBConfigurationTransfer, + InitiatingMessage__value_PR_MMEConfigurationTransfer, + InitiatingMessage__value_PR_PrivateMessage, + InitiatingMessage__value_PR_DownlinkUEAssociatedLPPaTransport, + InitiatingMessage__value_PR_UplinkUEAssociatedLPPaTransport, + InitiatingMessage__value_PR_DownlinkNonUEAssociatedLPPaTransport, + InitiatingMessage__value_PR_UplinkNonUEAssociatedLPPaTransport, + InitiatingMessage__value_PR_PWSRestartIndication, + InitiatingMessage__value_PR_RerouteNASRequest, + InitiatingMessage__value_PR_PWSFailureIndication, + InitiatingMessage__value_PR_ConnectionEstablishmentIndication, + InitiatingMessage__value_PR_NASDeliveryIndication, + InitiatingMessage__value_PR_RetrieveUEInformation, + InitiatingMessage__value_PR_UEInformationTransfer, + InitiatingMessage__value_PR_ENBCPRelocationIndication, + InitiatingMessage__value_PR_MMECPRelocationIndication +} S1AP_InitiatingMessage__value_PR; + +/* S1AP_InitiatingMessage */ +typedef struct S1AP_InitiatingMessage { + S1AP_ProcedureCode_t procedureCode; + S1AP_Criticality_t criticality; + struct S1AP_InitiatingMessage__value { + S1AP_InitiatingMessage__value_PR present; + union S1AP_InitiatingMessage__S1AP_value_u { + S1AP_HandoverRequired_t HandoverRequired; + S1AP_HandoverRequest_t HandoverRequest; + S1AP_PathSwitchRequest_t PathSwitchRequest; + S1AP_E_RABSetupRequest_t E_RABSetupRequest; + S1AP_E_RABModifyRequest_t E_RABModifyRequest; + S1AP_E_RABReleaseCommand_t E_RABReleaseCommand; + S1AP_InitialContextSetupRequest_t InitialContextSetupRequest; + S1AP_HandoverCancel_t HandoverCancel; + S1AP_KillRequest_t KillRequest; + S1AP_Reset_t Reset; + S1AP_S1SetupRequest_t S1SetupRequest; + S1AP_UEContextModificationRequest_t UEContextModificationRequest; + S1AP_UEContextReleaseCommand_t UEContextReleaseCommand; + S1AP_ENBConfigurationUpdate_t ENBConfigurationUpdate; + S1AP_MMEConfigurationUpdate_t MMEConfigurationUpdate; + S1AP_WriteReplaceWarningRequest_t WriteReplaceWarningRequest; + S1AP_UERadioCapabilityMatchRequest_t UERadioCapabilityMatchRequest; + S1AP_E_RABModificationIndication_t E_RABModificationIndication; + S1AP_UEContextModificationIndication_t UEContextModificationIndication; + S1AP_UEContextSuspendRequest_t UEContextSuspendRequest; + S1AP_UEContextResumeRequest_t UEContextResumeRequest; + S1AP_HandoverNotify_t HandoverNotify; + S1AP_E_RABReleaseIndication_t E_RABReleaseIndication; + S1AP_Paging_t Paging; + S1AP_DownlinkNASTransport_t DownlinkNASTransport; + S1AP_InitialUEMessage_t InitialUEMessage; + S1AP_UplinkNASTransport_t UplinkNASTransport; + S1AP_ErrorIndication_t ErrorIndication; + S1AP_NASNonDeliveryIndication_t NASNonDeliveryIndication; + S1AP_UEContextReleaseRequest_t UEContextReleaseRequest; + S1AP_DownlinkS1cdma2000tunnelling_t DownlinkS1cdma2000tunnelling; + S1AP_UplinkS1cdma2000tunnelling_t UplinkS1cdma2000tunnelling; + S1AP_UECapabilityInfoIndication_t UECapabilityInfoIndication; + S1AP_ENBStatusTransfer_t ENBStatusTransfer; + S1AP_MMEStatusTransfer_t MMEStatusTransfer; + S1AP_DeactivateTrace_t DeactivateTrace; + S1AP_TraceStart_t TraceStart; + S1AP_TraceFailureIndication_t TraceFailureIndication; + S1AP_CellTrafficTrace_t CellTrafficTrace; + S1AP_LocationReportingControl_t LocationReportingControl; + S1AP_LocationReportingFailureIndication_t LocationReportingFailureIndication; + S1AP_LocationReport_t LocationReport; + S1AP_OverloadStart_t OverloadStart; + S1AP_OverloadStop_t OverloadStop; + S1AP_ENBDirectInformationTransfer_t ENBDirectInformationTransfer; + S1AP_MMEDirectInformationTransfer_t MMEDirectInformationTransfer; + S1AP_ENBConfigurationTransfer_t ENBConfigurationTransfer; + S1AP_MMEConfigurationTransfer_t MMEConfigurationTransfer; + S1AP_PrivateMessage_t PrivateMessage; + S1AP_DownlinkUEAssociatedLPPaTransport_t DownlinkUEAssociatedLPPaTransport; + S1AP_UplinkUEAssociatedLPPaTransport_t UplinkUEAssociatedLPPaTransport; + S1AP_DownlinkNonUEAssociatedLPPaTransport_t DownlinkNonUEAssociatedLPPaTransport; + S1AP_UplinkNonUEAssociatedLPPaTransport_t UplinkNonUEAssociatedLPPaTransport; + S1AP_PWSRestartIndication_t PWSRestartIndication; + S1AP_RerouteNASRequest_t RerouteNASRequest; + S1AP_PWSFailureIndication_t PWSFailureIndication; + S1AP_ConnectionEstablishmentIndication_t ConnectionEstablishmentIndication; + S1AP_NASDeliveryIndication_t NASDeliveryIndication; + S1AP_RetrieveUEInformation_t RetrieveUEInformation; + S1AP_UEInformationTransfer_t UEInformationTransfer; + S1AP_ENBCPRelocationIndication_t ENBCPRelocationIndication; + S1AP_MMECPRelocationIndication_t MMECPRelocationIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InitiatingMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InitiatingMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitiatingMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_InitiatingMessage_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_InitiatingMessage_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_IntegrityProtectionAlgorithms.c b/lib/s1ap3/asn1c/S1AP_IntegrityProtectionAlgorithms.c new file mode 100644 index 0000000000..d84472e404 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_IntegrityProtectionAlgorithms.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_IntegrityProtectionAlgorithms.h" + +int +S1AP_IntegrityProtectionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_IntegrityProtectionAlgorithms_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +asn_per_constraints_t asn_PER_type_S1AP_IntegrityProtectionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_IntegrityProtectionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_IntegrityProtectionAlgorithms = { + "IntegrityProtectionAlgorithms", + "IntegrityProtectionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_IntegrityProtectionAlgorithms_tags_1, + sizeof(asn_DEF_S1AP_IntegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_S1AP_IntegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_S1AP_IntegrityProtectionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_IntegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_S1AP_IntegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_IntegrityProtectionAlgorithms_constr_1, &asn_PER_type_S1AP_IntegrityProtectionAlgorithms_constr_1, S1AP_IntegrityProtectionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_IntegrityProtectionAlgorithms.h b/lib/s1ap3/asn1c/S1AP_IntegrityProtectionAlgorithms.h new file mode 100644 index 0000000000..4af70f0945 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_IntegrityProtectionAlgorithms.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_IntegrityProtectionAlgorithms_H_ +#define _S1AP_IntegrityProtectionAlgorithms_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_IntegrityProtectionAlgorithms */ +typedef BIT_STRING_t S1AP_IntegrityProtectionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_IntegrityProtectionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_IntegrityProtectionAlgorithms; +asn_struct_free_f S1AP_IntegrityProtectionAlgorithms_free; +asn_struct_print_f S1AP_IntegrityProtectionAlgorithms_print; +asn_constr_check_f S1AP_IntegrityProtectionAlgorithms_constraint; +ber_type_decoder_f S1AP_IntegrityProtectionAlgorithms_decode_ber; +der_type_encoder_f S1AP_IntegrityProtectionAlgorithms_encode_der; +xer_type_decoder_f S1AP_IntegrityProtectionAlgorithms_decode_xer; +xer_type_encoder_f S1AP_IntegrityProtectionAlgorithms_encode_xer; +oer_type_decoder_f S1AP_IntegrityProtectionAlgorithms_decode_oer; +oer_type_encoder_f S1AP_IntegrityProtectionAlgorithms_encode_oer; +per_type_decoder_f S1AP_IntegrityProtectionAlgorithms_decode_uper; +per_type_encoder_f S1AP_IntegrityProtectionAlgorithms_encode_uper; +per_type_decoder_f S1AP_IntegrityProtectionAlgorithms_decode_aper; +per_type_encoder_f S1AP_IntegrityProtectionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_IntegrityProtectionAlgorithms_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_IntendedNumberOfPagingAttempts.c b/lib/s1ap3/asn1c/S1AP_IntendedNumberOfPagingAttempts.c new file mode 100644 index 0000000000..d29b5dc216 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_IntendedNumberOfPagingAttempts.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_IntendedNumberOfPagingAttempts.h" + +int +S1AP_IntendedNumberOfPagingAttempts_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_IntendedNumberOfPagingAttempts_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_IntendedNumberOfPagingAttempts_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 16 } /* (1..16,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_IntendedNumberOfPagingAttempts_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_IntendedNumberOfPagingAttempts = { + "IntendedNumberOfPagingAttempts", + "IntendedNumberOfPagingAttempts", + &asn_OP_NativeInteger, + asn_DEF_S1AP_IntendedNumberOfPagingAttempts_tags_1, + sizeof(asn_DEF_S1AP_IntendedNumberOfPagingAttempts_tags_1) + /sizeof(asn_DEF_S1AP_IntendedNumberOfPagingAttempts_tags_1[0]), /* 1 */ + asn_DEF_S1AP_IntendedNumberOfPagingAttempts_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_IntendedNumberOfPagingAttempts_tags_1) + /sizeof(asn_DEF_S1AP_IntendedNumberOfPagingAttempts_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_IntendedNumberOfPagingAttempts_constr_1, &asn_PER_type_S1AP_IntendedNumberOfPagingAttempts_constr_1, S1AP_IntendedNumberOfPagingAttempts_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_IntendedNumberOfPagingAttempts.h b/lib/s1ap3/asn1c/S1AP_IntendedNumberOfPagingAttempts.h new file mode 100644 index 0000000000..27fb0e7dc1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_IntendedNumberOfPagingAttempts.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_IntendedNumberOfPagingAttempts_H_ +#define _S1AP_IntendedNumberOfPagingAttempts_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_IntendedNumberOfPagingAttempts */ +typedef long S1AP_IntendedNumberOfPagingAttempts_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_IntendedNumberOfPagingAttempts_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_IntendedNumberOfPagingAttempts; +asn_struct_free_f S1AP_IntendedNumberOfPagingAttempts_free; +asn_struct_print_f S1AP_IntendedNumberOfPagingAttempts_print; +asn_constr_check_f S1AP_IntendedNumberOfPagingAttempts_constraint; +ber_type_decoder_f S1AP_IntendedNumberOfPagingAttempts_decode_ber; +der_type_encoder_f S1AP_IntendedNumberOfPagingAttempts_encode_der; +xer_type_decoder_f S1AP_IntendedNumberOfPagingAttempts_decode_xer; +xer_type_encoder_f S1AP_IntendedNumberOfPagingAttempts_encode_xer; +oer_type_decoder_f S1AP_IntendedNumberOfPagingAttempts_decode_oer; +oer_type_encoder_f S1AP_IntendedNumberOfPagingAttempts_encode_oer; +per_type_decoder_f S1AP_IntendedNumberOfPagingAttempts_decode_uper; +per_type_encoder_f S1AP_IntendedNumberOfPagingAttempts_encode_uper; +per_type_decoder_f S1AP_IntendedNumberOfPagingAttempts_decode_aper; +per_type_encoder_f S1AP_IntendedNumberOfPagingAttempts_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_IntendedNumberOfPagingAttempts_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Inter-SystemInformationTransferType.c b/lib/s1ap3/asn1c/S1AP_Inter-SystemInformationTransferType.c new file mode 100644 index 0000000000..6c1d371a25 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Inter-SystemInformationTransferType.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Inter-SystemInformationTransferType.h" + +#include "S1AP_RIMTransfer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_Inter_SystemInformationTransferType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_Inter_SystemInformationTransferType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_Inter_SystemInformationTransferType_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_Inter_SystemInformationTransferType, choice.rIMTransfer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RIMTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rIMTransfer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Inter_SystemInformationTransferType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rIMTransfer */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_Inter_SystemInformationTransferType_specs_1 = { + sizeof(struct S1AP_Inter_SystemInformationTransferType), + offsetof(struct S1AP_Inter_SystemInformationTransferType, _asn_ctx), + offsetof(struct S1AP_Inter_SystemInformationTransferType, present), + sizeof(((struct S1AP_Inter_SystemInformationTransferType *)0)->present), + asn_MAP_S1AP_Inter_SystemInformationTransferType_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Inter_SystemInformationTransferType = { + "Inter-SystemInformationTransferType", + "Inter-SystemInformationTransferType", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_Inter_SystemInformationTransferType_constr_1, &asn_PER_type_S1AP_Inter_SystemInformationTransferType_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_Inter_SystemInformationTransferType_1, + 1, /* Elements count */ + &asn_SPC_S1AP_Inter_SystemInformationTransferType_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Inter-SystemInformationTransferType.h b/lib/s1ap3/asn1c/S1AP_Inter-SystemInformationTransferType.h new file mode 100644 index 0000000000..0c3744d157 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Inter-SystemInformationTransferType.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Inter_SystemInformationTransferType_H_ +#define _S1AP_Inter_SystemInformationTransferType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Inter_SystemInformationTransferType_PR { + Inter_SystemInformationTransferType_PR_NOTHING, /* No components present */ + Inter_SystemInformationTransferType_PR_rIMTransfer + /* Extensions may appear below */ + +} S1AP_Inter_SystemInformationTransferType_PR; + +/* Forward declarations */ +struct S1AP_RIMTransfer; + +/* S1AP_Inter-SystemInformationTransferType */ +typedef struct S1AP_Inter_SystemInformationTransferType { + S1AP_Inter_SystemInformationTransferType_PR present; + union S1AP_Inter_SystemInformationTransferType_u { + struct S1AP_RIMTransfer *rIMTransfer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Inter_SystemInformationTransferType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Inter_SystemInformationTransferType; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Inter_SystemInformationTransferType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_InterfacesToTrace.c b/lib/s1ap3/asn1c/S1AP_InterfacesToTrace.c new file mode 100644 index 0000000000..5e368ee872 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InterfacesToTrace.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_InterfacesToTrace.h" + +int +S1AP_InterfacesToTrace_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_InterfacesToTrace_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +asn_per_constraints_t asn_PER_type_S1AP_InterfacesToTrace_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InterfacesToTrace_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InterfacesToTrace = { + "InterfacesToTrace", + "InterfacesToTrace", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_InterfacesToTrace_tags_1, + sizeof(asn_DEF_S1AP_InterfacesToTrace_tags_1) + /sizeof(asn_DEF_S1AP_InterfacesToTrace_tags_1[0]), /* 1 */ + asn_DEF_S1AP_InterfacesToTrace_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_InterfacesToTrace_tags_1) + /sizeof(asn_DEF_S1AP_InterfacesToTrace_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_InterfacesToTrace_constr_1, &asn_PER_type_S1AP_InterfacesToTrace_constr_1, S1AP_InterfacesToTrace_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_InterfacesToTrace.h b/lib/s1ap3/asn1c/S1AP_InterfacesToTrace.h new file mode 100644 index 0000000000..dda96ebf1a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_InterfacesToTrace.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_InterfacesToTrace_H_ +#define _S1AP_InterfacesToTrace_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_InterfacesToTrace */ +typedef BIT_STRING_t S1AP_InterfacesToTrace_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_InterfacesToTrace_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InterfacesToTrace; +asn_struct_free_f S1AP_InterfacesToTrace_free; +asn_struct_print_f S1AP_InterfacesToTrace_print; +asn_constr_check_f S1AP_InterfacesToTrace_constraint; +ber_type_decoder_f S1AP_InterfacesToTrace_decode_ber; +der_type_encoder_f S1AP_InterfacesToTrace_encode_der; +xer_type_decoder_f S1AP_InterfacesToTrace_decode_xer; +xer_type_encoder_f S1AP_InterfacesToTrace_encode_xer; +oer_type_decoder_f S1AP_InterfacesToTrace_decode_oer; +oer_type_encoder_f S1AP_InterfacesToTrace_encode_oer; +per_type_decoder_f S1AP_InterfacesToTrace_decode_uper; +per_type_encoder_f S1AP_InterfacesToTrace_encode_uper; +per_type_decoder_f S1AP_InterfacesToTrace_decode_aper; +per_type_encoder_f S1AP_InterfacesToTrace_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_InterfacesToTrace_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.c b/lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.c new file mode 100644 index 0000000000..90d925b54d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.c @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_KillAllWarningMessages.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_KillAllWarningMessages_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_KillAllWarningMessages_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 0, 0, 0, 0 } /* (0..0) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_KillAllWarningMessages_value2enum_1[] = { + { 0, 4, "true" } +}; +static const unsigned int asn_MAP_S1AP_KillAllWarningMessages_enum2value_1[] = { + 0 /* true(0) */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_KillAllWarningMessages_specs_1 = { + asn_MAP_S1AP_KillAllWarningMessages_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_KillAllWarningMessages_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_KillAllWarningMessages_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_KillAllWarningMessages = { + "KillAllWarningMessages", + "KillAllWarningMessages", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_KillAllWarningMessages_tags_1, + sizeof(asn_DEF_S1AP_KillAllWarningMessages_tags_1) + /sizeof(asn_DEF_S1AP_KillAllWarningMessages_tags_1[0]), /* 1 */ + asn_DEF_S1AP_KillAllWarningMessages_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_KillAllWarningMessages_tags_1) + /sizeof(asn_DEF_S1AP_KillAllWarningMessages_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_KillAllWarningMessages_constr_1, &asn_PER_type_S1AP_KillAllWarningMessages_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_KillAllWarningMessages_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.h b/lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.h new file mode 100644 index 0000000000..bd2c79674d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_KillAllWarningMessages.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_KillAllWarningMessages_H_ +#define _S1AP_KillAllWarningMessages_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_KillAllWarningMessages { + S1AP_KillAllWarningMessages_true = 0 +} e_S1AP_KillAllWarningMessages; + +/* S1AP_KillAllWarningMessages */ +typedef long S1AP_KillAllWarningMessages_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_KillAllWarningMessages; +asn_struct_free_f S1AP_KillAllWarningMessages_free; +asn_struct_print_f S1AP_KillAllWarningMessages_print; +asn_constr_check_f S1AP_KillAllWarningMessages_constraint; +ber_type_decoder_f S1AP_KillAllWarningMessages_decode_ber; +der_type_encoder_f S1AP_KillAllWarningMessages_encode_der; +xer_type_decoder_f S1AP_KillAllWarningMessages_decode_xer; +xer_type_encoder_f S1AP_KillAllWarningMessages_encode_xer; +oer_type_decoder_f S1AP_KillAllWarningMessages_decode_oer; +oer_type_encoder_f S1AP_KillAllWarningMessages_encode_oer; +per_type_decoder_f S1AP_KillAllWarningMessages_decode_uper; +per_type_encoder_f S1AP_KillAllWarningMessages_encode_uper; +per_type_decoder_f S1AP_KillAllWarningMessages_decode_aper; +per_type_encoder_f S1AP_KillAllWarningMessages_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_KillAllWarningMessages_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_KillRequest.c b/lib/s1ap3/asn1c/S1AP_KillRequest.c new file mode 100644 index 0000000000..cb2fd71cff --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_KillRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_KillRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_KillRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P69, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_KillRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_KillRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_KillRequest_specs_1 = { + sizeof(struct S1AP_KillRequest), + offsetof(struct S1AP_KillRequest, _asn_ctx), + asn_MAP_S1AP_KillRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_KillRequest = { + "KillRequest", + "KillRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_KillRequest_tags_1, + sizeof(asn_DEF_S1AP_KillRequest_tags_1) + /sizeof(asn_DEF_S1AP_KillRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_KillRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_KillRequest_tags_1) + /sizeof(asn_DEF_S1AP_KillRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_KillRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_KillRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_KillRequest.h b/lib/s1ap3/asn1c/S1AP_KillRequest.h new file mode 100644 index 0000000000..e894c18201 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_KillRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_KillRequest_H_ +#define _S1AP_KillRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_KillRequest */ +typedef struct S1AP_KillRequest { + S1AP_ProtocolIE_Container_6551P69_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_KillRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_KillRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_KillRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_KillRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_KillRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_KillResponse.c b/lib/s1ap3/asn1c/S1AP_KillResponse.c new file mode 100644 index 0000000000..bab9f0a307 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_KillResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_KillResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_KillResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P70, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_KillResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_KillResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_KillResponse_specs_1 = { + sizeof(struct S1AP_KillResponse), + offsetof(struct S1AP_KillResponse, _asn_ctx), + asn_MAP_S1AP_KillResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_KillResponse = { + "KillResponse", + "KillResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_KillResponse_tags_1, + sizeof(asn_DEF_S1AP_KillResponse_tags_1) + /sizeof(asn_DEF_S1AP_KillResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_KillResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_KillResponse_tags_1) + /sizeof(asn_DEF_S1AP_KillResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_KillResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_KillResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_KillResponse.h b/lib/s1ap3/asn1c/S1AP_KillResponse.h new file mode 100644 index 0000000000..7babb4b72f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_KillResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_KillResponse_H_ +#define _S1AP_KillResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_KillResponse */ +typedef struct S1AP_KillResponse { + S1AP_ProtocolIE_Container_6551P70_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_KillResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_KillResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_KillResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_KillResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_KillResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_L3-Information.c b/lib/s1ap3/asn1c/S1AP_L3-Information.c new file mode 100644 index 0000000000..3660dfb4d2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_L3-Information.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_L3-Information.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_L3_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_L3_Information = { + "L3-Information", + "L3-Information", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_L3_Information_tags_1, + sizeof(asn_DEF_S1AP_L3_Information_tags_1) + /sizeof(asn_DEF_S1AP_L3_Information_tags_1[0]), /* 1 */ + asn_DEF_S1AP_L3_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_L3_Information_tags_1) + /sizeof(asn_DEF_S1AP_L3_Information_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_L3-Information.h b/lib/s1ap3/asn1c/S1AP_L3-Information.h new file mode 100644 index 0000000000..0f54ee09b4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_L3-Information.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_L3_Information_H_ +#define _S1AP_L3_Information_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_L3-Information */ +typedef OCTET_STRING_t S1AP_L3_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_L3_Information; +asn_struct_free_f S1AP_L3_Information_free; +asn_struct_print_f S1AP_L3_Information_print; +asn_constr_check_f S1AP_L3_Information_constraint; +ber_type_decoder_f S1AP_L3_Information_decode_ber; +der_type_encoder_f S1AP_L3_Information_encode_der; +xer_type_decoder_f S1AP_L3_Information_decode_xer; +xer_type_encoder_f S1AP_L3_Information_encode_xer; +oer_type_decoder_f S1AP_L3_Information_decode_oer; +oer_type_encoder_f S1AP_L3_Information_encode_oer; +per_type_decoder_f S1AP_L3_Information_decode_uper; +per_type_encoder_f S1AP_L3_Information_encode_uper; +per_type_decoder_f S1AP_L3_Information_decode_aper; +per_type_encoder_f S1AP_L3_Information_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_L3_Information_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LAC.c b/lib/s1ap3/asn1c/S1AP_LAC.c new file mode 100644 index 0000000000..f017da50a4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LAC.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LAC.h" + +int +S1AP_LAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_LAC_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +asn_per_constraints_t asn_PER_type_S1AP_LAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LAC = { + "LAC", + "LAC", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_LAC_tags_1, + sizeof(asn_DEF_S1AP_LAC_tags_1) + /sizeof(asn_DEF_S1AP_LAC_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LAC_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LAC_tags_1) + /sizeof(asn_DEF_S1AP_LAC_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_LAC_constr_1, &asn_PER_type_S1AP_LAC_constr_1, S1AP_LAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LAC.h b/lib/s1ap3/asn1c/S1AP_LAC.h new file mode 100644 index 0000000000..72cf9b3f56 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LAC.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LAC_H_ +#define _S1AP_LAC_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_LAC */ +typedef OCTET_STRING_t S1AP_LAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_LAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LAC; +asn_struct_free_f S1AP_LAC_free; +asn_struct_print_f S1AP_LAC_print; +asn_constr_check_f S1AP_LAC_constraint; +ber_type_decoder_f S1AP_LAC_decode_ber; +der_type_encoder_f S1AP_LAC_encode_der; +xer_type_decoder_f S1AP_LAC_decode_xer; +xer_type_encoder_f S1AP_LAC_encode_xer; +oer_type_decoder_f S1AP_LAC_decode_oer; +oer_type_encoder_f S1AP_LAC_encode_oer; +per_type_decoder_f S1AP_LAC_decode_uper; +per_type_encoder_f S1AP_LAC_encode_uper; +per_type_decoder_f S1AP_LAC_decode_aper; +per_type_encoder_f S1AP_LAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LAC_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LAI.c b/lib/s1ap3/asn1c/S1AP_LAI.c new file mode 100644 index 0000000000..abae47ecd7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LAI.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LAI.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_LAI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LAI, pLMNidentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNidentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LAI, lAC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "lAC" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_LAI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P62, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_LAI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_LAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LAI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lAC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LAI_specs_1 = { + sizeof(struct S1AP_LAI), + offsetof(struct S1AP_LAI, _asn_ctx), + asn_MAP_S1AP_LAI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_LAI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LAI = { + "LAI", + "LAI", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LAI_tags_1, + sizeof(asn_DEF_S1AP_LAI_tags_1) + /sizeof(asn_DEF_S1AP_LAI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LAI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LAI_tags_1) + /sizeof(asn_DEF_S1AP_LAI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LAI_1, + 3, /* Elements count */ + &asn_SPC_S1AP_LAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LAI.h b/lib/s1ap3/asn1c/S1AP_LAI.h new file mode 100644 index 0000000000..403e1778eb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LAI.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LAI_H_ +#define _S1AP_LAI_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include "S1AP_LAC.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_LAI */ +typedef struct S1AP_LAI { + S1AP_PLMNidentity_t pLMNidentity; + S1AP_LAC_t lAC; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LAI; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LAI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_LAI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LAI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LHN-ID.c b/lib/s1ap3/asn1c/S1AP_LHN-ID.c new file mode 100644 index 0000000000..1433acc773 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LHN-ID.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LHN-ID.h" + +int +S1AP_LHN_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 32 && size <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_LHN_ID_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(32..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_LHN_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 32, 256 } /* (SIZE(32..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LHN_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LHN_ID = { + "LHN-ID", + "LHN-ID", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_LHN_ID_tags_1, + sizeof(asn_DEF_S1AP_LHN_ID_tags_1) + /sizeof(asn_DEF_S1AP_LHN_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LHN_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LHN_ID_tags_1) + /sizeof(asn_DEF_S1AP_LHN_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_LHN_ID_constr_1, &asn_PER_type_S1AP_LHN_ID_constr_1, S1AP_LHN_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LHN-ID.h b/lib/s1ap3/asn1c/S1AP_LHN-ID.h new file mode 100644 index 0000000000..783cbdf850 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LHN-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LHN_ID_H_ +#define _S1AP_LHN_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_LHN-ID */ +typedef OCTET_STRING_t S1AP_LHN_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LHN_ID; +asn_struct_free_f S1AP_LHN_ID_free; +asn_struct_print_f S1AP_LHN_ID_print; +asn_constr_check_f S1AP_LHN_ID_constraint; +ber_type_decoder_f S1AP_LHN_ID_decode_ber; +der_type_encoder_f S1AP_LHN_ID_encode_der; +xer_type_decoder_f S1AP_LHN_ID_decode_xer; +xer_type_encoder_f S1AP_LHN_ID_encode_xer; +oer_type_decoder_f S1AP_LHN_ID_decode_oer; +oer_type_encoder_f S1AP_LHN_ID_encode_oer; +per_type_decoder_f S1AP_LHN_ID_decode_uper; +per_type_encoder_f S1AP_LHN_ID_encode_uper; +per_type_decoder_f S1AP_LHN_ID_decode_aper; +per_type_encoder_f S1AP_LHN_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LHN_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LPPa-PDU.c b/lib/s1ap3/asn1c/S1AP_LPPa-PDU.c new file mode 100644 index 0000000000..81b0136910 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LPPa-PDU.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LPPa-PDU.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_LPPa_PDU_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LPPa_PDU = { + "LPPa-PDU", + "LPPa-PDU", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_LPPa_PDU_tags_1, + sizeof(asn_DEF_S1AP_LPPa_PDU_tags_1) + /sizeof(asn_DEF_S1AP_LPPa_PDU_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LPPa_PDU_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LPPa_PDU_tags_1) + /sizeof(asn_DEF_S1AP_LPPa_PDU_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LPPa-PDU.h b/lib/s1ap3/asn1c/S1AP_LPPa-PDU.h new file mode 100644 index 0000000000..91b0b23b67 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LPPa-PDU.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LPPa_PDU_H_ +#define _S1AP_LPPa_PDU_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_LPPa-PDU */ +typedef OCTET_STRING_t S1AP_LPPa_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LPPa_PDU; +asn_struct_free_f S1AP_LPPa_PDU_free; +asn_struct_print_f S1AP_LPPa_PDU_print; +asn_constr_check_f S1AP_LPPa_PDU_constraint; +ber_type_decoder_f S1AP_LPPa_PDU_decode_ber; +der_type_encoder_f S1AP_LPPa_PDU_encode_der; +xer_type_decoder_f S1AP_LPPa_PDU_decode_xer; +xer_type_encoder_f S1AP_LPPa_PDU_encode_xer; +oer_type_decoder_f S1AP_LPPa_PDU_decode_oer; +oer_type_encoder_f S1AP_LPPa_PDU_encode_oer; +per_type_decoder_f S1AP_LPPa_PDU_decode_uper; +per_type_encoder_f S1AP_LPPa_PDU_encode_uper; +per_type_decoder_f S1AP_LPPa_PDU_decode_aper; +per_type_encoder_f S1AP_LPPa_PDU_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LPPa_PDU_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.c b/lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.c new file mode 100644 index 0000000000..c5a29b74aa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LastVisitedCell-Item.h" + +#include "S1AP_LastVisitedEUTRANCellInformation.h" +#include "S1AP_LastVisitedGERANCellInformation.h" +static asn_oer_constraints_t asn_OER_type_S1AP_LastVisitedCell_Item_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_LastVisitedCell_Item_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_LastVisitedCell_Item_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_LastVisitedCell_Item, choice.e_UTRAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LastVisitedEUTRANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-UTRAN-Cell" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedCell_Item, choice.uTRAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LastVisitedUTRANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uTRAN-Cell" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_LastVisitedCell_Item, choice.gERAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_LastVisitedGERANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gERAN-Cell" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LastVisitedCell_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-UTRAN-Cell */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uTRAN-Cell */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gERAN-Cell */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_LastVisitedCell_Item_specs_1 = { + sizeof(struct S1AP_LastVisitedCell_Item), + offsetof(struct S1AP_LastVisitedCell_Item, _asn_ctx), + offsetof(struct S1AP_LastVisitedCell_Item, present), + sizeof(((struct S1AP_LastVisitedCell_Item *)0)->present), + asn_MAP_S1AP_LastVisitedCell_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedCell_Item = { + "LastVisitedCell-Item", + "LastVisitedCell-Item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_LastVisitedCell_Item_constr_1, &asn_PER_type_S1AP_LastVisitedCell_Item_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_LastVisitedCell_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_LastVisitedCell_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.h b/lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.h new file mode 100644 index 0000000000..85fd044154 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LastVisitedCell-Item.h @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LastVisitedCell_Item_H_ +#define _S1AP_LastVisitedCell_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_LastVisitedUTRANCellInformation.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_LastVisitedCell_Item_PR { + LastVisitedCell_Item_PR_NOTHING, /* No components present */ + LastVisitedCell_Item_PR_e_UTRAN_Cell, + LastVisitedCell_Item_PR_uTRAN_Cell, + LastVisitedCell_Item_PR_gERAN_Cell + /* Extensions may appear below */ + +} S1AP_LastVisitedCell_Item_PR; + +/* Forward declarations */ +struct S1AP_LastVisitedEUTRANCellInformation; +struct S1AP_LastVisitedGERANCellInformation; + +/* S1AP_LastVisitedCell-Item */ +typedef struct S1AP_LastVisitedCell_Item { + S1AP_LastVisitedCell_Item_PR present; + union S1AP_LastVisitedCell_Item_u { + struct S1AP_LastVisitedEUTRANCellInformation *e_UTRAN_Cell; + S1AP_LastVisitedUTRANCellInformation_t uTRAN_Cell; + struct S1AP_LastVisitedGERANCellInformation *gERAN_Cell; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LastVisitedCell_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedCell_Item; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_LastVisitedCell_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_LastVisitedCell_Item_1[3]; +extern asn_per_constraints_t asn_PER_type_S1AP_LastVisitedCell_Item_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LastVisitedCell_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LastVisitedEUTRANCellInformation.c b/lib/s1ap3/asn1c/S1AP_LastVisitedEUTRANCellInformation.c new file mode 100644 index 0000000000..64a2d2eb49 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LastVisitedEUTRANCellInformation.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LastVisitedEUTRANCellInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_LastVisitedEUTRANCellInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedEUTRANCellInformation, global_Cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-Cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedEUTRANCellInformation, cellType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CellType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedEUTRANCellInformation, time_UE_StayedInCell), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Time_UE_StayedInCell, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "time-UE-StayedInCell" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_LastVisitedEUTRANCellInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P63, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_LastVisitedEUTRANCellInformation_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_LastVisitedEUTRANCellInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LastVisitedEUTRANCellInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-Cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* time-UE-StayedInCell */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LastVisitedEUTRANCellInformation_specs_1 = { + sizeof(struct S1AP_LastVisitedEUTRANCellInformation), + offsetof(struct S1AP_LastVisitedEUTRANCellInformation, _asn_ctx), + asn_MAP_S1AP_LastVisitedEUTRANCellInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_LastVisitedEUTRANCellInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedEUTRANCellInformation = { + "LastVisitedEUTRANCellInformation", + "LastVisitedEUTRANCellInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LastVisitedEUTRANCellInformation_tags_1, + sizeof(asn_DEF_S1AP_LastVisitedEUTRANCellInformation_tags_1) + /sizeof(asn_DEF_S1AP_LastVisitedEUTRANCellInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LastVisitedEUTRANCellInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LastVisitedEUTRANCellInformation_tags_1) + /sizeof(asn_DEF_S1AP_LastVisitedEUTRANCellInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LastVisitedEUTRANCellInformation_1, + 4, /* Elements count */ + &asn_SPC_S1AP_LastVisitedEUTRANCellInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LastVisitedEUTRANCellInformation.h b/lib/s1ap3/asn1c/S1AP_LastVisitedEUTRANCellInformation.h new file mode 100644 index 0000000000..26fdcdf0dd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LastVisitedEUTRANCellInformation.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LastVisitedEUTRANCellInformation_H_ +#define _S1AP_LastVisitedEUTRANCellInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include "S1AP_CellType.h" +#include "S1AP_Time-UE-StayedInCell.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_LastVisitedEUTRANCellInformation */ +typedef struct S1AP_LastVisitedEUTRANCellInformation { + S1AP_EUTRAN_CGI_t global_Cell_ID; + S1AP_CellType_t cellType; + S1AP_Time_UE_StayedInCell_t time_UE_StayedInCell; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LastVisitedEUTRANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedEUTRANCellInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LastVisitedEUTRANCellInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_LastVisitedEUTRANCellInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LastVisitedEUTRANCellInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LastVisitedGERANCellInformation.c b/lib/s1ap3/asn1c/S1AP_LastVisitedGERANCellInformation.c new file mode 100644 index 0000000000..148f06a469 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LastVisitedGERANCellInformation.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LastVisitedGERANCellInformation.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_LastVisitedGERANCellInformation_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_LastVisitedGERANCellInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_LastVisitedGERANCellInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedGERANCellInformation, choice.undefined), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "undefined" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LastVisitedGERANCellInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* undefined */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_LastVisitedGERANCellInformation_specs_1 = { + sizeof(struct S1AP_LastVisitedGERANCellInformation), + offsetof(struct S1AP_LastVisitedGERANCellInformation, _asn_ctx), + offsetof(struct S1AP_LastVisitedGERANCellInformation, present), + sizeof(((struct S1AP_LastVisitedGERANCellInformation *)0)->present), + asn_MAP_S1AP_LastVisitedGERANCellInformation_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedGERANCellInformation = { + "LastVisitedGERANCellInformation", + "LastVisitedGERANCellInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_LastVisitedGERANCellInformation_constr_1, &asn_PER_type_S1AP_LastVisitedGERANCellInformation_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_LastVisitedGERANCellInformation_1, + 1, /* Elements count */ + &asn_SPC_S1AP_LastVisitedGERANCellInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LastVisitedGERANCellInformation.h b/lib/s1ap3/asn1c/S1AP_LastVisitedGERANCellInformation.h new file mode 100644 index 0000000000..c379c3eb6e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LastVisitedGERANCellInformation.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LastVisitedGERANCellInformation_H_ +#define _S1AP_LastVisitedGERANCellInformation_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_LastVisitedGERANCellInformation_PR { + LastVisitedGERANCellInformation_PR_NOTHING, /* No components present */ + LastVisitedGERANCellInformation_PR_undefined + /* Extensions may appear below */ + +} S1AP_LastVisitedGERANCellInformation_PR; + +/* S1AP_LastVisitedGERANCellInformation */ +typedef struct S1AP_LastVisitedGERANCellInformation { + S1AP_LastVisitedGERANCellInformation_PR present; + union S1AP_LastVisitedGERANCellInformation_u { + NULL_t undefined; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LastVisitedGERANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedGERANCellInformation; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_LastVisitedGERANCellInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_LastVisitedGERANCellInformation_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_LastVisitedGERANCellInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LastVisitedGERANCellInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LastVisitedUTRANCellInformation.c b/lib/s1ap3/asn1c/S1AP_LastVisitedUTRANCellInformation.c new file mode 100644 index 0000000000..37dff89c2c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LastVisitedUTRANCellInformation.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LastVisitedUTRANCellInformation.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_LastVisitedUTRANCellInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedUTRANCellInformation = { + "LastVisitedUTRANCellInformation", + "LastVisitedUTRANCellInformation", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_LastVisitedUTRANCellInformation_tags_1, + sizeof(asn_DEF_S1AP_LastVisitedUTRANCellInformation_tags_1) + /sizeof(asn_DEF_S1AP_LastVisitedUTRANCellInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LastVisitedUTRANCellInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LastVisitedUTRANCellInformation_tags_1) + /sizeof(asn_DEF_S1AP_LastVisitedUTRANCellInformation_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LastVisitedUTRANCellInformation.h b/lib/s1ap3/asn1c/S1AP_LastVisitedUTRANCellInformation.h new file mode 100644 index 0000000000..f2af069a3c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LastVisitedUTRANCellInformation.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LastVisitedUTRANCellInformation_H_ +#define _S1AP_LastVisitedUTRANCellInformation_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_LastVisitedUTRANCellInformation */ +typedef OCTET_STRING_t S1AP_LastVisitedUTRANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedUTRANCellInformation; +asn_struct_free_f S1AP_LastVisitedUTRANCellInformation_free; +asn_struct_print_f S1AP_LastVisitedUTRANCellInformation_print; +asn_constr_check_f S1AP_LastVisitedUTRANCellInformation_constraint; +ber_type_decoder_f S1AP_LastVisitedUTRANCellInformation_decode_ber; +der_type_encoder_f S1AP_LastVisitedUTRANCellInformation_encode_der; +xer_type_decoder_f S1AP_LastVisitedUTRANCellInformation_decode_xer; +xer_type_encoder_f S1AP_LastVisitedUTRANCellInformation_encode_xer; +oer_type_decoder_f S1AP_LastVisitedUTRANCellInformation_decode_oer; +oer_type_encoder_f S1AP_LastVisitedUTRANCellInformation_encode_oer; +per_type_decoder_f S1AP_LastVisitedUTRANCellInformation_decode_uper; +per_type_encoder_f S1AP_LastVisitedUTRANCellInformation_encode_uper; +per_type_decoder_f S1AP_LastVisitedUTRANCellInformation_decode_aper; +per_type_encoder_f S1AP_LastVisitedUTRANCellInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LastVisitedUTRANCellInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Links-to-log.c b/lib/s1ap3/asn1c/S1AP_Links-to-log.c new file mode 100644 index 0000000000..c4d656888a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Links-to-log.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Links-to-log.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Links_to_log_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Links_to_log_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Links_to_log_value2enum_1[] = { + { 0, 6, "uplink" }, + { 1, 8, "downlink" }, + { 2, 24, "both-uplink-and-downlink" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_Links_to_log_enum2value_1[] = { + 2, /* both-uplink-and-downlink(2) */ + 1, /* downlink(1) */ + 0 /* uplink(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_Links_to_log_specs_1 = { + asn_MAP_S1AP_Links_to_log_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Links_to_log_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Links_to_log_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Links_to_log = { + "Links-to-log", + "Links-to-log", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Links_to_log_tags_1, + sizeof(asn_DEF_S1AP_Links_to_log_tags_1) + /sizeof(asn_DEF_S1AP_Links_to_log_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Links_to_log_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Links_to_log_tags_1) + /sizeof(asn_DEF_S1AP_Links_to_log_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Links_to_log_constr_1, &asn_PER_type_S1AP_Links_to_log_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Links_to_log_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Links-to-log.h b/lib/s1ap3/asn1c/S1AP_Links-to-log.h new file mode 100644 index 0000000000..3d70911165 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Links-to-log.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Links_to_log_H_ +#define _S1AP_Links_to_log_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Links_to_log { + S1AP_Links_to_log_uplink = 0, + S1AP_Links_to_log_downlink = 1, + S1AP_Links_to_log_both_uplink_and_downlink = 2 + /* + * Enumeration is extensible + */ +} e_S1AP_Links_to_log; + +/* S1AP_Links-to-log */ +typedef long S1AP_Links_to_log_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Links_to_log_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Links_to_log; +extern const asn_INTEGER_specifics_t asn_SPC_Links_to_log_specs_1; +asn_struct_free_f Links_to_log_free; +asn_struct_print_f Links_to_log_print; +asn_constr_check_f Links_to_log_constraint; +ber_type_decoder_f Links_to_log_decode_ber; +der_type_encoder_f Links_to_log_encode_der; +xer_type_decoder_f Links_to_log_decode_xer; +xer_type_encoder_f Links_to_log_encode_xer; +oer_type_decoder_f Links_to_log_decode_oer; +oer_type_encoder_f Links_to_log_encode_oer; +per_type_decoder_f Links_to_log_decode_uper; +per_type_encoder_f Links_to_log_encode_uper; +per_type_decoder_f Links_to_log_decode_aper; +per_type_encoder_f Links_to_log_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Links_to_log_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ListeningSubframePattern.c b/lib/s1ap3/asn1c/S1AP_ListeningSubframePattern.c new file mode 100644 index 0000000000..f41dee77cc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ListeningSubframePattern.c @@ -0,0 +1,161 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ListeningSubframePattern.h" + +#include "S1AP_ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_S1AP_pattern_offset_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 10239)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_S1AP_pattern_period_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_pattern_period_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_pattern_offset_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_pattern_offset_constr_8 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 14, 14, 0, 10239 } /* (0..10239,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_pattern_period_value2enum_2[] = { + { 0, 6, "ms1280" }, + { 1, 6, "ms2560" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_pattern_period_enum2value_2[] = { + 3, /* ms10240(3) */ + 0, /* ms1280(0) */ + 1, /* ms2560(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_pattern_period_specs_2 = { + asn_MAP_S1AP_pattern_period_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_pattern_period_enum2value_2, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_pattern_period_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_pattern_period_2 = { + "pattern-period", + "pattern-period", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_pattern_period_tags_2, + sizeof(asn_DEF_S1AP_pattern_period_tags_2) + /sizeof(asn_DEF_S1AP_pattern_period_tags_2[0]) - 1, /* 1 */ + asn_DEF_S1AP_pattern_period_tags_2, /* Same as above */ + sizeof(asn_DEF_S1AP_pattern_period_tags_2) + /sizeof(asn_DEF_S1AP_pattern_period_tags_2[0]), /* 2 */ + { &asn_OER_type_S1AP_pattern_period_constr_2, &asn_PER_type_S1AP_pattern_period_constr_2, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_pattern_period_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ListeningSubframePattern_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ListeningSubframePattern, pattern_period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_pattern_period_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pattern-period" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ListeningSubframePattern, pattern_offset), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_S1AP_pattern_offset_constr_8, &asn_PER_memb_S1AP_pattern_offset_constr_8, memb_S1AP_pattern_offset_constraint_1 }, + 0, 0, /* No default value */ + "pattern-offset" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ListeningSubframePattern, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P64, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ListeningSubframePattern_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ListeningSubframePattern_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ListeningSubframePattern_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pattern-period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pattern-offset */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ListeningSubframePattern_specs_1 = { + sizeof(struct S1AP_ListeningSubframePattern), + offsetof(struct S1AP_ListeningSubframePattern, _asn_ctx), + asn_MAP_S1AP_ListeningSubframePattern_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_ListeningSubframePattern_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ListeningSubframePattern = { + "ListeningSubframePattern", + "ListeningSubframePattern", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ListeningSubframePattern_tags_1, + sizeof(asn_DEF_S1AP_ListeningSubframePattern_tags_1) + /sizeof(asn_DEF_S1AP_ListeningSubframePattern_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ListeningSubframePattern_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ListeningSubframePattern_tags_1) + /sizeof(asn_DEF_S1AP_ListeningSubframePattern_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ListeningSubframePattern_1, + 3, /* Elements count */ + &asn_SPC_S1AP_ListeningSubframePattern_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ListeningSubframePattern.h b/lib/s1ap3/asn1c/S1AP_ListeningSubframePattern.h new file mode 100644 index 0000000000..f29baae79a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ListeningSubframePattern.h @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ListeningSubframePattern_H_ +#define _S1AP_ListeningSubframePattern_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ListeningSubframePattern__pattern_period { + S1AP_ListeningSubframePattern__pattern_period_ms1280 = 0, + S1AP_ListeningSubframePattern__pattern_period_ms2560 = 1, + S1AP_ListeningSubframePattern__pattern_period_ms5120 = 2, + S1AP_ListeningSubframePattern__pattern_period_ms10240 = 3 + /* + * Enumeration is extensible + */ +} e_S1AP_ListeningSubframePattern__pattern_period; + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ListeningSubframePattern */ +typedef struct S1AP_ListeningSubframePattern { + long pattern_period; + long pattern_offset; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ListeningSubframePattern_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_S1AP_pattern_period_2; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ListeningSubframePattern; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ListeningSubframePattern_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ListeningSubframePattern_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ListeningSubframePattern_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LocationReport.c b/lib/s1ap3/asn1c/S1AP_LocationReport.c new file mode 100644 index 0000000000..d9ba805c91 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LocationReport.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LocationReport.h" + +asn_TYPE_member_t asn_MBR_S1AP_LocationReport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P60, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LocationReport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LocationReport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReport_specs_1 = { + sizeof(struct S1AP_LocationReport), + offsetof(struct S1AP_LocationReport, _asn_ctx), + asn_MAP_S1AP_LocationReport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReport = { + "LocationReport", + "LocationReport", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LocationReport_tags_1, + sizeof(asn_DEF_S1AP_LocationReport_tags_1) + /sizeof(asn_DEF_S1AP_LocationReport_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LocationReport_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LocationReport_tags_1) + /sizeof(asn_DEF_S1AP_LocationReport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LocationReport_1, + 1, /* Elements count */ + &asn_SPC_S1AP_LocationReport_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LocationReport.h b/lib/s1ap3/asn1c/S1AP_LocationReport.h new file mode 100644 index 0000000000..dcc9c482e3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LocationReport.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LocationReport_H_ +#define _S1AP_LocationReport_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_LocationReport */ +typedef struct S1AP_LocationReport { + S1AP_ProtocolIE_Container_6551P60_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LocationReport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReport; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReport_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_LocationReport_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LocationReport_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LocationReportingControl.c b/lib/s1ap3/asn1c/S1AP_LocationReportingControl.c new file mode 100644 index 0000000000..b0e916a3f3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LocationReportingControl.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LocationReportingControl.h" + +asn_TYPE_member_t asn_MBR_S1AP_LocationReportingControl_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingControl, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P58, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LocationReportingControl_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LocationReportingControl_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportingControl_specs_1 = { + sizeof(struct S1AP_LocationReportingControl), + offsetof(struct S1AP_LocationReportingControl, _asn_ctx), + asn_MAP_S1AP_LocationReportingControl_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportingControl = { + "LocationReportingControl", + "LocationReportingControl", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LocationReportingControl_tags_1, + sizeof(asn_DEF_S1AP_LocationReportingControl_tags_1) + /sizeof(asn_DEF_S1AP_LocationReportingControl_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LocationReportingControl_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LocationReportingControl_tags_1) + /sizeof(asn_DEF_S1AP_LocationReportingControl_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LocationReportingControl_1, + 1, /* Elements count */ + &asn_SPC_S1AP_LocationReportingControl_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LocationReportingControl.h b/lib/s1ap3/asn1c/S1AP_LocationReportingControl.h new file mode 100644 index 0000000000..f86a3b45ff --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LocationReportingControl.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LocationReportingControl_H_ +#define _S1AP_LocationReportingControl_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_LocationReportingControl */ +typedef struct S1AP_LocationReportingControl { + S1AP_ProtocolIE_Container_6551P58_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LocationReportingControl_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportingControl; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportingControl_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_LocationReportingControl_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LocationReportingControl_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LocationReportingFailureIndication.c b/lib/s1ap3/asn1c/S1AP_LocationReportingFailureIndication.c new file mode 100644 index 0000000000..d19b8e5efb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LocationReportingFailureIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LocationReportingFailureIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_LocationReportingFailureIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingFailureIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P59, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LocationReportingFailureIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LocationReportingFailureIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportingFailureIndication_specs_1 = { + sizeof(struct S1AP_LocationReportingFailureIndication), + offsetof(struct S1AP_LocationReportingFailureIndication, _asn_ctx), + asn_MAP_S1AP_LocationReportingFailureIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportingFailureIndication = { + "LocationReportingFailureIndication", + "LocationReportingFailureIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LocationReportingFailureIndication_tags_1, + sizeof(asn_DEF_S1AP_LocationReportingFailureIndication_tags_1) + /sizeof(asn_DEF_S1AP_LocationReportingFailureIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LocationReportingFailureIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LocationReportingFailureIndication_tags_1) + /sizeof(asn_DEF_S1AP_LocationReportingFailureIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LocationReportingFailureIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_LocationReportingFailureIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LocationReportingFailureIndication.h b/lib/s1ap3/asn1c/S1AP_LocationReportingFailureIndication.h new file mode 100644 index 0000000000..dd829667dd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LocationReportingFailureIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LocationReportingFailureIndication_H_ +#define _S1AP_LocationReportingFailureIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_LocationReportingFailureIndication */ +typedef struct S1AP_LocationReportingFailureIndication { + S1AP_ProtocolIE_Container_6551P59_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LocationReportingFailureIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportingFailureIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportingFailureIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_LocationReportingFailureIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LocationReportingFailureIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.c b/lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.c new file mode 100644 index 0000000000..411b0cfb0b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.c @@ -0,0 +1,84 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LoggedMBSFNMDT.h" + +#include "S1AP_MBSFN-ResultToLog.h" +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_LoggedMBSFNMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMBSFNMDT, loggingInterval), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LoggingInterval, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "loggingInterval" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMBSFNMDT, loggingDuration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LoggingDuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "loggingDuration" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_LoggedMBSFNMDT, mBSFN_ResultToLog), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MBSFN_ResultToLog, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mBSFN-ResultToLog" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_LoggedMBSFNMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P66, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_LoggedMBSFNMDT_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_LoggedMBSFNMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LoggedMBSFNMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* loggingInterval */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* loggingDuration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mBSFN-ResultToLog */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_LoggedMBSFNMDT_specs_1 = { + sizeof(struct S1AP_LoggedMBSFNMDT), + offsetof(struct S1AP_LoggedMBSFNMDT, _asn_ctx), + asn_MAP_S1AP_LoggedMBSFNMDT_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_LoggedMBSFNMDT_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LoggedMBSFNMDT = { + "LoggedMBSFNMDT", + "LoggedMBSFNMDT", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LoggedMBSFNMDT_tags_1, + sizeof(asn_DEF_S1AP_LoggedMBSFNMDT_tags_1) + /sizeof(asn_DEF_S1AP_LoggedMBSFNMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LoggedMBSFNMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LoggedMBSFNMDT_tags_1) + /sizeof(asn_DEF_S1AP_LoggedMBSFNMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LoggedMBSFNMDT_1, + 4, /* Elements count */ + &asn_SPC_S1AP_LoggedMBSFNMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.h b/lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.h new file mode 100644 index 0000000000..dd6b10ee65 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LoggedMBSFNMDT.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LoggedMBSFNMDT_H_ +#define _S1AP_LoggedMBSFNMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_LoggingInterval.h" +#include "S1AP_LoggingDuration.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_MBSFN_ResultToLog; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_LoggedMBSFNMDT */ +typedef struct S1AP_LoggedMBSFNMDT { + S1AP_LoggingInterval_t loggingInterval; + S1AP_LoggingDuration_t loggingDuration; + struct S1AP_MBSFN_ResultToLog *mBSFN_ResultToLog; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LoggedMBSFNMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LoggedMBSFNMDT; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LoggedMBSFNMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LoggedMDT.c b/lib/s1ap3/asn1c/S1AP_LoggedMDT.c new file mode 100644 index 0000000000..6d51ae3d8c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LoggedMDT.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LoggedMDT.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_LoggedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMDT, loggingInterval), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LoggingInterval, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "loggingInterval" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMDT, loggingDuration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LoggingDuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "loggingDuration" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_LoggedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P65, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_LoggedMDT_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_LoggedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LoggedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* loggingInterval */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* loggingDuration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LoggedMDT_specs_1 = { + sizeof(struct S1AP_LoggedMDT), + offsetof(struct S1AP_LoggedMDT, _asn_ctx), + asn_MAP_S1AP_LoggedMDT_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_LoggedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LoggedMDT = { + "LoggedMDT", + "LoggedMDT", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LoggedMDT_tags_1, + sizeof(asn_DEF_S1AP_LoggedMDT_tags_1) + /sizeof(asn_DEF_S1AP_LoggedMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LoggedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LoggedMDT_tags_1) + /sizeof(asn_DEF_S1AP_LoggedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LoggedMDT_1, + 3, /* Elements count */ + &asn_SPC_S1AP_LoggedMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LoggedMDT.h b/lib/s1ap3/asn1c/S1AP_LoggedMDT.h new file mode 100644 index 0000000000..7b65036c5f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LoggedMDT.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LoggedMDT_H_ +#define _S1AP_LoggedMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_LoggingInterval.h" +#include "S1AP_LoggingDuration.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_LoggedMDT */ +typedef struct S1AP_LoggedMDT { + S1AP_LoggingInterval_t loggingInterval; + S1AP_LoggingDuration_t loggingDuration; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LoggedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LoggedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LoggedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_LoggedMDT_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LoggedMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LoggingDuration.c b/lib/s1ap3/asn1c/S1AP_LoggingDuration.c new file mode 100644 index 0000000000..bd1c40a355 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LoggingDuration.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LoggingDuration.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_LoggingDuration_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_LoggingDuration_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 5 } /* (0..5) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_LoggingDuration_value2enum_1[] = { + { 0, 3, "m10" }, + { 1, 3, "m20" }, + { 2, 3, "m40" }, + { 3, 3, "m60" }, + { 4, 3, "m90" }, + { 5, 4, "m120" } +}; +static const unsigned int asn_MAP_S1AP_LoggingDuration_enum2value_1[] = { + 0, /* m10(0) */ + 5, /* m120(5) */ + 1, /* m20(1) */ + 2, /* m40(2) */ + 3, /* m60(3) */ + 4 /* m90(4) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_LoggingDuration_specs_1 = { + asn_MAP_S1AP_LoggingDuration_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_LoggingDuration_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LoggingDuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LoggingDuration = { + "LoggingDuration", + "LoggingDuration", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_LoggingDuration_tags_1, + sizeof(asn_DEF_S1AP_LoggingDuration_tags_1) + /sizeof(asn_DEF_S1AP_LoggingDuration_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LoggingDuration_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LoggingDuration_tags_1) + /sizeof(asn_DEF_S1AP_LoggingDuration_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_LoggingDuration_constr_1, &asn_PER_type_S1AP_LoggingDuration_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_LoggingDuration_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LoggingDuration.h b/lib/s1ap3/asn1c/S1AP_LoggingDuration.h new file mode 100644 index 0000000000..b802233211 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LoggingDuration.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LoggingDuration_H_ +#define _S1AP_LoggingDuration_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_LoggingDuration { + S1AP_LoggingDuration_m10 = 0, + S1AP_LoggingDuration_m20 = 1, + S1AP_LoggingDuration_m40 = 2, + S1AP_LoggingDuration_m60 = 3, + S1AP_LoggingDuration_m90 = 4, + S1AP_LoggingDuration_m120 = 5 +} e_S1AP_LoggingDuration; + +/* S1AP_LoggingDuration */ +typedef long S1AP_LoggingDuration_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_LoggingDuration_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LoggingDuration; +extern const asn_INTEGER_specifics_t asn_SPC_LoggingDuration_specs_1; +asn_struct_free_f LoggingDuration_free; +asn_struct_print_f LoggingDuration_print; +asn_constr_check_f LoggingDuration_constraint; +ber_type_decoder_f LoggingDuration_decode_ber; +der_type_encoder_f LoggingDuration_encode_der; +xer_type_decoder_f LoggingDuration_decode_xer; +xer_type_encoder_f LoggingDuration_encode_xer; +oer_type_decoder_f LoggingDuration_decode_oer; +oer_type_encoder_f LoggingDuration_encode_oer; +per_type_decoder_f LoggingDuration_decode_uper; +per_type_encoder_f LoggingDuration_encode_uper; +per_type_decoder_f LoggingDuration_decode_aper; +per_type_encoder_f LoggingDuration_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LoggingDuration_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_LoggingInterval.c b/lib/s1ap3/asn1c/S1AP_LoggingInterval.c new file mode 100644 index 0000000000..f81ea5a669 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LoggingInterval.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_LoggingInterval.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_LoggingInterval_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_LoggingInterval_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_LoggingInterval_value2enum_1[] = { + { 0, 5, "ms128" }, + { 1, 5, "ms256" }, + { 2, 5, "ms512" }, + { 3, 6, "ms1024" }, + { 4, 6, "ms2048" }, + { 5, 6, "ms3072" }, + { 6, 6, "ms4096" }, + { 7, 6, "ms6144" } +}; +static const unsigned int asn_MAP_S1AP_LoggingInterval_enum2value_1[] = { + 3, /* ms1024(3) */ + 0, /* ms128(0) */ + 4, /* ms2048(4) */ + 1, /* ms256(1) */ + 5, /* ms3072(5) */ + 6, /* ms4096(6) */ + 2, /* ms512(2) */ + 7 /* ms6144(7) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_LoggingInterval_specs_1 = { + asn_MAP_S1AP_LoggingInterval_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_LoggingInterval_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LoggingInterval_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LoggingInterval = { + "LoggingInterval", + "LoggingInterval", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_LoggingInterval_tags_1, + sizeof(asn_DEF_S1AP_LoggingInterval_tags_1) + /sizeof(asn_DEF_S1AP_LoggingInterval_tags_1[0]), /* 1 */ + asn_DEF_S1AP_LoggingInterval_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_LoggingInterval_tags_1) + /sizeof(asn_DEF_S1AP_LoggingInterval_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_LoggingInterval_constr_1, &asn_PER_type_S1AP_LoggingInterval_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_LoggingInterval_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_LoggingInterval.h b/lib/s1ap3/asn1c/S1AP_LoggingInterval.h new file mode 100644 index 0000000000..c5aaa0dd57 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_LoggingInterval.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_LoggingInterval_H_ +#define _S1AP_LoggingInterval_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_LoggingInterval { + S1AP_LoggingInterval_ms128 = 0, + S1AP_LoggingInterval_ms256 = 1, + S1AP_LoggingInterval_ms512 = 2, + S1AP_LoggingInterval_ms1024 = 3, + S1AP_LoggingInterval_ms2048 = 4, + S1AP_LoggingInterval_ms3072 = 5, + S1AP_LoggingInterval_ms4096 = 6, + S1AP_LoggingInterval_ms6144 = 7 +} e_S1AP_LoggingInterval; + +/* S1AP_LoggingInterval */ +typedef long S1AP_LoggingInterval_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_LoggingInterval_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LoggingInterval; +extern const asn_INTEGER_specifics_t asn_SPC_LoggingInterval_specs_1; +asn_struct_free_f LoggingInterval_free; +asn_struct_print_f LoggingInterval_print; +asn_constr_check_f LoggingInterval_constraint; +ber_type_decoder_f LoggingInterval_decode_ber; +der_type_encoder_f LoggingInterval_encode_der; +xer_type_decoder_f LoggingInterval_decode_xer; +xer_type_encoder_f LoggingInterval_encode_xer; +oer_type_decoder_f LoggingInterval_decode_oer; +oer_type_encoder_f LoggingInterval_encode_oer; +per_type_decoder_f LoggingInterval_decode_uper; +per_type_encoder_f LoggingInterval_encode_uper; +per_type_decoder_f LoggingInterval_decode_aper; +per_type_encoder_f LoggingInterval_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_LoggingInterval_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M-TMSI.c b/lib/s1ap3/asn1c/S1AP_M-TMSI.c new file mode 100644 index 0000000000..078964f485 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M-TMSI.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M-TMSI.h" + +int +S1AP_M_TMSI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_M_TMSI_constr_1 CC_NOTUSED = { + { 0, 0 }, + 4 /* (SIZE(4..4)) */}; +asn_per_constraints_t asn_PER_type_S1AP_M_TMSI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M_TMSI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M_TMSI = { + "M-TMSI", + "M-TMSI", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_M_TMSI_tags_1, + sizeof(asn_DEF_S1AP_M_TMSI_tags_1) + /sizeof(asn_DEF_S1AP_M_TMSI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M_TMSI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M_TMSI_tags_1) + /sizeof(asn_DEF_S1AP_M_TMSI_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_M_TMSI_constr_1, &asn_PER_type_S1AP_M_TMSI_constr_1, S1AP_M_TMSI_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M-TMSI.h b/lib/s1ap3/asn1c/S1AP_M-TMSI.h new file mode 100644 index 0000000000..c246309621 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M-TMSI.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M_TMSI_H_ +#define _S1AP_M_TMSI_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_M-TMSI */ +typedef OCTET_STRING_t S1AP_M_TMSI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_M_TMSI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M_TMSI; +asn_struct_free_f S1AP_M_TMSI_free; +asn_struct_print_f S1AP_M_TMSI_print; +asn_constr_check_f S1AP_M_TMSI_constraint; +ber_type_decoder_f S1AP_M_TMSI_decode_ber; +der_type_encoder_f S1AP_M_TMSI_encode_der; +xer_type_decoder_f S1AP_M_TMSI_decode_xer; +xer_type_encoder_f S1AP_M_TMSI_encode_xer; +oer_type_decoder_f S1AP_M_TMSI_decode_oer; +oer_type_encoder_f S1AP_M_TMSI_encode_oer; +per_type_decoder_f S1AP_M_TMSI_decode_uper; +per_type_encoder_f S1AP_M_TMSI_encode_uper; +per_type_decoder_f S1AP_M_TMSI_decode_aper; +per_type_encoder_f S1AP_M_TMSI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M_TMSI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.c b/lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.c new file mode 100644 index 0000000000..adbea97670 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M1PeriodicReporting.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_M1PeriodicReporting_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M1PeriodicReporting, reportInterval), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ReportIntervalMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reportInterval" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M1PeriodicReporting, reportAmount), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ReportAmountMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reportAmount" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_M1PeriodicReporting, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P78, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_M1PeriodicReporting_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_M1PeriodicReporting_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M1PeriodicReporting_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportInterval */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportAmount */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_M1PeriodicReporting_specs_1 = { + sizeof(struct S1AP_M1PeriodicReporting), + offsetof(struct S1AP_M1PeriodicReporting, _asn_ctx), + asn_MAP_S1AP_M1PeriodicReporting_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_M1PeriodicReporting_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M1PeriodicReporting = { + "M1PeriodicReporting", + "M1PeriodicReporting", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M1PeriodicReporting_tags_1, + sizeof(asn_DEF_S1AP_M1PeriodicReporting_tags_1) + /sizeof(asn_DEF_S1AP_M1PeriodicReporting_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M1PeriodicReporting_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M1PeriodicReporting_tags_1) + /sizeof(asn_DEF_S1AP_M1PeriodicReporting_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M1PeriodicReporting_1, + 3, /* Elements count */ + &asn_SPC_S1AP_M1PeriodicReporting_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.h b/lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.h new file mode 100644 index 0000000000..00c1ca4845 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M1PeriodicReporting.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M1PeriodicReporting_H_ +#define _S1AP_M1PeriodicReporting_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ReportIntervalMDT.h" +#include "S1AP_ReportAmountMDT.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_M1PeriodicReporting */ +typedef struct S1AP_M1PeriodicReporting { + S1AP_ReportIntervalMDT_t reportInterval; + S1AP_ReportAmountMDT_t reportAmount; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M1PeriodicReporting_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M1PeriodicReporting; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_M1PeriodicReporting_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_M1PeriodicReporting_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M1PeriodicReporting_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.c b/lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.c new file mode 100644 index 0000000000..4b4aed8777 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M1ReportingTrigger.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_M1ReportingTrigger_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_M1ReportingTrigger_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_M1ReportingTrigger_value2enum_1[] = { + { 0, 8, "periodic" }, + { 1, 16, "a2eventtriggered" }, + { 2, 25, "a2eventtriggered-periodic" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_M1ReportingTrigger_enum2value_1[] = { + 1, /* a2eventtriggered(1) */ + 2, /* a2eventtriggered-periodic(2) */ + 0 /* periodic(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_M1ReportingTrigger_specs_1 = { + asn_MAP_S1AP_M1ReportingTrigger_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_M1ReportingTrigger_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M1ReportingTrigger_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M1ReportingTrigger = { + "M1ReportingTrigger", + "M1ReportingTrigger", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_M1ReportingTrigger_tags_1, + sizeof(asn_DEF_S1AP_M1ReportingTrigger_tags_1) + /sizeof(asn_DEF_S1AP_M1ReportingTrigger_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M1ReportingTrigger_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M1ReportingTrigger_tags_1) + /sizeof(asn_DEF_S1AP_M1ReportingTrigger_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_M1ReportingTrigger_constr_1, &asn_PER_type_S1AP_M1ReportingTrigger_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_M1ReportingTrigger_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.h b/lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.h new file mode 100644 index 0000000000..3654884c86 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M1ReportingTrigger.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M1ReportingTrigger_H_ +#define _S1AP_M1ReportingTrigger_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_M1ReportingTrigger { + S1AP_M1ReportingTrigger_periodic = 0, + S1AP_M1ReportingTrigger_a2eventtriggered = 1, + /* + * Enumeration is extensible + */ + S1AP_M1ReportingTrigger_a2eventtriggered_periodic = 2 +} e_S1AP_M1ReportingTrigger; + +/* S1AP_M1ReportingTrigger */ +typedef long S1AP_M1ReportingTrigger_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_M1ReportingTrigger_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M1ReportingTrigger; +extern const asn_INTEGER_specifics_t asn_SPC_M1ReportingTrigger_specs_1; +asn_struct_free_f M1ReportingTrigger_free; +asn_struct_print_f M1ReportingTrigger_print; +asn_constr_check_f M1ReportingTrigger_constraint; +ber_type_decoder_f M1ReportingTrigger_decode_ber; +der_type_encoder_f M1ReportingTrigger_encode_der; +xer_type_decoder_f M1ReportingTrigger_decode_xer; +xer_type_encoder_f M1ReportingTrigger_encode_xer; +oer_type_decoder_f M1ReportingTrigger_decode_oer; +oer_type_encoder_f M1ReportingTrigger_encode_oer; +per_type_decoder_f M1ReportingTrigger_decode_uper; +per_type_encoder_f M1ReportingTrigger_encode_uper; +per_type_decoder_f M1ReportingTrigger_decode_aper; +per_type_encoder_f M1ReportingTrigger_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M1ReportingTrigger_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.c b/lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.c new file mode 100644 index 0000000000..52f9ab80af --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M1ThresholdEventA2.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_M1ThresholdEventA2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M1ThresholdEventA2, measurementThreshold), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_MeasurementThresholdA2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementThreshold" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_M1ThresholdEventA2, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P106, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_M1ThresholdEventA2_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_M1ThresholdEventA2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M1ThresholdEventA2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementThreshold */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_M1ThresholdEventA2_specs_1 = { + sizeof(struct S1AP_M1ThresholdEventA2), + offsetof(struct S1AP_M1ThresholdEventA2, _asn_ctx), + asn_MAP_S1AP_M1ThresholdEventA2_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_M1ThresholdEventA2_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M1ThresholdEventA2 = { + "M1ThresholdEventA2", + "M1ThresholdEventA2", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M1ThresholdEventA2_tags_1, + sizeof(asn_DEF_S1AP_M1ThresholdEventA2_tags_1) + /sizeof(asn_DEF_S1AP_M1ThresholdEventA2_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M1ThresholdEventA2_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M1ThresholdEventA2_tags_1) + /sizeof(asn_DEF_S1AP_M1ThresholdEventA2_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M1ThresholdEventA2_1, + 2, /* Elements count */ + &asn_SPC_S1AP_M1ThresholdEventA2_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.h b/lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.h new file mode 100644 index 0000000000..c57032fa0c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M1ThresholdEventA2.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M1ThresholdEventA2_H_ +#define _S1AP_M1ThresholdEventA2_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MeasurementThresholdA2.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_M1ThresholdEventA2 */ +typedef struct S1AP_M1ThresholdEventA2 { + S1AP_MeasurementThresholdA2_t measurementThreshold; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M1ThresholdEventA2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M1ThresholdEventA2; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_M1ThresholdEventA2_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_M1ThresholdEventA2_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M1ThresholdEventA2_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M3Configuration.c b/lib/s1ap3/asn1c/S1AP_M3Configuration.c new file mode 100644 index 0000000000..f934ca33bd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M3Configuration.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M3Configuration.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_M3Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M3Configuration, m3period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M3period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m3period" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_M3Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P67, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_M3Configuration_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_M3Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M3Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m3period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_M3Configuration_specs_1 = { + sizeof(struct S1AP_M3Configuration), + offsetof(struct S1AP_M3Configuration, _asn_ctx), + asn_MAP_S1AP_M3Configuration_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_M3Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M3Configuration = { + "M3Configuration", + "M3Configuration", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M3Configuration_tags_1, + sizeof(asn_DEF_S1AP_M3Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M3Configuration_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M3Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M3Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M3Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M3Configuration_1, + 2, /* Elements count */ + &asn_SPC_S1AP_M3Configuration_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M3Configuration.h b/lib/s1ap3/asn1c/S1AP_M3Configuration.h new file mode 100644 index 0000000000..b573b78e12 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M3Configuration.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M3Configuration_H_ +#define _S1AP_M3Configuration_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_M3period.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_M3Configuration */ +typedef struct S1AP_M3Configuration { + S1AP_M3period_t m3period; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M3Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M3Configuration; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M3Configuration_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M3period.c b/lib/s1ap3/asn1c/S1AP_M3period.c new file mode 100644 index 0000000000..3a30813903 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M3period.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M3period.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_M3period_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_M3period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_M3period_value2enum_1[] = { + { 0, 5, "ms100" }, + { 1, 6, "ms1000" }, + { 2, 7, "ms10000" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_M3period_enum2value_1[] = { + 0, /* ms100(0) */ + 1, /* ms1000(1) */ + 2 /* ms10000(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_M3period_specs_1 = { + asn_MAP_S1AP_M3period_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_M3period_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M3period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M3period = { + "M3period", + "M3period", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_M3period_tags_1, + sizeof(asn_DEF_S1AP_M3period_tags_1) + /sizeof(asn_DEF_S1AP_M3period_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M3period_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M3period_tags_1) + /sizeof(asn_DEF_S1AP_M3period_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_M3period_constr_1, &asn_PER_type_S1AP_M3period_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_M3period_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M3period.h b/lib/s1ap3/asn1c/S1AP_M3period.h new file mode 100644 index 0000000000..946b2b60b2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M3period.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M3period_H_ +#define _S1AP_M3period_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_M3period { + S1AP_M3period_ms100 = 0, + S1AP_M3period_ms1000 = 1, + S1AP_M3period_ms10000 = 2 + /* + * Enumeration is extensible + */ +} e_S1AP_M3period; + +/* S1AP_M3period */ +typedef long S1AP_M3period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_M3period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M3period; +extern const asn_INTEGER_specifics_t asn_SPC_M3period_specs_1; +asn_struct_free_f M3period_free; +asn_struct_print_f M3period_print; +asn_constr_check_f M3period_constraint; +ber_type_decoder_f M3period_decode_ber; +der_type_encoder_f M3period_encode_der; +xer_type_decoder_f M3period_decode_xer; +xer_type_encoder_f M3period_encode_xer; +oer_type_decoder_f M3period_decode_oer; +oer_type_encoder_f M3period_encode_oer; +per_type_decoder_f M3period_decode_uper; +per_type_encoder_f M3period_encode_uper; +per_type_decoder_f M3period_decode_aper; +per_type_encoder_f M3period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M3period_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M4Configuration.c b/lib/s1ap3/asn1c/S1AP_M4Configuration.c new file mode 100644 index 0000000000..6501a84838 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M4Configuration.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M4Configuration.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_M4Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M4Configuration, m4period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M4period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m4period" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M4Configuration, m4_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m4-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_M4Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P68, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_M4Configuration_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_M4Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M4Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m4period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m4-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_M4Configuration_specs_1 = { + sizeof(struct S1AP_M4Configuration), + offsetof(struct S1AP_M4Configuration, _asn_ctx), + asn_MAP_S1AP_M4Configuration_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_M4Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M4Configuration = { + "M4Configuration", + "M4Configuration", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M4Configuration_tags_1, + sizeof(asn_DEF_S1AP_M4Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M4Configuration_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M4Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M4Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M4Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M4Configuration_1, + 3, /* Elements count */ + &asn_SPC_S1AP_M4Configuration_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M4Configuration.h b/lib/s1ap3/asn1c/S1AP_M4Configuration.h new file mode 100644 index 0000000000..fc2c78d9c5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M4Configuration.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M4Configuration_H_ +#define _S1AP_M4Configuration_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_M4period.h" +#include "S1AP_Links-to-log.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_M4Configuration */ +typedef struct S1AP_M4Configuration { + S1AP_M4period_t m4period; + S1AP_Links_to_log_t m4_links_to_log; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M4Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M4Configuration; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M4Configuration_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M4period.c b/lib/s1ap3/asn1c/S1AP_M4period.c new file mode 100644 index 0000000000..fa46626866 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M4period.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M4period.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_M4period_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_M4period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_M4period_value2enum_1[] = { + { 0, 6, "ms1024" }, + { 1, 6, "ms2048" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" }, + { 4, 4, "min1" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_M4period_enum2value_1[] = { + 4, /* min1(4) */ + 0, /* ms1024(0) */ + 3, /* ms10240(3) */ + 1, /* ms2048(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_M4period_specs_1 = { + asn_MAP_S1AP_M4period_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_M4period_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M4period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M4period = { + "M4period", + "M4period", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_M4period_tags_1, + sizeof(asn_DEF_S1AP_M4period_tags_1) + /sizeof(asn_DEF_S1AP_M4period_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M4period_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M4period_tags_1) + /sizeof(asn_DEF_S1AP_M4period_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_M4period_constr_1, &asn_PER_type_S1AP_M4period_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_M4period_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M4period.h b/lib/s1ap3/asn1c/S1AP_M4period.h new file mode 100644 index 0000000000..e9e915c41e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M4period.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M4period_H_ +#define _S1AP_M4period_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_M4period { + S1AP_M4period_ms1024 = 0, + S1AP_M4period_ms2048 = 1, + S1AP_M4period_ms5120 = 2, + S1AP_M4period_ms10240 = 3, + S1AP_M4period_min1 = 4 + /* + * Enumeration is extensible + */ +} e_S1AP_M4period; + +/* S1AP_M4period */ +typedef long S1AP_M4period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_M4period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M4period; +extern const asn_INTEGER_specifics_t asn_SPC_M4period_specs_1; +asn_struct_free_f M4period_free; +asn_struct_print_f M4period_print; +asn_constr_check_f M4period_constraint; +ber_type_decoder_f M4period_decode_ber; +der_type_encoder_f M4period_encode_der; +xer_type_decoder_f M4period_decode_xer; +xer_type_encoder_f M4period_encode_xer; +oer_type_decoder_f M4period_decode_oer; +oer_type_encoder_f M4period_encode_oer; +per_type_decoder_f M4period_decode_uper; +per_type_encoder_f M4period_encode_uper; +per_type_decoder_f M4period_decode_aper; +per_type_encoder_f M4period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M4period_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M5Configuration.c b/lib/s1ap3/asn1c/S1AP_M5Configuration.c new file mode 100644 index 0000000000..efb5b50ff3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M5Configuration.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M5Configuration.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_M5Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M5Configuration, m5period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M5period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m5period" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M5Configuration, m5_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m5-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_M5Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P69, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_M5Configuration_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_M5Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M5Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m5period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m5-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_M5Configuration_specs_1 = { + sizeof(struct S1AP_M5Configuration), + offsetof(struct S1AP_M5Configuration, _asn_ctx), + asn_MAP_S1AP_M5Configuration_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_M5Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M5Configuration = { + "M5Configuration", + "M5Configuration", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M5Configuration_tags_1, + sizeof(asn_DEF_S1AP_M5Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M5Configuration_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M5Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M5Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M5Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M5Configuration_1, + 3, /* Elements count */ + &asn_SPC_S1AP_M5Configuration_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M5Configuration.h b/lib/s1ap3/asn1c/S1AP_M5Configuration.h new file mode 100644 index 0000000000..3580b7af16 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M5Configuration.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M5Configuration_H_ +#define _S1AP_M5Configuration_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_M5period.h" +#include "S1AP_Links-to-log.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_M5Configuration */ +typedef struct S1AP_M5Configuration { + S1AP_M5period_t m5period; + S1AP_Links_to_log_t m5_links_to_log; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M5Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M5Configuration; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M5Configuration_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M5period.c b/lib/s1ap3/asn1c/S1AP_M5period.c new file mode 100644 index 0000000000..97bea631ec --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M5period.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M5period.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_M5period_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_M5period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_M5period_value2enum_1[] = { + { 0, 6, "ms1024" }, + { 1, 6, "ms2048" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" }, + { 4, 4, "min1" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_M5period_enum2value_1[] = { + 4, /* min1(4) */ + 0, /* ms1024(0) */ + 3, /* ms10240(3) */ + 1, /* ms2048(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_M5period_specs_1 = { + asn_MAP_S1AP_M5period_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_M5period_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M5period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M5period = { + "M5period", + "M5period", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_M5period_tags_1, + sizeof(asn_DEF_S1AP_M5period_tags_1) + /sizeof(asn_DEF_S1AP_M5period_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M5period_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M5period_tags_1) + /sizeof(asn_DEF_S1AP_M5period_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_M5period_constr_1, &asn_PER_type_S1AP_M5period_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_M5period_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M5period.h b/lib/s1ap3/asn1c/S1AP_M5period.h new file mode 100644 index 0000000000..8f9999d9c8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M5period.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M5period_H_ +#define _S1AP_M5period_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_M5period { + S1AP_M5period_ms1024 = 0, + S1AP_M5period_ms2048 = 1, + S1AP_M5period_ms5120 = 2, + S1AP_M5period_ms10240 = 3, + S1AP_M5period_min1 = 4 + /* + * Enumeration is extensible + */ +} e_S1AP_M5period; + +/* S1AP_M5period */ +typedef long S1AP_M5period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_M5period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M5period; +extern const asn_INTEGER_specifics_t asn_SPC_M5period_specs_1; +asn_struct_free_f M5period_free; +asn_struct_print_f M5period_print; +asn_constr_check_f M5period_constraint; +ber_type_decoder_f M5period_decode_ber; +der_type_encoder_f M5period_encode_der; +xer_type_decoder_f M5period_decode_xer; +xer_type_encoder_f M5period_encode_xer; +oer_type_decoder_f M5period_decode_oer; +oer_type_encoder_f M5period_encode_oer; +per_type_decoder_f M5period_decode_uper; +per_type_encoder_f M5period_encode_uper; +per_type_decoder_f M5period_decode_aper; +per_type_encoder_f M5period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M5period_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M6Configuration.c b/lib/s1ap3/asn1c/S1AP_M6Configuration.c new file mode 100644 index 0000000000..e4dca3bee6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M6Configuration.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M6Configuration.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_M6Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M6Configuration, m6report_Interval), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M6report_Interval, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m6report-Interval" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_M6Configuration, m6delay_threshold), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M6delay_threshold, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m6delay-threshold" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M6Configuration, m6_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m6-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_M6Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P70, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_M6Configuration_oms_1[] = { 1, 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_M6Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M6Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m6report-Interval */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m6delay-threshold */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* m6-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_M6Configuration_specs_1 = { + sizeof(struct S1AP_M6Configuration), + offsetof(struct S1AP_M6Configuration, _asn_ctx), + asn_MAP_S1AP_M6Configuration_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_M6Configuration_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M6Configuration = { + "M6Configuration", + "M6Configuration", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M6Configuration_tags_1, + sizeof(asn_DEF_S1AP_M6Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M6Configuration_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M6Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M6Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M6Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M6Configuration_1, + 4, /* Elements count */ + &asn_SPC_S1AP_M6Configuration_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M6Configuration.h b/lib/s1ap3/asn1c/S1AP_M6Configuration.h new file mode 100644 index 0000000000..07eedab11f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M6Configuration.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M6Configuration_H_ +#define _S1AP_M6Configuration_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_M6report-Interval.h" +#include "S1AP_M6delay-threshold.h" +#include "S1AP_Links-to-log.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_M6Configuration */ +typedef struct S1AP_M6Configuration { + S1AP_M6report_Interval_t m6report_Interval; + S1AP_M6delay_threshold_t *m6delay_threshold; /* OPTIONAL */ + S1AP_Links_to_log_t m6_links_to_log; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M6Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M6Configuration; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M6Configuration_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M6delay-threshold.c b/lib/s1ap3/asn1c/S1AP_M6delay-threshold.c new file mode 100644 index 0000000000..b41abbfce8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M6delay-threshold.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M6delay-threshold.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_M6delay_threshold_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_M6delay_threshold_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 11 } /* (0..11,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_M6delay_threshold_value2enum_1[] = { + { 0, 4, "ms30" }, + { 1, 4, "ms40" }, + { 2, 4, "ms50" }, + { 3, 4, "ms60" }, + { 4, 4, "ms70" }, + { 5, 4, "ms80" }, + { 6, 4, "ms90" }, + { 7, 5, "ms100" }, + { 8, 5, "ms150" }, + { 9, 5, "ms300" }, + { 10, 5, "ms500" }, + { 11, 5, "ms750" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_M6delay_threshold_enum2value_1[] = { + 7, /* ms100(7) */ + 8, /* ms150(8) */ + 0, /* ms30(0) */ + 9, /* ms300(9) */ + 1, /* ms40(1) */ + 2, /* ms50(2) */ + 10, /* ms500(10) */ + 3, /* ms60(3) */ + 4, /* ms70(4) */ + 11, /* ms750(11) */ + 5, /* ms80(5) */ + 6 /* ms90(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_M6delay_threshold_specs_1 = { + asn_MAP_S1AP_M6delay_threshold_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_M6delay_threshold_enum2value_1, /* N => "tag"; sorted by N */ + 12, /* Number of elements in the maps */ + 13, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M6delay_threshold_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M6delay_threshold = { + "M6delay-threshold", + "M6delay-threshold", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_M6delay_threshold_tags_1, + sizeof(asn_DEF_S1AP_M6delay_threshold_tags_1) + /sizeof(asn_DEF_S1AP_M6delay_threshold_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M6delay_threshold_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M6delay_threshold_tags_1) + /sizeof(asn_DEF_S1AP_M6delay_threshold_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_M6delay_threshold_constr_1, &asn_PER_type_S1AP_M6delay_threshold_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_M6delay_threshold_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M6delay-threshold.h b/lib/s1ap3/asn1c/S1AP_M6delay-threshold.h new file mode 100644 index 0000000000..8442222787 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M6delay-threshold.h @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M6delay_threshold_H_ +#define _S1AP_M6delay_threshold_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_M6delay_threshold { + S1AP_M6delay_threshold_ms30 = 0, + S1AP_M6delay_threshold_ms40 = 1, + S1AP_M6delay_threshold_ms50 = 2, + S1AP_M6delay_threshold_ms60 = 3, + S1AP_M6delay_threshold_ms70 = 4, + S1AP_M6delay_threshold_ms80 = 5, + S1AP_M6delay_threshold_ms90 = 6, + S1AP_M6delay_threshold_ms100 = 7, + S1AP_M6delay_threshold_ms150 = 8, + S1AP_M6delay_threshold_ms300 = 9, + S1AP_M6delay_threshold_ms500 = 10, + S1AP_M6delay_threshold_ms750 = 11 + /* + * Enumeration is extensible + */ +} e_S1AP_M6delay_threshold; + +/* S1AP_M6delay-threshold */ +typedef long S1AP_M6delay_threshold_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_M6delay_threshold_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M6delay_threshold; +extern const asn_INTEGER_specifics_t asn_SPC_M6delay_threshold_specs_1; +asn_struct_free_f M6delay_threshold_free; +asn_struct_print_f M6delay_threshold_print; +asn_constr_check_f M6delay_threshold_constraint; +ber_type_decoder_f M6delay_threshold_decode_ber; +der_type_encoder_f M6delay_threshold_encode_der; +xer_type_decoder_f M6delay_threshold_decode_xer; +xer_type_encoder_f M6delay_threshold_encode_xer; +oer_type_decoder_f M6delay_threshold_decode_oer; +oer_type_encoder_f M6delay_threshold_encode_oer; +per_type_decoder_f M6delay_threshold_decode_uper; +per_type_encoder_f M6delay_threshold_encode_uper; +per_type_decoder_f M6delay_threshold_decode_aper; +per_type_encoder_f M6delay_threshold_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M6delay_threshold_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M6report-Interval.c b/lib/s1ap3/asn1c/S1AP_M6report-Interval.c new file mode 100644 index 0000000000..a105169b3a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M6report-Interval.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M6report-Interval.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_M6report_Interval_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_M6report_Interval_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_M6report_Interval_value2enum_1[] = { + { 0, 6, "ms1024" }, + { 1, 6, "ms2048" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_M6report_Interval_enum2value_1[] = { + 0, /* ms1024(0) */ + 3, /* ms10240(3) */ + 1, /* ms2048(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_M6report_Interval_specs_1 = { + asn_MAP_S1AP_M6report_Interval_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_M6report_Interval_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M6report_Interval_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M6report_Interval = { + "M6report-Interval", + "M6report-Interval", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_M6report_Interval_tags_1, + sizeof(asn_DEF_S1AP_M6report_Interval_tags_1) + /sizeof(asn_DEF_S1AP_M6report_Interval_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M6report_Interval_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M6report_Interval_tags_1) + /sizeof(asn_DEF_S1AP_M6report_Interval_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_M6report_Interval_constr_1, &asn_PER_type_S1AP_M6report_Interval_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_M6report_Interval_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M6report-Interval.h b/lib/s1ap3/asn1c/S1AP_M6report-Interval.h new file mode 100644 index 0000000000..1ffe734424 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M6report-Interval.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M6report_Interval_H_ +#define _S1AP_M6report_Interval_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_M6report_Interval { + S1AP_M6report_Interval_ms1024 = 0, + S1AP_M6report_Interval_ms2048 = 1, + S1AP_M6report_Interval_ms5120 = 2, + S1AP_M6report_Interval_ms10240 = 3 + /* + * Enumeration is extensible + */ +} e_S1AP_M6report_Interval; + +/* S1AP_M6report-Interval */ +typedef long S1AP_M6report_Interval_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_M6report_Interval_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M6report_Interval; +extern const asn_INTEGER_specifics_t asn_SPC_M6report_Interval_specs_1; +asn_struct_free_f M6report_Interval_free; +asn_struct_print_f M6report_Interval_print; +asn_constr_check_f M6report_Interval_constraint; +ber_type_decoder_f M6report_Interval_decode_ber; +der_type_encoder_f M6report_Interval_encode_der; +xer_type_decoder_f M6report_Interval_decode_xer; +xer_type_encoder_f M6report_Interval_encode_xer; +oer_type_decoder_f M6report_Interval_decode_oer; +oer_type_encoder_f M6report_Interval_encode_oer; +per_type_decoder_f M6report_Interval_decode_uper; +per_type_encoder_f M6report_Interval_encode_uper; +per_type_decoder_f M6report_Interval_decode_aper; +per_type_encoder_f M6report_Interval_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M6report_Interval_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M7Configuration.c b/lib/s1ap3/asn1c/S1AP_M7Configuration.c new file mode 100644 index 0000000000..d8d87cd8fd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M7Configuration.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M7Configuration.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_M7Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M7Configuration, m7period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M7period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m7period" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M7Configuration, m7_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m7-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_M7Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P71, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_M7Configuration_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_M7Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M7Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m7period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m7-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_M7Configuration_specs_1 = { + sizeof(struct S1AP_M7Configuration), + offsetof(struct S1AP_M7Configuration, _asn_ctx), + asn_MAP_S1AP_M7Configuration_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_M7Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M7Configuration = { + "M7Configuration", + "M7Configuration", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M7Configuration_tags_1, + sizeof(asn_DEF_S1AP_M7Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M7Configuration_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M7Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M7Configuration_tags_1) + /sizeof(asn_DEF_S1AP_M7Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M7Configuration_1, + 3, /* Elements count */ + &asn_SPC_S1AP_M7Configuration_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M7Configuration.h b/lib/s1ap3/asn1c/S1AP_M7Configuration.h new file mode 100644 index 0000000000..f898143de4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M7Configuration.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M7Configuration_H_ +#define _S1AP_M7Configuration_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_M7period.h" +#include "S1AP_Links-to-log.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_M7Configuration */ +typedef struct S1AP_M7Configuration { + S1AP_M7period_t m7period; + S1AP_Links_to_log_t m7_links_to_log; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M7Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M7Configuration; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M7Configuration_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_M7period.c b/lib/s1ap3/asn1c/S1AP_M7period.c new file mode 100644 index 0000000000..1eb3a0f48d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M7period.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_M7period.h" + +int +S1AP_M7period_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 60)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_M7period_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_M7period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 1, 60 } /* (1..60,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M7period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M7period = { + "M7period", + "M7period", + &asn_OP_NativeInteger, + asn_DEF_S1AP_M7period_tags_1, + sizeof(asn_DEF_S1AP_M7period_tags_1) + /sizeof(asn_DEF_S1AP_M7period_tags_1[0]), /* 1 */ + asn_DEF_S1AP_M7period_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_M7period_tags_1) + /sizeof(asn_DEF_S1AP_M7period_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_M7period_constr_1, &asn_PER_type_S1AP_M7period_constr_1, S1AP_M7period_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_M7period.h b/lib/s1ap3/asn1c/S1AP_M7period.h new file mode 100644 index 0000000000..a3b6e8d922 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_M7period.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_M7period_H_ +#define _S1AP_M7period_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_M7period */ +typedef long S1AP_M7period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_M7period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M7period; +asn_struct_free_f S1AP_M7period_free; +asn_struct_print_f S1AP_M7period_print; +asn_constr_check_f S1AP_M7period_constraint; +ber_type_decoder_f S1AP_M7period_decode_ber; +der_type_encoder_f S1AP_M7period_encode_der; +xer_type_decoder_f S1AP_M7period_decode_xer; +xer_type_encoder_f S1AP_M7period_encode_xer; +oer_type_decoder_f S1AP_M7period_decode_oer; +oer_type_encoder_f S1AP_M7period_encode_oer; +per_type_decoder_f S1AP_M7period_decode_uper; +per_type_encoder_f S1AP_M7period_encode_uper; +per_type_decoder_f S1AP_M7period_decode_aper; +per_type_encoder_f S1AP_M7period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_M7period_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.c b/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.c new file mode 100644 index 0000000000..41fbc4f431 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MBSFN-ResultToLog.h" + +#include "S1AP_MBSFN-ResultToLogInfo.h" +static asn_oer_constraints_t asn_OER_type_S1AP_MBSFN_ResultToLog_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +asn_per_constraints_t asn_PER_type_S1AP_MBSFN_ResultToLog_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_MBSFN_ResultToLog_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MBSFN_ResultToLogInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MBSFN_ResultToLog_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_MBSFN_ResultToLog_specs_1 = { + sizeof(struct S1AP_MBSFN_ResultToLog), + offsetof(struct S1AP_MBSFN_ResultToLog, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MBSFN_ResultToLog = { + "MBSFN-ResultToLog", + "MBSFN-ResultToLog", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_MBSFN_ResultToLog_tags_1, + sizeof(asn_DEF_S1AP_MBSFN_ResultToLog_tags_1) + /sizeof(asn_DEF_S1AP_MBSFN_ResultToLog_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MBSFN_ResultToLog_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MBSFN_ResultToLog_tags_1) + /sizeof(asn_DEF_S1AP_MBSFN_ResultToLog_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MBSFN_ResultToLog_constr_1, &asn_PER_type_S1AP_MBSFN_ResultToLog_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_MBSFN_ResultToLog_1, + 1, /* Single element */ + &asn_SPC_S1AP_MBSFN_ResultToLog_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.h b/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.h new file mode 100644 index 0000000000..0b1de55f1f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLog.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MBSFN_ResultToLog_H_ +#define _S1AP_MBSFN_ResultToLog_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_MBSFN_ResultToLogInfo; + +/* S1AP_MBSFN-ResultToLog */ +typedef struct S1AP_MBSFN_ResultToLog { + A_SEQUENCE_OF(struct S1AP_MBSFN_ResultToLogInfo) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MBSFN_ResultToLog_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MBSFN_ResultToLog; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_MBSFN_ResultToLog_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MBSFN_ResultToLog_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_MBSFN_ResultToLog_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MBSFN_ResultToLog_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.c b/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.c new file mode 100644 index 0000000000..0a5a18ac34 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.c @@ -0,0 +1,106 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MBSFN-ResultToLogInfo.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static int +memb_S1AP_mBSFN_AreaId_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_mBSFN_AreaId_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_mBSFN_AreaId_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_MBSFN_ResultToLogInfo_1[] = { + { ATF_POINTER, 1, offsetof(struct S1AP_MBSFN_ResultToLogInfo, mBSFN_AreaId), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_S1AP_mBSFN_AreaId_constr_2, &asn_PER_memb_S1AP_mBSFN_AreaId_constr_2, memb_S1AP_mBSFN_AreaId_constraint_1 }, + 0, 0, /* No default value */ + "mBSFN-AreaId" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MBSFN_ResultToLogInfo, carrierFreq), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "carrierFreq" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_MBSFN_ResultToLogInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P73, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_MBSFN_ResultToLogInfo_oms_1[] = { 0, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_MBSFN_ResultToLogInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MBSFN_ResultToLogInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mBSFN-AreaId */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* carrierFreq */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MBSFN_ResultToLogInfo_specs_1 = { + sizeof(struct S1AP_MBSFN_ResultToLogInfo), + offsetof(struct S1AP_MBSFN_ResultToLogInfo, _asn_ctx), + asn_MAP_S1AP_MBSFN_ResultToLogInfo_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_MBSFN_ResultToLogInfo_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MBSFN_ResultToLogInfo = { + "MBSFN-ResultToLogInfo", + "MBSFN-ResultToLogInfo", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MBSFN_ResultToLogInfo_tags_1, + sizeof(asn_DEF_S1AP_MBSFN_ResultToLogInfo_tags_1) + /sizeof(asn_DEF_S1AP_MBSFN_ResultToLogInfo_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MBSFN_ResultToLogInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MBSFN_ResultToLogInfo_tags_1) + /sizeof(asn_DEF_S1AP_MBSFN_ResultToLogInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MBSFN_ResultToLogInfo_1, + 3, /* Elements count */ + &asn_SPC_S1AP_MBSFN_ResultToLogInfo_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.h b/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.h new file mode 100644 index 0000000000..2a5af07d15 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MBSFN-ResultToLogInfo.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MBSFN_ResultToLogInfo_H_ +#define _S1AP_MBSFN_ResultToLogInfo_H_ + + +#include + +/* Including external dependencies */ +#include +#include "S1AP_EARFCN.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_MBSFN-ResultToLogInfo */ +typedef struct S1AP_MBSFN_ResultToLogInfo { + long *mBSFN_AreaId; /* OPTIONAL */ + S1AP_EARFCN_t carrierFreq; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MBSFN_ResultToLogInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MBSFN_ResultToLogInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MBSFN_ResultToLogInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MBSFN_ResultToLogInfo_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MBSFN_ResultToLogInfo_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MDT-Activation.c b/lib/s1ap3/asn1c/S1AP_MDT-Activation.c new file mode 100644 index 0000000000..aeb4f4583a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDT-Activation.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MDT-Activation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MDT_Activation_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_MDT_Activation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_MDT_Activation_value2enum_1[] = { + { 0, 18, "immediate-MDT-only" }, + { 1, 23, "immediate-MDT-and-Trace" }, + { 2, 15, "logged-MDT-only" }, + { 3, 16, "logged-MBSFN-MDT" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_MDT_Activation_enum2value_1[] = { + 1, /* immediate-MDT-and-Trace(1) */ + 0, /* immediate-MDT-only(0) */ + 3, /* logged-MBSFN-MDT(3) */ + 2 /* logged-MDT-only(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_MDT_Activation_specs_1 = { + asn_MAP_S1AP_MDT_Activation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_MDT_Activation_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MDT_Activation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MDT_Activation = { + "MDT-Activation", + "MDT-Activation", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_MDT_Activation_tags_1, + sizeof(asn_DEF_S1AP_MDT_Activation_tags_1) + /sizeof(asn_DEF_S1AP_MDT_Activation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MDT_Activation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MDT_Activation_tags_1) + /sizeof(asn_DEF_S1AP_MDT_Activation_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MDT_Activation_constr_1, &asn_PER_type_S1AP_MDT_Activation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_MDT_Activation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MDT-Activation.h b/lib/s1ap3/asn1c/S1AP_MDT-Activation.h new file mode 100644 index 0000000000..3015eb8210 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDT-Activation.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MDT_Activation_H_ +#define _S1AP_MDT_Activation_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_MDT_Activation { + S1AP_MDT_Activation_immediate_MDT_only = 0, + S1AP_MDT_Activation_immediate_MDT_and_Trace = 1, + S1AP_MDT_Activation_logged_MDT_only = 2, + /* + * Enumeration is extensible + */ + S1AP_MDT_Activation_logged_MBSFN_MDT = 3 +} e_S1AP_MDT_Activation; + +/* S1AP_MDT-Activation */ +typedef long S1AP_MDT_Activation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_MDT_Activation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MDT_Activation; +extern const asn_INTEGER_specifics_t asn_SPC_MDT_Activation_specs_1; +asn_struct_free_f MDT_Activation_free; +asn_struct_print_f MDT_Activation_print; +asn_constr_check_f MDT_Activation_constraint; +ber_type_decoder_f MDT_Activation_decode_ber; +der_type_encoder_f MDT_Activation_encode_der; +xer_type_decoder_f MDT_Activation_decode_xer; +xer_type_encoder_f MDT_Activation_encode_xer; +oer_type_decoder_f MDT_Activation_decode_oer; +oer_type_encoder_f MDT_Activation_encode_oer; +per_type_decoder_f MDT_Activation_decode_uper; +per_type_encoder_f MDT_Activation_encode_uper; +per_type_decoder_f MDT_Activation_decode_aper; +per_type_encoder_f MDT_Activation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MDT_Activation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MDT-Configuration.c b/lib/s1ap3/asn1c/S1AP_MDT-Configuration.c new file mode 100644 index 0000000000..e8b0844a3d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDT-Configuration.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MDT-Configuration.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_MDT_Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MDT_Configuration, mdt_Activation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MDT_Activation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mdt-Activation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MDT_Configuration, areaScopeOfMDT), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_AreaScopeOfMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "areaScopeOfMDT" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MDT_Configuration, mDTMode), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_MDTMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mDTMode" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_MDT_Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P72, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_MDT_Configuration_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_MDT_Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MDT_Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mdt-Activation */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* areaScopeOfMDT */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mDTMode */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_MDT_Configuration_specs_1 = { + sizeof(struct S1AP_MDT_Configuration), + offsetof(struct S1AP_MDT_Configuration, _asn_ctx), + asn_MAP_S1AP_MDT_Configuration_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_MDT_Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MDT_Configuration = { + "MDT-Configuration", + "MDT-Configuration", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MDT_Configuration_tags_1, + sizeof(asn_DEF_S1AP_MDT_Configuration_tags_1) + /sizeof(asn_DEF_S1AP_MDT_Configuration_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MDT_Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MDT_Configuration_tags_1) + /sizeof(asn_DEF_S1AP_MDT_Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MDT_Configuration_1, + 4, /* Elements count */ + &asn_SPC_S1AP_MDT_Configuration_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MDT-Configuration.h b/lib/s1ap3/asn1c/S1AP_MDT-Configuration.h new file mode 100644 index 0000000000..337c9c5bbd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDT-Configuration.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MDT_Configuration_H_ +#define _S1AP_MDT_Configuration_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MDT-Activation.h" +#include "S1AP_AreaScopeOfMDT.h" +#include "S1AP_MDTMode.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_MDT-Configuration */ +typedef struct S1AP_MDT_Configuration { + S1AP_MDT_Activation_t mdt_Activation; + S1AP_AreaScopeOfMDT_t areaScopeOfMDT; + S1AP_MDTMode_t mDTMode; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MDT_Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MDT_Configuration; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MDT_Configuration_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MDT-Location-Info.c b/lib/s1ap3/asn1c/S1AP_MDT-Location-Info.c new file mode 100644 index 0000000000..bcfc4ff7b1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDT-Location-Info.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MDT-Location-Info.h" + +int +S1AP_MDT_Location_Info_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MDT_Location_Info_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_MDT_Location_Info_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MDT_Location_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MDT_Location_Info = { + "MDT-Location-Info", + "MDT-Location-Info", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_MDT_Location_Info_tags_1, + sizeof(asn_DEF_S1AP_MDT_Location_Info_tags_1) + /sizeof(asn_DEF_S1AP_MDT_Location_Info_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MDT_Location_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MDT_Location_Info_tags_1) + /sizeof(asn_DEF_S1AP_MDT_Location_Info_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MDT_Location_Info_constr_1, &asn_PER_type_S1AP_MDT_Location_Info_constr_1, S1AP_MDT_Location_Info_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MDT-Location-Info.h b/lib/s1ap3/asn1c/S1AP_MDT-Location-Info.h new file mode 100644 index 0000000000..7170f90e7f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDT-Location-Info.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MDT_Location_Info_H_ +#define _S1AP_MDT_Location_Info_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MDT-Location-Info */ +typedef BIT_STRING_t S1AP_MDT_Location_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MDT_Location_Info; +asn_struct_free_f S1AP_MDT_Location_Info_free; +asn_struct_print_f S1AP_MDT_Location_Info_print; +asn_constr_check_f S1AP_MDT_Location_Info_constraint; +ber_type_decoder_f S1AP_MDT_Location_Info_decode_ber; +der_type_encoder_f S1AP_MDT_Location_Info_encode_der; +xer_type_decoder_f S1AP_MDT_Location_Info_decode_xer; +xer_type_encoder_f S1AP_MDT_Location_Info_encode_xer; +oer_type_decoder_f S1AP_MDT_Location_Info_decode_oer; +oer_type_encoder_f S1AP_MDT_Location_Info_encode_oer; +per_type_decoder_f S1AP_MDT_Location_Info_decode_uper; +per_type_encoder_f S1AP_MDT_Location_Info_encode_uper; +per_type_decoder_f S1AP_MDT_Location_Info_decode_aper; +per_type_encoder_f S1AP_MDT_Location_Info_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MDT_Location_Info_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MDTMode-Extension.c b/lib/s1ap3/asn1c/S1AP_MDTMode-Extension.c new file mode 100644 index 0000000000..30af590fd5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDTMode-Extension.c @@ -0,0 +1,32 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MDTMode-Extension.h" + +/* + * This type is implemented using S1AP_ProtocolIE_SingleContainer_6554P14, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_MDTMode_Extension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MDTMode_Extension = { + "MDTMode-Extension", + "MDTMode-Extension", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MDTMode_Extension_tags_1, + sizeof(asn_DEF_S1AP_MDTMode_Extension_tags_1) + /sizeof(asn_DEF_S1AP_MDTMode_Extension_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MDTMode_Extension_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MDTMode_Extension_tags_1) + /sizeof(asn_DEF_S1AP_MDTMode_Extension_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MDTMode_ExtensionIE_57, + 3, /* Elements count */ + &asn_SPC_S1AP_MDTMode_ExtensionIE_specs_57 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MDTMode-Extension.h b/lib/s1ap3/asn1c/S1AP_MDTMode-Extension.h new file mode 100644 index 0000000000..87743e67b7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDTMode-Extension.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MDTMode_Extension_H_ +#define _S1AP_MDTMode_Extension_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-SingleContainer.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MDTMode-Extension */ +typedef S1AP_ProtocolIE_SingleContainer_6554P14_t S1AP_MDTMode_Extension_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MDTMode_Extension; +asn_struct_free_f S1AP_MDTMode_Extension_free; +asn_struct_print_f S1AP_MDTMode_Extension_print; +asn_constr_check_f S1AP_MDTMode_Extension_constraint; +ber_type_decoder_f S1AP_MDTMode_Extension_decode_ber; +der_type_encoder_f S1AP_MDTMode_Extension_encode_der; +xer_type_decoder_f S1AP_MDTMode_Extension_decode_xer; +xer_type_encoder_f S1AP_MDTMode_Extension_encode_xer; +oer_type_decoder_f S1AP_MDTMode_Extension_decode_oer; +oer_type_encoder_f S1AP_MDTMode_Extension_encode_oer; +per_type_decoder_f S1AP_MDTMode_Extension_decode_uper; +per_type_encoder_f S1AP_MDTMode_Extension_encode_uper; +per_type_decoder_f S1AP_MDTMode_Extension_decode_aper; +per_type_encoder_f S1AP_MDTMode_Extension_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MDTMode_Extension_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MDTMode.c b/lib/s1ap3/asn1c/S1AP_MDTMode.c new file mode 100644 index 0000000000..ae0c501b5c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDTMode.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MDTMode.h" + +#include "S1AP_ImmediateMDT.h" +#include "S1AP_LoggedMDT.h" +#include "S1AP_MDTMode-Extension.h" +static asn_oer_constraints_t asn_OER_type_S1AP_MDTMode_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_MDTMode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_MDTMode_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_MDTMode, choice.immediateMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ImmediateMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "immediateMDT" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_MDTMode, choice.loggedMDT), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LoggedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "loggedMDT" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_MDTMode, choice.mDTMode_Extension), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MDTMode_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mDTMode-Extension" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MDTMode_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* immediateMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* loggedMDT */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* mDTMode-Extension */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_MDTMode_specs_1 = { + sizeof(struct S1AP_MDTMode), + offsetof(struct S1AP_MDTMode, _asn_ctx), + offsetof(struct S1AP_MDTMode, present), + sizeof(((struct S1AP_MDTMode *)0)->present), + asn_MAP_S1AP_MDTMode_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MDTMode = { + "MDTMode", + "MDTMode", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_MDTMode_constr_1, &asn_PER_type_S1AP_MDTMode_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_MDTMode_1, + 3, /* Elements count */ + &asn_SPC_S1AP_MDTMode_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MDTMode.h b/lib/s1ap3/asn1c/S1AP_MDTMode.h new file mode 100644 index 0000000000..6d86dd31dc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDTMode.h @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MDTMode_H_ +#define _S1AP_MDTMode_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_MDTMode_PR { + MDTMode_PR_NOTHING, /* No components present */ + MDTMode_PR_immediateMDT, + MDTMode_PR_loggedMDT, + /* Extensions may appear below */ + MDTMode_PR_mDTMode_Extension +} S1AP_MDTMode_PR; + +/* Forward declarations */ +struct S1AP_ImmediateMDT; +struct S1AP_LoggedMDT; +struct S1AP_MDTMode_Extension; + +/* S1AP_MDTMode */ +typedef struct S1AP_MDTMode { + S1AP_MDTMode_PR present; + union S1AP_MDTMode_u { + struct S1AP_ImmediateMDT *immediateMDT; + struct S1AP_LoggedMDT *loggedMDT; + /* + * This type is extensible, + * possible extensions are below. + */ + struct S1AP_MDTMode_Extension *mDTMode_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MDTMode_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MDTMode; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_MDTMode_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MDTMode_1[3]; +extern asn_per_constraints_t asn_PER_type_S1AP_MDTMode_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MDTMode_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MDTPLMNList.c b/lib/s1ap3/asn1c/S1AP_MDTPLMNList.c new file mode 100644 index 0000000000..3c2d66fc6d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDTPLMNList.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MDTPLMNList.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_MDTPLMNList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_MDTPLMNList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_MDTPLMNList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MDTPLMNList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_MDTPLMNList_specs_1 = { + sizeof(struct S1AP_MDTPLMNList), + offsetof(struct S1AP_MDTPLMNList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MDTPLMNList = { + "MDTPLMNList", + "MDTPLMNList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_MDTPLMNList_tags_1, + sizeof(asn_DEF_S1AP_MDTPLMNList_tags_1) + /sizeof(asn_DEF_S1AP_MDTPLMNList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MDTPLMNList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MDTPLMNList_tags_1) + /sizeof(asn_DEF_S1AP_MDTPLMNList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MDTPLMNList_constr_1, &asn_PER_type_S1AP_MDTPLMNList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_MDTPLMNList_1, + 1, /* Single element */ + &asn_SPC_S1AP_MDTPLMNList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MDTPLMNList.h b/lib/s1ap3/asn1c/S1AP_MDTPLMNList.h new file mode 100644 index 0000000000..9979d348d8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MDTPLMNList.h @@ -0,0 +1,39 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MDTPLMNList_H_ +#define _S1AP_MDTPLMNList_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MDTPLMNList */ +typedef struct S1AP_MDTPLMNList { + A_SEQUENCE_OF(S1AP_PLMNidentity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MDTPLMNList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MDTPLMNList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MDTPLMNList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MME-Code.c b/lib/s1ap3/asn1c/S1AP_MME-Code.c new file mode 100644 index 0000000000..fd2255e335 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MME-Code.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MME-Code.h" + +int +S1AP_MME_Code_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 1)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MME_Code_constr_1 CC_NOTUSED = { + { 0, 0 }, + 1 /* (SIZE(1..1)) */}; +asn_per_constraints_t asn_PER_type_S1AP_MME_Code_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MME_Code_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MME_Code = { + "MME-Code", + "MME-Code", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_MME_Code_tags_1, + sizeof(asn_DEF_S1AP_MME_Code_tags_1) + /sizeof(asn_DEF_S1AP_MME_Code_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MME_Code_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MME_Code_tags_1) + /sizeof(asn_DEF_S1AP_MME_Code_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MME_Code_constr_1, &asn_PER_type_S1AP_MME_Code_constr_1, S1AP_MME_Code_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MME-Code.h b/lib/s1ap3/asn1c/S1AP_MME-Code.h new file mode 100644 index 0000000000..01a93a4e3e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MME-Code.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MME_Code_H_ +#define _S1AP_MME_Code_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MME-Code */ +typedef OCTET_STRING_t S1AP_MME_Code_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_MME_Code_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MME_Code; +asn_struct_free_f S1AP_MME_Code_free; +asn_struct_print_f S1AP_MME_Code_print; +asn_constr_check_f S1AP_MME_Code_constraint; +ber_type_decoder_f S1AP_MME_Code_decode_ber; +der_type_encoder_f S1AP_MME_Code_encode_der; +xer_type_decoder_f S1AP_MME_Code_decode_xer; +xer_type_encoder_f S1AP_MME_Code_encode_xer; +oer_type_decoder_f S1AP_MME_Code_decode_oer; +oer_type_encoder_f S1AP_MME_Code_encode_oer; +per_type_decoder_f S1AP_MME_Code_decode_uper; +per_type_encoder_f S1AP_MME_Code_encode_uper; +per_type_decoder_f S1AP_MME_Code_decode_aper; +per_type_encoder_f S1AP_MME_Code_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MME_Code_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MME-Group-ID.c b/lib/s1ap3/asn1c/S1AP_MME-Group-ID.c new file mode 100644 index 0000000000..a44007f135 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MME-Group-ID.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MME-Group-ID.h" + +int +S1AP_MME_Group_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MME_Group_ID_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +asn_per_constraints_t asn_PER_type_S1AP_MME_Group_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MME_Group_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MME_Group_ID = { + "MME-Group-ID", + "MME-Group-ID", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_MME_Group_ID_tags_1, + sizeof(asn_DEF_S1AP_MME_Group_ID_tags_1) + /sizeof(asn_DEF_S1AP_MME_Group_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MME_Group_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MME_Group_ID_tags_1) + /sizeof(asn_DEF_S1AP_MME_Group_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MME_Group_ID_constr_1, &asn_PER_type_S1AP_MME_Group_ID_constr_1, S1AP_MME_Group_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MME-Group-ID.h b/lib/s1ap3/asn1c/S1AP_MME-Group-ID.h new file mode 100644 index 0000000000..507988d49e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MME-Group-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MME_Group_ID_H_ +#define _S1AP_MME_Group_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MME-Group-ID */ +typedef OCTET_STRING_t S1AP_MME_Group_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_MME_Group_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MME_Group_ID; +asn_struct_free_f S1AP_MME_Group_ID_free; +asn_struct_print_f S1AP_MME_Group_ID_print; +asn_constr_check_f S1AP_MME_Group_ID_constraint; +ber_type_decoder_f S1AP_MME_Group_ID_decode_ber; +der_type_encoder_f S1AP_MME_Group_ID_encode_der; +xer_type_decoder_f S1AP_MME_Group_ID_decode_xer; +xer_type_encoder_f S1AP_MME_Group_ID_encode_xer; +oer_type_decoder_f S1AP_MME_Group_ID_decode_oer; +oer_type_encoder_f S1AP_MME_Group_ID_encode_oer; +per_type_decoder_f S1AP_MME_Group_ID_decode_uper; +per_type_encoder_f S1AP_MME_Group_ID_encode_uper; +per_type_decoder_f S1AP_MME_Group_ID_decode_aper; +per_type_encoder_f S1AP_MME_Group_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MME_Group_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.c b/lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.c new file mode 100644 index 0000000000..71d8b1b18a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MME-UE-S1AP-ID.h" + +int +S1AP_MME_UE_S1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MME_UE_S1AP_ID_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..4294967295) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_MME_UE_S1AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_MME_UE_S1AP_ID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MME_UE_S1AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MME_UE_S1AP_ID = { + "MME-UE-S1AP-ID", + "MME-UE-S1AP-ID", + &asn_OP_NativeInteger, + asn_DEF_S1AP_MME_UE_S1AP_ID_tags_1, + sizeof(asn_DEF_S1AP_MME_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_S1AP_MME_UE_S1AP_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MME_UE_S1AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MME_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_S1AP_MME_UE_S1AP_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MME_UE_S1AP_ID_constr_1, &asn_PER_type_S1AP_MME_UE_S1AP_ID_constr_1, S1AP_MME_UE_S1AP_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_MME_UE_S1AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.h b/lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.h new file mode 100644 index 0000000000..ee6651ce7b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MME-UE-S1AP-ID.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MME_UE_S1AP_ID_H_ +#define _S1AP_MME_UE_S1AP_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MME-UE-S1AP-ID */ +typedef unsigned long S1AP_MME_UE_S1AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_MME_UE_S1AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MME_UE_S1AP_ID; +extern const asn_INTEGER_specifics_t asn_SPC_MME_UE_S1AP_ID_specs_1; +asn_struct_free_f MME_UE_S1AP_ID_free; +asn_struct_print_f MME_UE_S1AP_ID_print; +asn_constr_check_f MME_UE_S1AP_ID_constraint; +ber_type_decoder_f MME_UE_S1AP_ID_decode_ber; +der_type_encoder_f MME_UE_S1AP_ID_encode_der; +xer_type_decoder_f MME_UE_S1AP_ID_decode_xer; +xer_type_encoder_f MME_UE_S1AP_ID_encode_xer; +oer_type_decoder_f MME_UE_S1AP_ID_decode_oer; +oer_type_encoder_f MME_UE_S1AP_ID_encode_oer; +per_type_decoder_f MME_UE_S1AP_ID_decode_uper; +per_type_encoder_f MME_UE_S1AP_ID_encode_uper; +per_type_decoder_f MME_UE_S1AP_ID_decode_aper; +per_type_encoder_f MME_UE_S1AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MME_UE_S1AP_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMECPRelocationIndication.c b/lib/s1ap3/asn1c/S1AP_MMECPRelocationIndication.c new file mode 100644 index 0000000000..387b91e8d4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMECPRelocationIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMECPRelocationIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_MMECPRelocationIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMECPRelocationIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P90, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMECPRelocationIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMECPRelocationIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMECPRelocationIndication_specs_1 = { + sizeof(struct S1AP_MMECPRelocationIndication), + offsetof(struct S1AP_MMECPRelocationIndication, _asn_ctx), + asn_MAP_S1AP_MMECPRelocationIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMECPRelocationIndication = { + "MMECPRelocationIndication", + "MMECPRelocationIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMECPRelocationIndication_tags_1, + sizeof(asn_DEF_S1AP_MMECPRelocationIndication_tags_1) + /sizeof(asn_DEF_S1AP_MMECPRelocationIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MMECPRelocationIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MMECPRelocationIndication_tags_1) + /sizeof(asn_DEF_S1AP_MMECPRelocationIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMECPRelocationIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_MMECPRelocationIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMECPRelocationIndication.h b/lib/s1ap3/asn1c/S1AP_MMECPRelocationIndication.h new file mode 100644 index 0000000000..040ceaa6f4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMECPRelocationIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMECPRelocationIndication_H_ +#define _S1AP_MMECPRelocationIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MMECPRelocationIndication */ +typedef struct S1AP_MMECPRelocationIndication { + S1AP_ProtocolIE_Container_6551P90_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMECPRelocationIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMECPRelocationIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMECPRelocationIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MMECPRelocationIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMECPRelocationIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMEConfigurationTransfer.c b/lib/s1ap3/asn1c/S1AP_MMEConfigurationTransfer.c new file mode 100644 index 0000000000..b2c757fc5b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEConfigurationTransfer.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMEConfigurationTransfer.h" + +asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P68, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEConfigurationTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEConfigurationTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationTransfer_specs_1 = { + sizeof(struct S1AP_MMEConfigurationTransfer), + offsetof(struct S1AP_MMEConfigurationTransfer, _asn_ctx), + asn_MAP_S1AP_MMEConfigurationTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationTransfer = { + "MMEConfigurationTransfer", + "MMEConfigurationTransfer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEConfigurationTransfer_tags_1, + sizeof(asn_DEF_S1AP_MMEConfigurationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_MMEConfigurationTransfer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MMEConfigurationTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEConfigurationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_MMEConfigurationTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEConfigurationTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1AP_MMEConfigurationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMEConfigurationTransfer.h b/lib/s1ap3/asn1c/S1AP_MMEConfigurationTransfer.h new file mode 100644 index 0000000000..0508fcc940 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEConfigurationTransfer.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMEConfigurationTransfer_H_ +#define _S1AP_MMEConfigurationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MMEConfigurationTransfer */ +typedef struct S1AP_MMEConfigurationTransfer { + S1AP_ProtocolIE_Container_6551P68_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEConfigurationTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationTransfer; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationTransfer_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationTransfer_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMEConfigurationTransfer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.c b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.c new file mode 100644 index 0000000000..7e410f8457 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMEConfigurationUpdate.h" + +asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P46, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEConfigurationUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEConfigurationUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdate_specs_1 = { + sizeof(struct S1AP_MMEConfigurationUpdate), + offsetof(struct S1AP_MMEConfigurationUpdate, _asn_ctx), + asn_MAP_S1AP_MMEConfigurationUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdate = { + "MMEConfigurationUpdate", + "MMEConfigurationUpdate", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEConfigurationUpdate_tags_1, + sizeof(asn_DEF_S1AP_MMEConfigurationUpdate_tags_1) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdate_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MMEConfigurationUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEConfigurationUpdate_tags_1) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEConfigurationUpdate_1, + 1, /* Elements count */ + &asn_SPC_S1AP_MMEConfigurationUpdate_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.h b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.h new file mode 100644 index 0000000000..4db304bd86 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMEConfigurationUpdate_H_ +#define _S1AP_MMEConfigurationUpdate_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MMEConfigurationUpdate */ +typedef struct S1AP_MMEConfigurationUpdate { + S1AP_ProtocolIE_Container_6551P46_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEConfigurationUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMEConfigurationUpdate_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateAcknowledge.c b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateAcknowledge.c new file mode 100644 index 0000000000..7ebdee5737 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateAcknowledge.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMEConfigurationUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P47, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEConfigurationUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateAcknowledge_specs_1 = { + sizeof(struct S1AP_MMEConfigurationUpdateAcknowledge), + offsetof(struct S1AP_MMEConfigurationUpdateAcknowledge, _asn_ctx), + asn_MAP_S1AP_MMEConfigurationUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge = { + "MMEConfigurationUpdateAcknowledge", + "MMEConfigurationUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge_tags_1, + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEConfigurationUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1AP_MMEConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateAcknowledge.h b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateAcknowledge.h new file mode 100644 index 0000000000..70391e95e0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMEConfigurationUpdateAcknowledge_H_ +#define _S1AP_MMEConfigurationUpdateAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MMEConfigurationUpdateAcknowledge */ +typedef struct S1AP_MMEConfigurationUpdateAcknowledge { + S1AP_ProtocolIE_Container_6551P47_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEConfigurationUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMEConfigurationUpdateAcknowledge_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateFailure.c b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateFailure.c new file mode 100644 index 0000000000..e3343aefd3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMEConfigurationUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P48, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEConfigurationUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEConfigurationUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateFailure_specs_1 = { + sizeof(struct S1AP_MMEConfigurationUpdateFailure), + offsetof(struct S1AP_MMEConfigurationUpdateFailure, _asn_ctx), + asn_MAP_S1AP_MMEConfigurationUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateFailure = { + "MMEConfigurationUpdateFailure", + "MMEConfigurationUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEConfigurationUpdateFailure_tags_1, + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MMEConfigurationUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEConfigurationUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_S1AP_MMEConfigurationUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateFailure.h b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateFailure.h new file mode 100644 index 0000000000..97dc8395b6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEConfigurationUpdateFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMEConfigurationUpdateFailure_H_ +#define _S1AP_MMEConfigurationUpdateFailure_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MMEConfigurationUpdateFailure */ +typedef struct S1AP_MMEConfigurationUpdateFailure { + S1AP_ProtocolIE_Container_6551P48_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEConfigurationUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMEConfigurationUpdateFailure_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMEDirectInformationTransfer.c b/lib/s1ap3/asn1c/S1AP_MMEDirectInformationTransfer.c new file mode 100644 index 0000000000..e66164a8bd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEDirectInformationTransfer.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMEDirectInformationTransfer.h" + +asn_TYPE_member_t asn_MBR_S1AP_MMEDirectInformationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEDirectInformationTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P66, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEDirectInformationTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEDirectInformationTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEDirectInformationTransfer_specs_1 = { + sizeof(struct S1AP_MMEDirectInformationTransfer), + offsetof(struct S1AP_MMEDirectInformationTransfer, _asn_ctx), + asn_MAP_S1AP_MMEDirectInformationTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEDirectInformationTransfer = { + "MMEDirectInformationTransfer", + "MMEDirectInformationTransfer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEDirectInformationTransfer_tags_1, + sizeof(asn_DEF_S1AP_MMEDirectInformationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_MMEDirectInformationTransfer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MMEDirectInformationTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEDirectInformationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_MMEDirectInformationTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEDirectInformationTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1AP_MMEDirectInformationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMEDirectInformationTransfer.h b/lib/s1ap3/asn1c/S1AP_MMEDirectInformationTransfer.h new file mode 100644 index 0000000000..572b2476cf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEDirectInformationTransfer.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMEDirectInformationTransfer_H_ +#define _S1AP_MMEDirectInformationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MMEDirectInformationTransfer */ +typedef struct S1AP_MMEDirectInformationTransfer { + S1AP_ProtocolIE_Container_6551P66_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEDirectInformationTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEDirectInformationTransfer; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEDirectInformationTransfer_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEDirectInformationTransfer_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMEDirectInformationTransfer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMEPagingTarget.c b/lib/s1ap3/asn1c/S1AP_MMEPagingTarget.c new file mode 100644 index 0000000000..60333b99dc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEPagingTarget.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMEPagingTarget.h" + +#include "S1AP_Global-ENB-ID.h" +#include "S1AP_TAI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_MMEPagingTarget_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_MMEPagingTarget_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_MMEPagingTarget_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_MMEPagingTarget, choice.global_ENB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Global_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-ENB-ID" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_MMEPagingTarget, choice.tAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEPagingTarget_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-ENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tAI */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_MMEPagingTarget_specs_1 = { + sizeof(struct S1AP_MMEPagingTarget), + offsetof(struct S1AP_MMEPagingTarget, _asn_ctx), + offsetof(struct S1AP_MMEPagingTarget, present), + sizeof(((struct S1AP_MMEPagingTarget *)0)->present), + asn_MAP_S1AP_MMEPagingTarget_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEPagingTarget = { + "MMEPagingTarget", + "MMEPagingTarget", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_MMEPagingTarget_constr_1, &asn_PER_type_S1AP_MMEPagingTarget_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_MMEPagingTarget_1, + 2, /* Elements count */ + &asn_SPC_S1AP_MMEPagingTarget_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMEPagingTarget.h b/lib/s1ap3/asn1c/S1AP_MMEPagingTarget.h new file mode 100644 index 0000000000..f7bc420006 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEPagingTarget.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMEPagingTarget_H_ +#define _S1AP_MMEPagingTarget_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_MMEPagingTarget_PR { + MMEPagingTarget_PR_NOTHING, /* No components present */ + MMEPagingTarget_PR_global_ENB_ID, + MMEPagingTarget_PR_tAI + /* Extensions may appear below */ + +} S1AP_MMEPagingTarget_PR; + +/* Forward declarations */ +struct S1AP_Global_ENB_ID; +struct S1AP_TAI; + +/* S1AP_MMEPagingTarget */ +typedef struct S1AP_MMEPagingTarget { + S1AP_MMEPagingTarget_PR present; + union S1AP_MMEPagingTarget_u { + struct S1AP_Global_ENB_ID *global_ENB_ID; + struct S1AP_TAI *tAI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEPagingTarget_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEPagingTarget; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_MMEPagingTarget_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEPagingTarget_1[2]; +extern asn_per_constraints_t asn_PER_type_S1AP_MMEPagingTarget_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMEPagingTarget_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMERelaySupportIndicator.c b/lib/s1ap3/asn1c/S1AP_MMERelaySupportIndicator.c new file mode 100644 index 0000000000..ffbf2ead8b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMERelaySupportIndicator.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMERelaySupportIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MMERelaySupportIndicator_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_MMERelaySupportIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_MMERelaySupportIndicator_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_MMERelaySupportIndicator_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_MMERelaySupportIndicator_specs_1 = { + asn_MAP_S1AP_MMERelaySupportIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_MMERelaySupportIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMERelaySupportIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMERelaySupportIndicator = { + "MMERelaySupportIndicator", + "MMERelaySupportIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_MMERelaySupportIndicator_tags_1, + sizeof(asn_DEF_S1AP_MMERelaySupportIndicator_tags_1) + /sizeof(asn_DEF_S1AP_MMERelaySupportIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MMERelaySupportIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MMERelaySupportIndicator_tags_1) + /sizeof(asn_DEF_S1AP_MMERelaySupportIndicator_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MMERelaySupportIndicator_constr_1, &asn_PER_type_S1AP_MMERelaySupportIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_MMERelaySupportIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMERelaySupportIndicator.h b/lib/s1ap3/asn1c/S1AP_MMERelaySupportIndicator.h new file mode 100644 index 0000000000..f537442eba --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMERelaySupportIndicator.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMERelaySupportIndicator_H_ +#define _S1AP_MMERelaySupportIndicator_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_MMERelaySupportIndicator { + S1AP_MMERelaySupportIndicator_true = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_MMERelaySupportIndicator; + +/* S1AP_MMERelaySupportIndicator */ +typedef long S1AP_MMERelaySupportIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMERelaySupportIndicator; +asn_struct_free_f S1AP_MMERelaySupportIndicator_free; +asn_struct_print_f S1AP_MMERelaySupportIndicator_print; +asn_constr_check_f S1AP_MMERelaySupportIndicator_constraint; +ber_type_decoder_f S1AP_MMERelaySupportIndicator_decode_ber; +der_type_encoder_f S1AP_MMERelaySupportIndicator_encode_der; +xer_type_decoder_f S1AP_MMERelaySupportIndicator_decode_xer; +xer_type_encoder_f S1AP_MMERelaySupportIndicator_encode_xer; +oer_type_decoder_f S1AP_MMERelaySupportIndicator_decode_oer; +oer_type_encoder_f S1AP_MMERelaySupportIndicator_encode_oer; +per_type_decoder_f S1AP_MMERelaySupportIndicator_decode_uper; +per_type_encoder_f S1AP_MMERelaySupportIndicator_encode_uper; +per_type_decoder_f S1AP_MMERelaySupportIndicator_decode_aper; +per_type_encoder_f S1AP_MMERelaySupportIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMERelaySupportIndicator_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.c b/lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.c new file mode 100644 index 0000000000..86ab2406b8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMEStatusTransfer.h" + +asn_TYPE_member_t asn_MBR_S1AP_MMEStatusTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEStatusTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P53, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEStatusTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEStatusTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEStatusTransfer_specs_1 = { + sizeof(struct S1AP_MMEStatusTransfer), + offsetof(struct S1AP_MMEStatusTransfer, _asn_ctx), + asn_MAP_S1AP_MMEStatusTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEStatusTransfer = { + "MMEStatusTransfer", + "MMEStatusTransfer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEStatusTransfer_tags_1, + sizeof(asn_DEF_S1AP_MMEStatusTransfer_tags_1) + /sizeof(asn_DEF_S1AP_MMEStatusTransfer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MMEStatusTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEStatusTransfer_tags_1) + /sizeof(asn_DEF_S1AP_MMEStatusTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEStatusTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1AP_MMEStatusTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.h b/lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.h new file mode 100644 index 0000000000..342aa68960 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEStatusTransfer.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMEStatusTransfer_H_ +#define _S1AP_MMEStatusTransfer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MMEStatusTransfer */ +typedef struct S1AP_MMEStatusTransfer { + S1AP_ProtocolIE_Container_6551P53_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEStatusTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEStatusTransfer; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEStatusTransfer_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEStatusTransfer_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMEStatusTransfer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MMEname.c b/lib/s1ap3/asn1c/S1AP_MMEname.c new file mode 100644 index 0000000000..83c815c6b7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEname.c @@ -0,0 +1,109 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MMEname.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_1[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +S1AP_MMEname_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 150) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_S1AP_MMEname_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_S1AP_MMEname_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using PrintableString, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MMEname_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_MMEname_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_S1AP_MMEname_1_v2c, /* Value to PER code map */ + asn_PER_MAP_S1AP_MMEname_1_c2v /* PER code to value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEname_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEname = { + "MMEname", + "MMEname", + &asn_OP_PrintableString, + asn_DEF_S1AP_MMEname_tags_1, + sizeof(asn_DEF_S1AP_MMEname_tags_1) + /sizeof(asn_DEF_S1AP_MMEname_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MMEname_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEname_tags_1) + /sizeof(asn_DEF_S1AP_MMEname_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MMEname_constr_1, &asn_PER_type_S1AP_MMEname_constr_1, S1AP_MMEname_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MMEname.h b/lib/s1ap3/asn1c/S1AP_MMEname.h new file mode 100644 index 0000000000..8e58261de1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MMEname.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MMEname_H_ +#define _S1AP_MMEname_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MMEname */ +typedef PrintableString_t S1AP_MMEname_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEname; +asn_struct_free_f S1AP_MMEname_free; +asn_struct_print_f S1AP_MMEname_print; +asn_constr_check_f S1AP_MMEname_constraint; +ber_type_decoder_f S1AP_MMEname_decode_ber; +der_type_encoder_f S1AP_MMEname_encode_der; +xer_type_decoder_f S1AP_MMEname_decode_xer; +xer_type_encoder_f S1AP_MMEname_encode_xer; +oer_type_decoder_f S1AP_MMEname_decode_oer; +oer_type_encoder_f S1AP_MMEname_encode_oer; +per_type_decoder_f S1AP_MMEname_decode_uper; +per_type_encoder_f S1AP_MMEname_encode_uper; +per_type_decoder_f S1AP_MMEname_decode_aper; +per_type_encoder_f S1AP_MMEname_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MMEname_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MSClassmark2.c b/lib/s1ap3/asn1c/S1AP_MSClassmark2.c new file mode 100644 index 0000000000..bd0bb21789 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MSClassmark2.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MSClassmark2.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_MSClassmark2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MSClassmark2 = { + "MSClassmark2", + "MSClassmark2", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_MSClassmark2_tags_1, + sizeof(asn_DEF_S1AP_MSClassmark2_tags_1) + /sizeof(asn_DEF_S1AP_MSClassmark2_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MSClassmark2_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MSClassmark2_tags_1) + /sizeof(asn_DEF_S1AP_MSClassmark2_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MSClassmark2.h b/lib/s1ap3/asn1c/S1AP_MSClassmark2.h new file mode 100644 index 0000000000..84938c8f07 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MSClassmark2.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MSClassmark2_H_ +#define _S1AP_MSClassmark2_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MSClassmark2 */ +typedef OCTET_STRING_t S1AP_MSClassmark2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MSClassmark2; +asn_struct_free_f S1AP_MSClassmark2_free; +asn_struct_print_f S1AP_MSClassmark2_print; +asn_constr_check_f S1AP_MSClassmark2_constraint; +ber_type_decoder_f S1AP_MSClassmark2_decode_ber; +der_type_encoder_f S1AP_MSClassmark2_encode_der; +xer_type_decoder_f S1AP_MSClassmark2_decode_xer; +xer_type_encoder_f S1AP_MSClassmark2_encode_xer; +oer_type_decoder_f S1AP_MSClassmark2_decode_oer; +oer_type_encoder_f S1AP_MSClassmark2_encode_oer; +per_type_decoder_f S1AP_MSClassmark2_decode_uper; +per_type_encoder_f S1AP_MSClassmark2_encode_uper; +per_type_decoder_f S1AP_MSClassmark2_decode_aper; +per_type_encoder_f S1AP_MSClassmark2_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MSClassmark2_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MSClassmark3.c b/lib/s1ap3/asn1c/S1AP_MSClassmark3.c new file mode 100644 index 0000000000..f019ddcbdd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MSClassmark3.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MSClassmark3.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_MSClassmark3_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MSClassmark3 = { + "MSClassmark3", + "MSClassmark3", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_MSClassmark3_tags_1, + sizeof(asn_DEF_S1AP_MSClassmark3_tags_1) + /sizeof(asn_DEF_S1AP_MSClassmark3_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MSClassmark3_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MSClassmark3_tags_1) + /sizeof(asn_DEF_S1AP_MSClassmark3_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MSClassmark3.h b/lib/s1ap3/asn1c/S1AP_MSClassmark3.h new file mode 100644 index 0000000000..bfefc910e7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MSClassmark3.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MSClassmark3_H_ +#define _S1AP_MSClassmark3_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MSClassmark3 */ +typedef OCTET_STRING_t S1AP_MSClassmark3_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MSClassmark3; +asn_struct_free_f S1AP_MSClassmark3_free; +asn_struct_print_f S1AP_MSClassmark3_print; +asn_constr_check_f S1AP_MSClassmark3_constraint; +ber_type_decoder_f S1AP_MSClassmark3_decode_ber; +der_type_encoder_f S1AP_MSClassmark3_encode_der; +xer_type_decoder_f S1AP_MSClassmark3_decode_xer; +xer_type_encoder_f S1AP_MSClassmark3_encode_xer; +oer_type_decoder_f S1AP_MSClassmark3_decode_oer; +oer_type_encoder_f S1AP_MSClassmark3_encode_oer; +per_type_decoder_f S1AP_MSClassmark3_decode_uper; +per_type_encoder_f S1AP_MSClassmark3_encode_uper; +per_type_decoder_f S1AP_MSClassmark3_decode_aper; +per_type_encoder_f S1AP_MSClassmark3_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MSClassmark3_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ManagementBasedMDTAllowed.c b/lib/s1ap3/asn1c/S1AP_ManagementBasedMDTAllowed.c new file mode 100644 index 0000000000..fa7a2e8947 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ManagementBasedMDTAllowed.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ManagementBasedMDTAllowed.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ManagementBasedMDTAllowed_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_ManagementBasedMDTAllowed_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ManagementBasedMDTAllowed_value2enum_1[] = { + { 0, 7, "allowed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_ManagementBasedMDTAllowed_enum2value_1[] = { + 0 /* allowed(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_ManagementBasedMDTAllowed_specs_1 = { + asn_MAP_S1AP_ManagementBasedMDTAllowed_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ManagementBasedMDTAllowed_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ManagementBasedMDTAllowed_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ManagementBasedMDTAllowed = { + "ManagementBasedMDTAllowed", + "ManagementBasedMDTAllowed", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ManagementBasedMDTAllowed_tags_1, + sizeof(asn_DEF_S1AP_ManagementBasedMDTAllowed_tags_1) + /sizeof(asn_DEF_S1AP_ManagementBasedMDTAllowed_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ManagementBasedMDTAllowed_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ManagementBasedMDTAllowed_tags_1) + /sizeof(asn_DEF_S1AP_ManagementBasedMDTAllowed_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ManagementBasedMDTAllowed_constr_1, &asn_PER_type_S1AP_ManagementBasedMDTAllowed_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ManagementBasedMDTAllowed_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ManagementBasedMDTAllowed.h b/lib/s1ap3/asn1c/S1AP_ManagementBasedMDTAllowed.h new file mode 100644 index 0000000000..0d5fa58df9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ManagementBasedMDTAllowed.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ManagementBasedMDTAllowed_H_ +#define _S1AP_ManagementBasedMDTAllowed_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ManagementBasedMDTAllowed { + S1AP_ManagementBasedMDTAllowed_allowed = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_ManagementBasedMDTAllowed; + +/* S1AP_ManagementBasedMDTAllowed */ +typedef long S1AP_ManagementBasedMDTAllowed_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ManagementBasedMDTAllowed; +asn_struct_free_f S1AP_ManagementBasedMDTAllowed_free; +asn_struct_print_f S1AP_ManagementBasedMDTAllowed_print; +asn_constr_check_f S1AP_ManagementBasedMDTAllowed_constraint; +ber_type_decoder_f S1AP_ManagementBasedMDTAllowed_decode_ber; +der_type_encoder_f S1AP_ManagementBasedMDTAllowed_encode_der; +xer_type_decoder_f S1AP_ManagementBasedMDTAllowed_decode_xer; +xer_type_encoder_f S1AP_ManagementBasedMDTAllowed_encode_xer; +oer_type_decoder_f S1AP_ManagementBasedMDTAllowed_decode_oer; +oer_type_encoder_f S1AP_ManagementBasedMDTAllowed_encode_oer; +per_type_decoder_f S1AP_ManagementBasedMDTAllowed_decode_uper; +per_type_encoder_f S1AP_ManagementBasedMDTAllowed_encode_uper; +per_type_decoder_f S1AP_ManagementBasedMDTAllowed_decode_aper; +per_type_encoder_f S1AP_ManagementBasedMDTAllowed_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ManagementBasedMDTAllowed_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Masked-IMEISV.c b/lib/s1ap3/asn1c/S1AP_Masked-IMEISV.c new file mode 100644 index 0000000000..05fa7c7cfe --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Masked-IMEISV.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Masked-IMEISV.h" + +int +S1AP_Masked_IMEISV_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 64)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Masked_IMEISV_constr_1 CC_NOTUSED = { + { 0, 0 }, + 64 /* (SIZE(64..64)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_Masked_IMEISV_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 64, 64 } /* (SIZE(64..64)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Masked_IMEISV_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Masked_IMEISV = { + "Masked-IMEISV", + "Masked-IMEISV", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_Masked_IMEISV_tags_1, + sizeof(asn_DEF_S1AP_Masked_IMEISV_tags_1) + /sizeof(asn_DEF_S1AP_Masked_IMEISV_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Masked_IMEISV_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Masked_IMEISV_tags_1) + /sizeof(asn_DEF_S1AP_Masked_IMEISV_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Masked_IMEISV_constr_1, &asn_PER_type_S1AP_Masked_IMEISV_constr_1, S1AP_Masked_IMEISV_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Masked-IMEISV.h b/lib/s1ap3/asn1c/S1AP_Masked-IMEISV.h new file mode 100644 index 0000000000..23a2c8ccbe --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Masked-IMEISV.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Masked_IMEISV_H_ +#define _S1AP_Masked_IMEISV_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Masked-IMEISV */ +typedef BIT_STRING_t S1AP_Masked_IMEISV_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Masked_IMEISV; +asn_struct_free_f S1AP_Masked_IMEISV_free; +asn_struct_print_f S1AP_Masked_IMEISV_print; +asn_constr_check_f S1AP_Masked_IMEISV_constraint; +ber_type_decoder_f S1AP_Masked_IMEISV_decode_ber; +der_type_encoder_f S1AP_Masked_IMEISV_encode_der; +xer_type_decoder_f S1AP_Masked_IMEISV_decode_xer; +xer_type_encoder_f S1AP_Masked_IMEISV_encode_xer; +oer_type_decoder_f S1AP_Masked_IMEISV_decode_oer; +oer_type_encoder_f S1AP_Masked_IMEISV_encode_oer; +per_type_decoder_f S1AP_Masked_IMEISV_decode_uper; +per_type_encoder_f S1AP_Masked_IMEISV_encode_uper; +per_type_decoder_f S1AP_Masked_IMEISV_decode_aper; +per_type_encoder_f S1AP_Masked_IMEISV_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Masked_IMEISV_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.c b/lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.c new file mode 100644 index 0000000000..63faebdff0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MeasurementThresholdA2.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_MeasurementThresholdA2_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_MeasurementThresholdA2_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_MeasurementThresholdA2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MeasurementThresholdA2, choice.threshold_RSRP), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Threshold_RSRP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "threshold-RSRP" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MeasurementThresholdA2, choice.threshold_RSRQ), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Threshold_RSRQ, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "threshold-RSRQ" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MeasurementThresholdA2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* threshold-RSRP */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* threshold-RSRQ */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_MeasurementThresholdA2_specs_1 = { + sizeof(struct S1AP_MeasurementThresholdA2), + offsetof(struct S1AP_MeasurementThresholdA2, _asn_ctx), + offsetof(struct S1AP_MeasurementThresholdA2, present), + sizeof(((struct S1AP_MeasurementThresholdA2 *)0)->present), + asn_MAP_S1AP_MeasurementThresholdA2_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MeasurementThresholdA2 = { + "MeasurementThresholdA2", + "MeasurementThresholdA2", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_MeasurementThresholdA2_constr_1, &asn_PER_type_S1AP_MeasurementThresholdA2_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_MeasurementThresholdA2_1, + 2, /* Elements count */ + &asn_SPC_S1AP_MeasurementThresholdA2_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.h b/lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.h new file mode 100644 index 0000000000..986edb4456 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MeasurementThresholdA2.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MeasurementThresholdA2_H_ +#define _S1AP_MeasurementThresholdA2_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_Threshold-RSRP.h" +#include "S1AP_Threshold-RSRQ.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_MeasurementThresholdA2_PR { + MeasurementThresholdA2_PR_NOTHING, /* No components present */ + MeasurementThresholdA2_PR_threshold_RSRP, + MeasurementThresholdA2_PR_threshold_RSRQ + /* Extensions may appear below */ + +} S1AP_MeasurementThresholdA2_PR; + +/* S1AP_MeasurementThresholdA2 */ +typedef struct S1AP_MeasurementThresholdA2 { + S1AP_MeasurementThresholdA2_PR present; + union S1AP_MeasurementThresholdA2_u { + S1AP_Threshold_RSRP_t threshold_RSRP; + S1AP_Threshold_RSRQ_t threshold_RSRQ; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MeasurementThresholdA2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MeasurementThresholdA2; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_MeasurementThresholdA2_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_MeasurementThresholdA2_1[2]; +extern asn_per_constraints_t asn_PER_type_S1AP_MeasurementThresholdA2_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MeasurementThresholdA2_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.c b/lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.c new file mode 100644 index 0000000000..9ef866fcae --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MeasurementsToActivate.h" + +int +S1AP_MeasurementsToActivate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MeasurementsToActivate_constr_1 CC_NOTUSED = { + { 0, 0 }, + 8 /* (SIZE(8..8)) */}; +asn_per_constraints_t asn_PER_type_S1AP_MeasurementsToActivate_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MeasurementsToActivate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MeasurementsToActivate = { + "MeasurementsToActivate", + "MeasurementsToActivate", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_MeasurementsToActivate_tags_1, + sizeof(asn_DEF_S1AP_MeasurementsToActivate_tags_1) + /sizeof(asn_DEF_S1AP_MeasurementsToActivate_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MeasurementsToActivate_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MeasurementsToActivate_tags_1) + /sizeof(asn_DEF_S1AP_MeasurementsToActivate_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MeasurementsToActivate_constr_1, &asn_PER_type_S1AP_MeasurementsToActivate_constr_1, S1AP_MeasurementsToActivate_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.h b/lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.h new file mode 100644 index 0000000000..dd62fb3783 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MeasurementsToActivate.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MeasurementsToActivate_H_ +#define _S1AP_MeasurementsToActivate_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MeasurementsToActivate */ +typedef BIT_STRING_t S1AP_MeasurementsToActivate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_MeasurementsToActivate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MeasurementsToActivate; +asn_struct_free_f S1AP_MeasurementsToActivate_free; +asn_struct_print_f S1AP_MeasurementsToActivate_print; +asn_constr_check_f S1AP_MeasurementsToActivate_constraint; +ber_type_decoder_f S1AP_MeasurementsToActivate_decode_ber; +der_type_encoder_f S1AP_MeasurementsToActivate_encode_der; +xer_type_decoder_f S1AP_MeasurementsToActivate_decode_xer; +xer_type_encoder_f S1AP_MeasurementsToActivate_encode_xer; +oer_type_decoder_f S1AP_MeasurementsToActivate_decode_oer; +oer_type_encoder_f S1AP_MeasurementsToActivate_encode_oer; +per_type_decoder_f S1AP_MeasurementsToActivate_decode_uper; +per_type_encoder_f S1AP_MeasurementsToActivate_encode_uper; +per_type_decoder_f S1AP_MeasurementsToActivate_decode_aper; +per_type_encoder_f S1AP_MeasurementsToActivate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MeasurementsToActivate_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MessageIdentifier.c b/lib/s1ap3/asn1c/S1AP_MessageIdentifier.c new file mode 100644 index 0000000000..35e4a8c0a2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MessageIdentifier.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MessageIdentifier.h" + +int +S1AP_MessageIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MessageIdentifier_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_MessageIdentifier_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MessageIdentifier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MessageIdentifier = { + "MessageIdentifier", + "MessageIdentifier", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_MessageIdentifier_tags_1, + sizeof(asn_DEF_S1AP_MessageIdentifier_tags_1) + /sizeof(asn_DEF_S1AP_MessageIdentifier_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MessageIdentifier_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MessageIdentifier_tags_1) + /sizeof(asn_DEF_S1AP_MessageIdentifier_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MessageIdentifier_constr_1, &asn_PER_type_S1AP_MessageIdentifier_constr_1, S1AP_MessageIdentifier_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MessageIdentifier.h b/lib/s1ap3/asn1c/S1AP_MessageIdentifier.h new file mode 100644 index 0000000000..7762deb18c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MessageIdentifier.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MessageIdentifier_H_ +#define _S1AP_MessageIdentifier_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MessageIdentifier */ +typedef BIT_STRING_t S1AP_MessageIdentifier_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MessageIdentifier; +asn_struct_free_f S1AP_MessageIdentifier_free; +asn_struct_print_f S1AP_MessageIdentifier_print; +asn_constr_check_f S1AP_MessageIdentifier_constraint; +ber_type_decoder_f S1AP_MessageIdentifier_decode_ber; +der_type_encoder_f S1AP_MessageIdentifier_encode_der; +xer_type_decoder_f S1AP_MessageIdentifier_decode_xer; +xer_type_encoder_f S1AP_MessageIdentifier_encode_xer; +oer_type_decoder_f S1AP_MessageIdentifier_decode_oer; +oer_type_encoder_f S1AP_MessageIdentifier_encode_oer; +per_type_decoder_f S1AP_MessageIdentifier_decode_uper; +per_type_encoder_f S1AP_MessageIdentifier_encode_uper; +per_type_decoder_f S1AP_MessageIdentifier_decode_aper; +per_type_encoder_f S1AP_MessageIdentifier_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MessageIdentifier_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MobilityInformation.c b/lib/s1ap3/asn1c/S1AP_MobilityInformation.c new file mode 100644 index 0000000000..056f78c26b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MobilityInformation.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MobilityInformation.h" + +int +S1AP_MobilityInformation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MobilityInformation_constr_1 CC_NOTUSED = { + { 0, 0 }, + 32 /* (SIZE(32..32)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_MobilityInformation_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 32, 32 } /* (SIZE(32..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MobilityInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MobilityInformation = { + "MobilityInformation", + "MobilityInformation", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_MobilityInformation_tags_1, + sizeof(asn_DEF_S1AP_MobilityInformation_tags_1) + /sizeof(asn_DEF_S1AP_MobilityInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MobilityInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MobilityInformation_tags_1) + /sizeof(asn_DEF_S1AP_MobilityInformation_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MobilityInformation_constr_1, &asn_PER_type_S1AP_MobilityInformation_constr_1, S1AP_MobilityInformation_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MobilityInformation.h b/lib/s1ap3/asn1c/S1AP_MobilityInformation.h new file mode 100644 index 0000000000..9346808902 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MobilityInformation.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MobilityInformation_H_ +#define _S1AP_MobilityInformation_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_MobilityInformation */ +typedef BIT_STRING_t S1AP_MobilityInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MobilityInformation; +asn_struct_free_f S1AP_MobilityInformation_free; +asn_struct_print_f S1AP_MobilityInformation_print; +asn_constr_check_f S1AP_MobilityInformation_constraint; +ber_type_decoder_f S1AP_MobilityInformation_decode_ber; +der_type_encoder_f S1AP_MobilityInformation_encode_der; +xer_type_decoder_f S1AP_MobilityInformation_decode_xer; +xer_type_encoder_f S1AP_MobilityInformation_encode_xer; +oer_type_decoder_f S1AP_MobilityInformation_decode_oer; +oer_type_encoder_f S1AP_MobilityInformation_encode_oer; +per_type_decoder_f S1AP_MobilityInformation_decode_uper; +per_type_encoder_f S1AP_MobilityInformation_encode_uper; +per_type_decoder_f S1AP_MobilityInformation_decode_aper; +per_type_encoder_f S1AP_MobilityInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MobilityInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MutingAvailabilityIndication.c b/lib/s1ap3/asn1c/S1AP_MutingAvailabilityIndication.c new file mode 100644 index 0000000000..d48f38a7f7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MutingAvailabilityIndication.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MutingAvailabilityIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_MutingAvailabilityIndication_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_MutingAvailabilityIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_MutingAvailabilityIndication_value2enum_1[] = { + { 0, 9, "available" }, + { 1, 11, "unavailable" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_MutingAvailabilityIndication_enum2value_1[] = { + 0, /* available(0) */ + 1 /* unavailable(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_MutingAvailabilityIndication_specs_1 = { + asn_MAP_S1AP_MutingAvailabilityIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_MutingAvailabilityIndication_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MutingAvailabilityIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MutingAvailabilityIndication = { + "MutingAvailabilityIndication", + "MutingAvailabilityIndication", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_MutingAvailabilityIndication_tags_1, + sizeof(asn_DEF_S1AP_MutingAvailabilityIndication_tags_1) + /sizeof(asn_DEF_S1AP_MutingAvailabilityIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MutingAvailabilityIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MutingAvailabilityIndication_tags_1) + /sizeof(asn_DEF_S1AP_MutingAvailabilityIndication_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_MutingAvailabilityIndication_constr_1, &asn_PER_type_S1AP_MutingAvailabilityIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_MutingAvailabilityIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MutingAvailabilityIndication.h b/lib/s1ap3/asn1c/S1AP_MutingAvailabilityIndication.h new file mode 100644 index 0000000000..8a7af1a9a0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MutingAvailabilityIndication.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MutingAvailabilityIndication_H_ +#define _S1AP_MutingAvailabilityIndication_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_MutingAvailabilityIndication { + S1AP_MutingAvailabilityIndication_available = 0, + S1AP_MutingAvailabilityIndication_unavailable = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_MutingAvailabilityIndication; + +/* S1AP_MutingAvailabilityIndication */ +typedef long S1AP_MutingAvailabilityIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MutingAvailabilityIndication; +asn_struct_free_f S1AP_MutingAvailabilityIndication_free; +asn_struct_print_f S1AP_MutingAvailabilityIndication_print; +asn_constr_check_f S1AP_MutingAvailabilityIndication_constraint; +ber_type_decoder_f S1AP_MutingAvailabilityIndication_decode_ber; +der_type_encoder_f S1AP_MutingAvailabilityIndication_encode_der; +xer_type_decoder_f S1AP_MutingAvailabilityIndication_decode_xer; +xer_type_encoder_f S1AP_MutingAvailabilityIndication_encode_xer; +oer_type_decoder_f S1AP_MutingAvailabilityIndication_decode_oer; +oer_type_encoder_f S1AP_MutingAvailabilityIndication_encode_oer; +per_type_decoder_f S1AP_MutingAvailabilityIndication_decode_uper; +per_type_encoder_f S1AP_MutingAvailabilityIndication_encode_uper; +per_type_decoder_f S1AP_MutingAvailabilityIndication_decode_aper; +per_type_encoder_f S1AP_MutingAvailabilityIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MutingAvailabilityIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_MutingPatternInformation.c b/lib/s1ap3/asn1c/S1AP_MutingPatternInformation.c new file mode 100644 index 0000000000..e08718e238 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MutingPatternInformation.c @@ -0,0 +1,163 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_MutingPatternInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_S1AP_muting_pattern_offset_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 10239)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_type_S1AP_muting_pattern_period_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_muting_pattern_period_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_muting_pattern_offset_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_muting_pattern_offset_constr_9 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 14, 14, 0, 10239 } /* (0..10239,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_muting_pattern_period_value2enum_2[] = { + { 0, 3, "ms0" }, + { 1, 6, "ms1280" }, + { 2, 6, "ms2560" }, + { 3, 6, "ms5120" }, + { 4, 7, "ms10240" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_muting_pattern_period_enum2value_2[] = { + 0, /* ms0(0) */ + 4, /* ms10240(4) */ + 1, /* ms1280(1) */ + 2, /* ms2560(2) */ + 3 /* ms5120(3) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_muting_pattern_period_specs_2 = { + asn_MAP_S1AP_muting_pattern_period_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_muting_pattern_period_enum2value_2, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_muting_pattern_period_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_muting_pattern_period_2 = { + "muting-pattern-period", + "muting-pattern-period", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_muting_pattern_period_tags_2, + sizeof(asn_DEF_S1AP_muting_pattern_period_tags_2) + /sizeof(asn_DEF_S1AP_muting_pattern_period_tags_2[0]) - 1, /* 1 */ + asn_DEF_S1AP_muting_pattern_period_tags_2, /* Same as above */ + sizeof(asn_DEF_S1AP_muting_pattern_period_tags_2) + /sizeof(asn_DEF_S1AP_muting_pattern_period_tags_2[0]), /* 2 */ + { &asn_OER_type_S1AP_muting_pattern_period_constr_2, &asn_PER_type_S1AP_muting_pattern_period_constr_2, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_muting_pattern_period_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_MutingPatternInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MutingPatternInformation, muting_pattern_period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_muting_pattern_period_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "muting-pattern-period" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_MutingPatternInformation, muting_pattern_offset), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_S1AP_muting_pattern_offset_constr_9, &asn_PER_memb_S1AP_muting_pattern_offset_constr_9, memb_S1AP_muting_pattern_offset_constraint_1 }, + 0, 0, /* No default value */ + "muting-pattern-offset" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_MutingPatternInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P74, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_MutingPatternInformation_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_MutingPatternInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MutingPatternInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* muting-pattern-period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* muting-pattern-offset */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_MutingPatternInformation_specs_1 = { + sizeof(struct S1AP_MutingPatternInformation), + offsetof(struct S1AP_MutingPatternInformation, _asn_ctx), + asn_MAP_S1AP_MutingPatternInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_MutingPatternInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MutingPatternInformation = { + "MutingPatternInformation", + "MutingPatternInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MutingPatternInformation_tags_1, + sizeof(asn_DEF_S1AP_MutingPatternInformation_tags_1) + /sizeof(asn_DEF_S1AP_MutingPatternInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_MutingPatternInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_MutingPatternInformation_tags_1) + /sizeof(asn_DEF_S1AP_MutingPatternInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MutingPatternInformation_1, + 3, /* Elements count */ + &asn_SPC_S1AP_MutingPatternInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_MutingPatternInformation.h b/lib/s1ap3/asn1c/S1AP_MutingPatternInformation.h new file mode 100644 index 0000000000..8fa371949a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_MutingPatternInformation.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_MutingPatternInformation_H_ +#define _S1AP_MutingPatternInformation_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_MutingPatternInformation__muting_pattern_period { + S1AP_MutingPatternInformation__muting_pattern_period_ms0 = 0, + S1AP_MutingPatternInformation__muting_pattern_period_ms1280 = 1, + S1AP_MutingPatternInformation__muting_pattern_period_ms2560 = 2, + S1AP_MutingPatternInformation__muting_pattern_period_ms5120 = 3, + S1AP_MutingPatternInformation__muting_pattern_period_ms10240 = 4 + /* + * Enumeration is extensible + */ +} e_S1AP_MutingPatternInformation__muting_pattern_period; + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_MutingPatternInformation */ +typedef struct S1AP_MutingPatternInformation { + long muting_pattern_period; + long *muting_pattern_offset; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MutingPatternInformation_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_S1AP_muting_pattern_period_2; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MutingPatternInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_MutingPatternInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NAS-PDU.c b/lib/s1ap3/asn1c/S1AP_NAS-PDU.c new file mode 100644 index 0000000000..5e6d8480bb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NAS-PDU.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NAS-PDU.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_NAS_PDU_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NAS_PDU = { + "NAS-PDU", + "NAS-PDU", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_NAS_PDU_tags_1, + sizeof(asn_DEF_S1AP_NAS_PDU_tags_1) + /sizeof(asn_DEF_S1AP_NAS_PDU_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NAS_PDU_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NAS_PDU_tags_1) + /sizeof(asn_DEF_S1AP_NAS_PDU_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NAS-PDU.h b/lib/s1ap3/asn1c/S1AP_NAS-PDU.h new file mode 100644 index 0000000000..dff4cb12db --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NAS-PDU.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NAS_PDU_H_ +#define _S1AP_NAS_PDU_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_NAS-PDU */ +typedef OCTET_STRING_t S1AP_NAS_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NAS_PDU; +asn_struct_free_f S1AP_NAS_PDU_free; +asn_struct_print_f S1AP_NAS_PDU_print; +asn_constr_check_f S1AP_NAS_PDU_constraint; +ber_type_decoder_f S1AP_NAS_PDU_decode_ber; +der_type_encoder_f S1AP_NAS_PDU_encode_der; +xer_type_decoder_f S1AP_NAS_PDU_decode_xer; +xer_type_encoder_f S1AP_NAS_PDU_encode_xer; +oer_type_decoder_f S1AP_NAS_PDU_decode_oer; +oer_type_encoder_f S1AP_NAS_PDU_encode_oer; +per_type_decoder_f S1AP_NAS_PDU_decode_uper; +per_type_encoder_f S1AP_NAS_PDU_encode_uper; +per_type_decoder_f S1AP_NAS_PDU_decode_aper; +per_type_encoder_f S1AP_NAS_PDU_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NAS_PDU_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.c b/lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.c new file mode 100644 index 0000000000..54530d9006 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NASDeliveryIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_NASDeliveryIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASDeliveryIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P36, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NASDeliveryIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_NASDeliveryIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_NASDeliveryIndication_specs_1 = { + sizeof(struct S1AP_NASDeliveryIndication), + offsetof(struct S1AP_NASDeliveryIndication, _asn_ctx), + asn_MAP_S1AP_NASDeliveryIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NASDeliveryIndication = { + "NASDeliveryIndication", + "NASDeliveryIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_NASDeliveryIndication_tags_1, + sizeof(asn_DEF_S1AP_NASDeliveryIndication_tags_1) + /sizeof(asn_DEF_S1AP_NASDeliveryIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NASDeliveryIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NASDeliveryIndication_tags_1) + /sizeof(asn_DEF_S1AP_NASDeliveryIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_NASDeliveryIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_NASDeliveryIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.h b/lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.h new file mode 100644 index 0000000000..7736c18b9e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NASDeliveryIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NASDeliveryIndication_H_ +#define _S1AP_NASDeliveryIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_NASDeliveryIndication */ +typedef struct S1AP_NASDeliveryIndication { + S1AP_ProtocolIE_Container_6551P36_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_NASDeliveryIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NASDeliveryIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_NASDeliveryIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_NASDeliveryIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NASDeliveryIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NASNonDeliveryIndication.c b/lib/s1ap3/asn1c/S1AP_NASNonDeliveryIndication.c new file mode 100644 index 0000000000..4208948481 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NASNonDeliveryIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NASNonDeliveryIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_NASNonDeliveryIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASNonDeliveryIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P34, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NASNonDeliveryIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_NASNonDeliveryIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_NASNonDeliveryIndication_specs_1 = { + sizeof(struct S1AP_NASNonDeliveryIndication), + offsetof(struct S1AP_NASNonDeliveryIndication, _asn_ctx), + asn_MAP_S1AP_NASNonDeliveryIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NASNonDeliveryIndication = { + "NASNonDeliveryIndication", + "NASNonDeliveryIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_NASNonDeliveryIndication_tags_1, + sizeof(asn_DEF_S1AP_NASNonDeliveryIndication_tags_1) + /sizeof(asn_DEF_S1AP_NASNonDeliveryIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NASNonDeliveryIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NASNonDeliveryIndication_tags_1) + /sizeof(asn_DEF_S1AP_NASNonDeliveryIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_NASNonDeliveryIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_NASNonDeliveryIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NASNonDeliveryIndication.h b/lib/s1ap3/asn1c/S1AP_NASNonDeliveryIndication.h new file mode 100644 index 0000000000..9518dea8e9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NASNonDeliveryIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NASNonDeliveryIndication_H_ +#define _S1AP_NASNonDeliveryIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_NASNonDeliveryIndication */ +typedef struct S1AP_NASNonDeliveryIndication { + S1AP_ProtocolIE_Container_6551P34_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_NASNonDeliveryIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NASNonDeliveryIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_NASNonDeliveryIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_NASNonDeliveryIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NASNonDeliveryIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NASSecurityParametersfromE-UTRAN.c b/lib/s1ap3/asn1c/S1AP_NASSecurityParametersfromE-UTRAN.c new file mode 100644 index 0000000000..5ac4184aaa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NASSecurityParametersfromE-UTRAN.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NASSecurityParametersfromE-UTRAN.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN = { + "NASSecurityParametersfromE-UTRAN", + "NASSecurityParametersfromE-UTRAN", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN_tags_1, + sizeof(asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN_tags_1) + /sizeof(asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN_tags_1) + /sizeof(asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NASSecurityParametersfromE-UTRAN.h b/lib/s1ap3/asn1c/S1AP_NASSecurityParametersfromE-UTRAN.h new file mode 100644 index 0000000000..945103108a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NASSecurityParametersfromE-UTRAN.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NASSecurityParametersfromE_UTRAN_H_ +#define _S1AP_NASSecurityParametersfromE_UTRAN_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_NASSecurityParametersfromE-UTRAN */ +typedef OCTET_STRING_t S1AP_NASSecurityParametersfromE_UTRAN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN; +asn_struct_free_f S1AP_NASSecurityParametersfromE_UTRAN_free; +asn_struct_print_f S1AP_NASSecurityParametersfromE_UTRAN_print; +asn_constr_check_f S1AP_NASSecurityParametersfromE_UTRAN_constraint; +ber_type_decoder_f S1AP_NASSecurityParametersfromE_UTRAN_decode_ber; +der_type_encoder_f S1AP_NASSecurityParametersfromE_UTRAN_encode_der; +xer_type_decoder_f S1AP_NASSecurityParametersfromE_UTRAN_decode_xer; +xer_type_encoder_f S1AP_NASSecurityParametersfromE_UTRAN_encode_xer; +oer_type_decoder_f S1AP_NASSecurityParametersfromE_UTRAN_decode_oer; +oer_type_encoder_f S1AP_NASSecurityParametersfromE_UTRAN_encode_oer; +per_type_decoder_f S1AP_NASSecurityParametersfromE_UTRAN_decode_uper; +per_type_encoder_f S1AP_NASSecurityParametersfromE_UTRAN_encode_uper; +per_type_decoder_f S1AP_NASSecurityParametersfromE_UTRAN_decode_aper; +per_type_encoder_f S1AP_NASSecurityParametersfromE_UTRAN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NASSecurityParametersfromE_UTRAN_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NASSecurityParameterstoE-UTRAN.c b/lib/s1ap3/asn1c/S1AP_NASSecurityParameterstoE-UTRAN.c new file mode 100644 index 0000000000..8f551908ae --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NASSecurityParameterstoE-UTRAN.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NASSecurityParameterstoE-UTRAN.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN = { + "NASSecurityParameterstoE-UTRAN", + "NASSecurityParameterstoE-UTRAN", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN_tags_1, + sizeof(asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN_tags_1) + /sizeof(asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN_tags_1) + /sizeof(asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NASSecurityParameterstoE-UTRAN.h b/lib/s1ap3/asn1c/S1AP_NASSecurityParameterstoE-UTRAN.h new file mode 100644 index 0000000000..c4e3f14f1f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NASSecurityParameterstoE-UTRAN.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NASSecurityParameterstoE_UTRAN_H_ +#define _S1AP_NASSecurityParameterstoE_UTRAN_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_NASSecurityParameterstoE-UTRAN */ +typedef OCTET_STRING_t S1AP_NASSecurityParameterstoE_UTRAN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN; +asn_struct_free_f S1AP_NASSecurityParameterstoE_UTRAN_free; +asn_struct_print_f S1AP_NASSecurityParameterstoE_UTRAN_print; +asn_constr_check_f S1AP_NASSecurityParameterstoE_UTRAN_constraint; +ber_type_decoder_f S1AP_NASSecurityParameterstoE_UTRAN_decode_ber; +der_type_encoder_f S1AP_NASSecurityParameterstoE_UTRAN_encode_der; +xer_type_decoder_f S1AP_NASSecurityParameterstoE_UTRAN_decode_xer; +xer_type_encoder_f S1AP_NASSecurityParameterstoE_UTRAN_encode_xer; +oer_type_decoder_f S1AP_NASSecurityParameterstoE_UTRAN_decode_oer; +oer_type_encoder_f S1AP_NASSecurityParameterstoE_UTRAN_encode_oer; +per_type_decoder_f S1AP_NASSecurityParameterstoE_UTRAN_decode_uper; +per_type_encoder_f S1AP_NASSecurityParameterstoE_UTRAN_encode_uper; +per_type_decoder_f S1AP_NASSecurityParameterstoE_UTRAN_decode_aper; +per_type_encoder_f S1AP_NASSecurityParameterstoE_UTRAN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NASSecurityParameterstoE_UTRAN_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-DefaultPagingDRX.c b/lib/s1ap3/asn1c/S1AP_NB-IoT-DefaultPagingDRX.c new file mode 100644 index 0000000000..d30a28c21d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-DefaultPagingDRX.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NB-IoT-DefaultPagingDRX.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_NB_IoT_DefaultPagingDRX_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_NB_IoT_DefaultPagingDRX_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_NB_IoT_DefaultPagingDRX_value2enum_1[] = { + { 0, 4, "v128" }, + { 1, 4, "v256" }, + { 2, 4, "v512" }, + { 3, 5, "v1024" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_NB_IoT_DefaultPagingDRX_enum2value_1[] = { + 3, /* v1024(3) */ + 0, /* v128(0) */ + 1, /* v256(1) */ + 2 /* v512(2) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_NB_IoT_DefaultPagingDRX_specs_1 = { + asn_MAP_S1AP_NB_IoT_DefaultPagingDRX_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_NB_IoT_DefaultPagingDRX_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NB_IoT_DefaultPagingDRX_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_DefaultPagingDRX = { + "NB-IoT-DefaultPagingDRX", + "NB-IoT-DefaultPagingDRX", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_NB_IoT_DefaultPagingDRX_tags_1, + sizeof(asn_DEF_S1AP_NB_IoT_DefaultPagingDRX_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_DefaultPagingDRX_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NB_IoT_DefaultPagingDRX_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NB_IoT_DefaultPagingDRX_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_DefaultPagingDRX_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_NB_IoT_DefaultPagingDRX_constr_1, &asn_PER_type_S1AP_NB_IoT_DefaultPagingDRX_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_NB_IoT_DefaultPagingDRX_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-DefaultPagingDRX.h b/lib/s1ap3/asn1c/S1AP_NB-IoT-DefaultPagingDRX.h new file mode 100644 index 0000000000..f74b2a3ea0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-DefaultPagingDRX.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NB_IoT_DefaultPagingDRX_H_ +#define _S1AP_NB_IoT_DefaultPagingDRX_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_NB_IoT_DefaultPagingDRX { + S1AP_NB_IoT_DefaultPagingDRX_v128 = 0, + S1AP_NB_IoT_DefaultPagingDRX_v256 = 1, + S1AP_NB_IoT_DefaultPagingDRX_v512 = 2, + S1AP_NB_IoT_DefaultPagingDRX_v1024 = 3 + /* + * Enumeration is extensible + */ +} e_S1AP_NB_IoT_DefaultPagingDRX; + +/* S1AP_NB-IoT-DefaultPagingDRX */ +typedef long S1AP_NB_IoT_DefaultPagingDRX_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_DefaultPagingDRX; +asn_struct_free_f S1AP_NB_IoT_DefaultPagingDRX_free; +asn_struct_print_f S1AP_NB_IoT_DefaultPagingDRX_print; +asn_constr_check_f S1AP_NB_IoT_DefaultPagingDRX_constraint; +ber_type_decoder_f S1AP_NB_IoT_DefaultPagingDRX_decode_ber; +der_type_encoder_f S1AP_NB_IoT_DefaultPagingDRX_encode_der; +xer_type_decoder_f S1AP_NB_IoT_DefaultPagingDRX_decode_xer; +xer_type_encoder_f S1AP_NB_IoT_DefaultPagingDRX_encode_xer; +oer_type_decoder_f S1AP_NB_IoT_DefaultPagingDRX_decode_oer; +oer_type_encoder_f S1AP_NB_IoT_DefaultPagingDRX_encode_oer; +per_type_decoder_f S1AP_NB_IoT_DefaultPagingDRX_decode_uper; +per_type_encoder_f S1AP_NB_IoT_DefaultPagingDRX_encode_uper; +per_type_decoder_f S1AP_NB_IoT_DefaultPagingDRX_decode_aper; +per_type_encoder_f S1AP_NB_IoT_DefaultPagingDRX_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NB_IoT_DefaultPagingDRX_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.c b/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.c new file mode 100644 index 0000000000..4a7df889ee --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NB-IoT-Paging-eDRX-Cycle.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_NB_IoT_Paging_eDRX_Cycle_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_NB_IoT_Paging_eDRX_Cycle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 13 } /* (0..13,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_NB_IoT_Paging_eDRX_Cycle_value2enum_1[] = { + { 0, 3, "hf2" }, + { 1, 3, "hf4" }, + { 2, 3, "hf6" }, + { 3, 3, "hf8" }, + { 4, 4, "hf10" }, + { 5, 4, "hf12" }, + { 6, 4, "hf14" }, + { 7, 4, "hf16" }, + { 8, 4, "hf32" }, + { 9, 4, "hf64" }, + { 10, 5, "hf128" }, + { 11, 5, "hf256" }, + { 12, 5, "hf512" }, + { 13, 6, "hf1024" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_NB_IoT_Paging_eDRX_Cycle_enum2value_1[] = { + 4, /* hf10(4) */ + 13, /* hf1024(13) */ + 5, /* hf12(5) */ + 10, /* hf128(10) */ + 6, /* hf14(6) */ + 7, /* hf16(7) */ + 0, /* hf2(0) */ + 11, /* hf256(11) */ + 8, /* hf32(8) */ + 1, /* hf4(1) */ + 12, /* hf512(12) */ + 2, /* hf6(2) */ + 9, /* hf64(9) */ + 3 /* hf8(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_NB_IoT_Paging_eDRX_Cycle_specs_1 = { + asn_MAP_S1AP_NB_IoT_Paging_eDRX_Cycle_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_NB_IoT_Paging_eDRX_Cycle_enum2value_1, /* N => "tag"; sorted by N */ + 14, /* Number of elements in the maps */ + 15, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle = { + "NB-IoT-Paging-eDRX-Cycle", + "NB-IoT-Paging-eDRX-Cycle", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle_tags_1, + sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_NB_IoT_Paging_eDRX_Cycle_constr_1, &asn_PER_type_S1AP_NB_IoT_Paging_eDRX_Cycle_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_NB_IoT_Paging_eDRX_Cycle_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.h b/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.h new file mode 100644 index 0000000000..54e348d8bd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRX-Cycle.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NB_IoT_Paging_eDRX_Cycle_H_ +#define _S1AP_NB_IoT_Paging_eDRX_Cycle_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_NB_IoT_Paging_eDRX_Cycle { + S1AP_NB_IoT_Paging_eDRX_Cycle_hf2 = 0, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf4 = 1, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf6 = 2, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf8 = 3, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf10 = 4, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf12 = 5, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf14 = 6, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf16 = 7, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf32 = 8, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf64 = 9, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf128 = 10, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf256 = 11, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf512 = 12, + S1AP_NB_IoT_Paging_eDRX_Cycle_hf1024 = 13 + /* + * Enumeration is extensible + */ +} e_S1AP_NB_IoT_Paging_eDRX_Cycle; + +/* S1AP_NB-IoT-Paging-eDRX-Cycle */ +typedef long S1AP_NB_IoT_Paging_eDRX_Cycle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_NB_IoT_Paging_eDRX_Cycle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle; +extern const asn_INTEGER_specifics_t asn_SPC_NB_IoT_Paging_eDRX_Cycle_specs_1; +asn_struct_free_f NB_IoT_Paging_eDRX_Cycle_free; +asn_struct_print_f NB_IoT_Paging_eDRX_Cycle_print; +asn_constr_check_f NB_IoT_Paging_eDRX_Cycle_constraint; +ber_type_decoder_f NB_IoT_Paging_eDRX_Cycle_decode_ber; +der_type_encoder_f NB_IoT_Paging_eDRX_Cycle_encode_der; +xer_type_decoder_f NB_IoT_Paging_eDRX_Cycle_decode_xer; +xer_type_encoder_f NB_IoT_Paging_eDRX_Cycle_encode_xer; +oer_type_decoder_f NB_IoT_Paging_eDRX_Cycle_decode_oer; +oer_type_encoder_f NB_IoT_Paging_eDRX_Cycle_encode_oer; +per_type_decoder_f NB_IoT_Paging_eDRX_Cycle_decode_uper; +per_type_encoder_f NB_IoT_Paging_eDRX_Cycle_encode_uper; +per_type_decoder_f NB_IoT_Paging_eDRX_Cycle_decode_aper; +per_type_encoder_f NB_IoT_Paging_eDRX_Cycle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NB_IoT_Paging_eDRX_Cycle_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRXInformation.c b/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRXInformation.c new file mode 100644 index 0000000000..d7cc834fa9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRXInformation.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NB-IoT-Paging-eDRXInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_NB_IoT_Paging_eDRXInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation, nB_IoT_paging_eDRX_Cycle), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_NB_IoT_Paging_eDRX_Cycle, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nB-IoT-paging-eDRX-Cycle" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation, nB_IoT_pagingTimeWindow), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_NB_IoT_PagingTimeWindow, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nB-IoT-pagingTimeWindow" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P75, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_NB_IoT_Paging_eDRXInformation_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_NB_IoT_Paging_eDRXInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nB-IoT-paging-eDRX-Cycle */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nB-IoT-pagingTimeWindow */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_NB_IoT_Paging_eDRXInformation_specs_1 = { + sizeof(struct S1AP_NB_IoT_Paging_eDRXInformation), + offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation, _asn_ctx), + asn_MAP_S1AP_NB_IoT_Paging_eDRXInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_NB_IoT_Paging_eDRXInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation = { + "NB-IoT-Paging-eDRXInformation", + "NB-IoT-Paging-eDRXInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_tags_1, + sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_NB_IoT_Paging_eDRXInformation_1, + 3, /* Elements count */ + &asn_SPC_S1AP_NB_IoT_Paging_eDRXInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRXInformation.h b/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRXInformation.h new file mode 100644 index 0000000000..49267eee1f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-Paging-eDRXInformation.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NB_IoT_Paging_eDRXInformation_H_ +#define _S1AP_NB_IoT_Paging_eDRXInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_NB-IoT-Paging-eDRX-Cycle.h" +#include "S1AP_NB-IoT-PagingTimeWindow.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_NB-IoT-Paging-eDRXInformation */ +typedef struct S1AP_NB_IoT_Paging_eDRXInformation { + S1AP_NB_IoT_Paging_eDRX_Cycle_t nB_IoT_paging_eDRX_Cycle; + S1AP_NB_IoT_PagingTimeWindow_t *nB_IoT_pagingTimeWindow; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_NB_IoT_Paging_eDRXInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NB_IoT_Paging_eDRXInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-PagingTimeWindow.c b/lib/s1ap3/asn1c/S1AP_NB-IoT-PagingTimeWindow.c new file mode 100644 index 0000000000..b6410b4054 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-PagingTimeWindow.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NB-IoT-PagingTimeWindow.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_NB_IoT_PagingTimeWindow_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_NB_IoT_PagingTimeWindow_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_NB_IoT_PagingTimeWindow_value2enum_1[] = { + { 0, 2, "s1" }, + { 1, 2, "s2" }, + { 2, 2, "s3" }, + { 3, 2, "s4" }, + { 4, 2, "s5" }, + { 5, 2, "s6" }, + { 6, 2, "s7" }, + { 7, 2, "s8" }, + { 8, 2, "s9" }, + { 9, 3, "s10" }, + { 10, 3, "s11" }, + { 11, 3, "s12" }, + { 12, 3, "s13" }, + { 13, 3, "s14" }, + { 14, 3, "s15" }, + { 15, 3, "s16" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_NB_IoT_PagingTimeWindow_enum2value_1[] = { + 0, /* s1(0) */ + 9, /* s10(9) */ + 10, /* s11(10) */ + 11, /* s12(11) */ + 12, /* s13(12) */ + 13, /* s14(13) */ + 14, /* s15(14) */ + 15, /* s16(15) */ + 1, /* s2(1) */ + 2, /* s3(2) */ + 3, /* s4(3) */ + 4, /* s5(4) */ + 5, /* s6(5) */ + 6, /* s7(6) */ + 7, /* s8(7) */ + 8 /* s9(8) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_NB_IoT_PagingTimeWindow_specs_1 = { + asn_MAP_S1AP_NB_IoT_PagingTimeWindow_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_NB_IoT_PagingTimeWindow_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 17, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NB_IoT_PagingTimeWindow_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_PagingTimeWindow = { + "NB-IoT-PagingTimeWindow", + "NB-IoT-PagingTimeWindow", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_NB_IoT_PagingTimeWindow_tags_1, + sizeof(asn_DEF_S1AP_NB_IoT_PagingTimeWindow_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_PagingTimeWindow_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NB_IoT_PagingTimeWindow_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NB_IoT_PagingTimeWindow_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_PagingTimeWindow_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_NB_IoT_PagingTimeWindow_constr_1, &asn_PER_type_S1AP_NB_IoT_PagingTimeWindow_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_NB_IoT_PagingTimeWindow_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-PagingTimeWindow.h b/lib/s1ap3/asn1c/S1AP_NB-IoT-PagingTimeWindow.h new file mode 100644 index 0000000000..6d2c66c370 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-PagingTimeWindow.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NB_IoT_PagingTimeWindow_H_ +#define _S1AP_NB_IoT_PagingTimeWindow_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_NB_IoT_PagingTimeWindow { + S1AP_NB_IoT_PagingTimeWindow_s1 = 0, + S1AP_NB_IoT_PagingTimeWindow_s2 = 1, + S1AP_NB_IoT_PagingTimeWindow_s3 = 2, + S1AP_NB_IoT_PagingTimeWindow_s4 = 3, + S1AP_NB_IoT_PagingTimeWindow_s5 = 4, + S1AP_NB_IoT_PagingTimeWindow_s6 = 5, + S1AP_NB_IoT_PagingTimeWindow_s7 = 6, + S1AP_NB_IoT_PagingTimeWindow_s8 = 7, + S1AP_NB_IoT_PagingTimeWindow_s9 = 8, + S1AP_NB_IoT_PagingTimeWindow_s10 = 9, + S1AP_NB_IoT_PagingTimeWindow_s11 = 10, + S1AP_NB_IoT_PagingTimeWindow_s12 = 11, + S1AP_NB_IoT_PagingTimeWindow_s13 = 12, + S1AP_NB_IoT_PagingTimeWindow_s14 = 13, + S1AP_NB_IoT_PagingTimeWindow_s15 = 14, + S1AP_NB_IoT_PagingTimeWindow_s16 = 15 + /* + * Enumeration is extensible + */ +} e_S1AP_NB_IoT_PagingTimeWindow; + +/* S1AP_NB-IoT-PagingTimeWindow */ +typedef long S1AP_NB_IoT_PagingTimeWindow_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_NB_IoT_PagingTimeWindow_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_PagingTimeWindow; +extern const asn_INTEGER_specifics_t asn_SPC_NB_IoT_PagingTimeWindow_specs_1; +asn_struct_free_f NB_IoT_PagingTimeWindow_free; +asn_struct_print_f NB_IoT_PagingTimeWindow_print; +asn_constr_check_f NB_IoT_PagingTimeWindow_constraint; +ber_type_decoder_f NB_IoT_PagingTimeWindow_decode_ber; +der_type_encoder_f NB_IoT_PagingTimeWindow_encode_der; +xer_type_decoder_f NB_IoT_PagingTimeWindow_decode_xer; +xer_type_encoder_f NB_IoT_PagingTimeWindow_encode_xer; +oer_type_decoder_f NB_IoT_PagingTimeWindow_decode_oer; +oer_type_encoder_f NB_IoT_PagingTimeWindow_encode_oer; +per_type_decoder_f NB_IoT_PagingTimeWindow_decode_uper; +per_type_encoder_f NB_IoT_PagingTimeWindow_encode_uper; +per_type_decoder_f NB_IoT_PagingTimeWindow_decode_aper; +per_type_encoder_f NB_IoT_PagingTimeWindow_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NB_IoT_PagingTimeWindow_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-UEIdentityIndexValue.c b/lib/s1ap3/asn1c/S1AP_NB-IoT-UEIdentityIndexValue.c new file mode 100644 index 0000000000..eb086b274e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-UEIdentityIndexValue.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NB-IoT-UEIdentityIndexValue.h" + +int +S1AP_NB_IoT_UEIdentityIndexValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 12)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_NB_IoT_UEIdentityIndexValue_constr_1 CC_NOTUSED = { + { 0, 0 }, + 12 /* (SIZE(12..12)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_NB_IoT_UEIdentityIndexValue_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 12, 12 } /* (SIZE(12..12)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue = { + "NB-IoT-UEIdentityIndexValue", + "NB-IoT-UEIdentityIndexValue", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue_tags_1, + sizeof(asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue_tags_1) + /sizeof(asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_NB_IoT_UEIdentityIndexValue_constr_1, &asn_PER_type_S1AP_NB_IoT_UEIdentityIndexValue_constr_1, S1AP_NB_IoT_UEIdentityIndexValue_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NB-IoT-UEIdentityIndexValue.h b/lib/s1ap3/asn1c/S1AP_NB-IoT-UEIdentityIndexValue.h new file mode 100644 index 0000000000..5b0f8b2573 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NB-IoT-UEIdentityIndexValue.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NB_IoT_UEIdentityIndexValue_H_ +#define _S1AP_NB_IoT_UEIdentityIndexValue_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_NB-IoT-UEIdentityIndexValue */ +typedef BIT_STRING_t S1AP_NB_IoT_UEIdentityIndexValue_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue; +asn_struct_free_f S1AP_NB_IoT_UEIdentityIndexValue_free; +asn_struct_print_f S1AP_NB_IoT_UEIdentityIndexValue_print; +asn_constr_check_f S1AP_NB_IoT_UEIdentityIndexValue_constraint; +ber_type_decoder_f S1AP_NB_IoT_UEIdentityIndexValue_decode_ber; +der_type_encoder_f S1AP_NB_IoT_UEIdentityIndexValue_encode_der; +xer_type_decoder_f S1AP_NB_IoT_UEIdentityIndexValue_decode_xer; +xer_type_encoder_f S1AP_NB_IoT_UEIdentityIndexValue_encode_xer; +oer_type_decoder_f S1AP_NB_IoT_UEIdentityIndexValue_decode_oer; +oer_type_encoder_f S1AP_NB_IoT_UEIdentityIndexValue_encode_oer; +per_type_decoder_f S1AP_NB_IoT_UEIdentityIndexValue_decode_uper; +per_type_encoder_f S1AP_NB_IoT_UEIdentityIndexValue_encode_uper; +per_type_decoder_f S1AP_NB_IoT_UEIdentityIndexValue_decode_aper; +per_type_encoder_f S1AP_NB_IoT_UEIdentityIndexValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NB_IoT_UEIdentityIndexValue_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.c b/lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.c new file mode 100644 index 0000000000..645d7dc92a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NextPagingAreaScope.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_NextPagingAreaScope_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_NextPagingAreaScope_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_NextPagingAreaScope_value2enum_1[] = { + { 0, 4, "same" }, + { 1, 7, "changed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_NextPagingAreaScope_enum2value_1[] = { + 1, /* changed(1) */ + 0 /* same(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_NextPagingAreaScope_specs_1 = { + asn_MAP_S1AP_NextPagingAreaScope_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_NextPagingAreaScope_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NextPagingAreaScope_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NextPagingAreaScope = { + "NextPagingAreaScope", + "NextPagingAreaScope", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_NextPagingAreaScope_tags_1, + sizeof(asn_DEF_S1AP_NextPagingAreaScope_tags_1) + /sizeof(asn_DEF_S1AP_NextPagingAreaScope_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NextPagingAreaScope_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NextPagingAreaScope_tags_1) + /sizeof(asn_DEF_S1AP_NextPagingAreaScope_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_NextPagingAreaScope_constr_1, &asn_PER_type_S1AP_NextPagingAreaScope_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_NextPagingAreaScope_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.h b/lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.h new file mode 100644 index 0000000000..4ad03db49d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NextPagingAreaScope.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NextPagingAreaScope_H_ +#define _S1AP_NextPagingAreaScope_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_NextPagingAreaScope { + S1AP_NextPagingAreaScope_same = 0, + S1AP_NextPagingAreaScope_changed = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_NextPagingAreaScope; + +/* S1AP_NextPagingAreaScope */ +typedef long S1AP_NextPagingAreaScope_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_NextPagingAreaScope_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NextPagingAreaScope; +extern const asn_INTEGER_specifics_t asn_SPC_NextPagingAreaScope_specs_1; +asn_struct_free_f NextPagingAreaScope_free; +asn_struct_print_f NextPagingAreaScope_print; +asn_constr_check_f NextPagingAreaScope_constraint; +ber_type_decoder_f NextPagingAreaScope_decode_ber; +der_type_encoder_f NextPagingAreaScope_encode_der; +xer_type_decoder_f NextPagingAreaScope_decode_xer; +xer_type_encoder_f NextPagingAreaScope_encode_xer; +oer_type_decoder_f NextPagingAreaScope_decode_oer; +oer_type_encoder_f NextPagingAreaScope_encode_oer; +per_type_decoder_f NextPagingAreaScope_decode_uper; +per_type_encoder_f NextPagingAreaScope_encode_uper; +per_type_decoder_f NextPagingAreaScope_decode_aper; +per_type_encoder_f NextPagingAreaScope_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NextPagingAreaScope_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.c b/lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.c new file mode 100644 index 0000000000..142142c068 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NumberOfBroadcasts.h" + +int +S1AP_NumberOfBroadcasts_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_NumberOfBroadcasts_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_NumberOfBroadcasts_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NumberOfBroadcasts_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NumberOfBroadcasts = { + "NumberOfBroadcasts", + "NumberOfBroadcasts", + &asn_OP_NativeInteger, + asn_DEF_S1AP_NumberOfBroadcasts_tags_1, + sizeof(asn_DEF_S1AP_NumberOfBroadcasts_tags_1) + /sizeof(asn_DEF_S1AP_NumberOfBroadcasts_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NumberOfBroadcasts_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NumberOfBroadcasts_tags_1) + /sizeof(asn_DEF_S1AP_NumberOfBroadcasts_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_NumberOfBroadcasts_constr_1, &asn_PER_type_S1AP_NumberOfBroadcasts_constr_1, S1AP_NumberOfBroadcasts_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.h b/lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.h new file mode 100644 index 0000000000..f26ac96eba --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NumberOfBroadcasts.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NumberOfBroadcasts_H_ +#define _S1AP_NumberOfBroadcasts_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_NumberOfBroadcasts */ +typedef long S1AP_NumberOfBroadcasts_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_NumberOfBroadcasts_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NumberOfBroadcasts; +asn_struct_free_f S1AP_NumberOfBroadcasts_free; +asn_struct_print_f S1AP_NumberOfBroadcasts_print; +asn_constr_check_f S1AP_NumberOfBroadcasts_constraint; +ber_type_decoder_f S1AP_NumberOfBroadcasts_decode_ber; +der_type_encoder_f S1AP_NumberOfBroadcasts_encode_der; +xer_type_decoder_f S1AP_NumberOfBroadcasts_decode_xer; +xer_type_encoder_f S1AP_NumberOfBroadcasts_encode_xer; +oer_type_decoder_f S1AP_NumberOfBroadcasts_decode_oer; +oer_type_encoder_f S1AP_NumberOfBroadcasts_encode_oer; +per_type_decoder_f S1AP_NumberOfBroadcasts_decode_uper; +per_type_encoder_f S1AP_NumberOfBroadcasts_encode_uper; +per_type_decoder_f S1AP_NumberOfBroadcasts_decode_aper; +per_type_encoder_f S1AP_NumberOfBroadcasts_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NumberOfBroadcasts_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_NumberofBroadcastRequest.c b/lib/s1ap3/asn1c/S1AP_NumberofBroadcastRequest.c new file mode 100644 index 0000000000..73ed2629fd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NumberofBroadcastRequest.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_NumberofBroadcastRequest.h" + +int +S1AP_NumberofBroadcastRequest_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_NumberofBroadcastRequest_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_NumberofBroadcastRequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NumberofBroadcastRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NumberofBroadcastRequest = { + "NumberofBroadcastRequest", + "NumberofBroadcastRequest", + &asn_OP_NativeInteger, + asn_DEF_S1AP_NumberofBroadcastRequest_tags_1, + sizeof(asn_DEF_S1AP_NumberofBroadcastRequest_tags_1) + /sizeof(asn_DEF_S1AP_NumberofBroadcastRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_NumberofBroadcastRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_NumberofBroadcastRequest_tags_1) + /sizeof(asn_DEF_S1AP_NumberofBroadcastRequest_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_NumberofBroadcastRequest_constr_1, &asn_PER_type_S1AP_NumberofBroadcastRequest_constr_1, S1AP_NumberofBroadcastRequest_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_NumberofBroadcastRequest.h b/lib/s1ap3/asn1c/S1AP_NumberofBroadcastRequest.h new file mode 100644 index 0000000000..069fb4a02a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_NumberofBroadcastRequest.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_NumberofBroadcastRequest_H_ +#define _S1AP_NumberofBroadcastRequest_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_NumberofBroadcastRequest */ +typedef long S1AP_NumberofBroadcastRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NumberofBroadcastRequest; +asn_struct_free_f S1AP_NumberofBroadcastRequest_free; +asn_struct_print_f S1AP_NumberofBroadcastRequest_print; +asn_constr_check_f S1AP_NumberofBroadcastRequest_constraint; +ber_type_decoder_f S1AP_NumberofBroadcastRequest_decode_ber; +der_type_encoder_f S1AP_NumberofBroadcastRequest_encode_der; +xer_type_decoder_f S1AP_NumberofBroadcastRequest_decode_xer; +xer_type_encoder_f S1AP_NumberofBroadcastRequest_encode_xer; +oer_type_decoder_f S1AP_NumberofBroadcastRequest_decode_oer; +oer_type_encoder_f S1AP_NumberofBroadcastRequest_encode_oer; +per_type_decoder_f S1AP_NumberofBroadcastRequest_decode_uper; +per_type_encoder_f S1AP_NumberofBroadcastRequest_encode_uper; +per_type_decoder_f S1AP_NumberofBroadcastRequest_decode_aper; +per_type_encoder_f S1AP_NumberofBroadcastRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_NumberofBroadcastRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_OldBSS-ToNewBSS-Information.c b/lib/s1ap3/asn1c/S1AP_OldBSS-ToNewBSS-Information.c new file mode 100644 index 0000000000..78e2b53e94 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OldBSS-ToNewBSS-Information.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_OldBSS-ToNewBSS-Information.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_OldBSS_ToNewBSS_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_OldBSS_ToNewBSS_Information = { + "OldBSS-ToNewBSS-Information", + "OldBSS-ToNewBSS-Information", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_OldBSS_ToNewBSS_Information_tags_1, + sizeof(asn_DEF_S1AP_OldBSS_ToNewBSS_Information_tags_1) + /sizeof(asn_DEF_S1AP_OldBSS_ToNewBSS_Information_tags_1[0]), /* 1 */ + asn_DEF_S1AP_OldBSS_ToNewBSS_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_OldBSS_ToNewBSS_Information_tags_1) + /sizeof(asn_DEF_S1AP_OldBSS_ToNewBSS_Information_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_OldBSS-ToNewBSS-Information.h b/lib/s1ap3/asn1c/S1AP_OldBSS-ToNewBSS-Information.h new file mode 100644 index 0000000000..2b9ad53e1b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OldBSS-ToNewBSS-Information.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_OldBSS_ToNewBSS_Information_H_ +#define _S1AP_OldBSS_ToNewBSS_Information_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_OldBSS-ToNewBSS-Information */ +typedef OCTET_STRING_t S1AP_OldBSS_ToNewBSS_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_OldBSS_ToNewBSS_Information; +asn_struct_free_f S1AP_OldBSS_ToNewBSS_Information_free; +asn_struct_print_f S1AP_OldBSS_ToNewBSS_Information_print; +asn_constr_check_f S1AP_OldBSS_ToNewBSS_Information_constraint; +ber_type_decoder_f S1AP_OldBSS_ToNewBSS_Information_decode_ber; +der_type_encoder_f S1AP_OldBSS_ToNewBSS_Information_encode_der; +xer_type_decoder_f S1AP_OldBSS_ToNewBSS_Information_decode_xer; +xer_type_encoder_f S1AP_OldBSS_ToNewBSS_Information_encode_xer; +oer_type_decoder_f S1AP_OldBSS_ToNewBSS_Information_decode_oer; +oer_type_encoder_f S1AP_OldBSS_ToNewBSS_Information_encode_oer; +per_type_decoder_f S1AP_OldBSS_ToNewBSS_Information_decode_uper; +per_type_encoder_f S1AP_OldBSS_ToNewBSS_Information_encode_uper; +per_type_decoder_f S1AP_OldBSS_ToNewBSS_Information_decode_aper; +per_type_encoder_f S1AP_OldBSS_ToNewBSS_Information_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_OldBSS_ToNewBSS_Information_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_OverloadAction.c b/lib/s1ap3/asn1c/S1AP_OverloadAction.c new file mode 100644 index 0000000000..ee7b08e56f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OverloadAction.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_OverloadAction.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_OverloadAction_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_OverloadAction_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_OverloadAction_value2enum_1[] = { + { 0, 26, "reject-non-emergency-mo-dt" }, + { 1, 24, "reject-rrc-cr-signalling" }, + { 2, 61, "permit-emergency-sessions-and-mobile-terminated-services-only" }, + { 3, 65, "permit-high-priority-sessions-and-mobile-terminated-services-only" }, + { 4, 28, "reject-delay-tolerant-access" }, + { 5, 89, "permit-high-priority-sessions-and-exception-reporting-and-mobile-terminated-services-only" }, + { 6, 56, "not-accept-mo-data-or-delay-tolerant-access-from-CP-CIoT" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_OverloadAction_enum2value_1[] = { + 6, /* not-accept-mo-data-or-delay-tolerant-access-from-CP-CIoT(6) */ + 2, /* permit-emergency-sessions-and-mobile-terminated-services-only(2) */ + 5, /* permit-high-priority-sessions-and-exception-reporting-and-mobile-terminated-services-only(5) */ + 3, /* permit-high-priority-sessions-and-mobile-terminated-services-only(3) */ + 4, /* reject-delay-tolerant-access(4) */ + 0, /* reject-non-emergency-mo-dt(0) */ + 1 /* reject-rrc-cr-signalling(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_OverloadAction_specs_1 = { + asn_MAP_S1AP_OverloadAction_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_OverloadAction_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_OverloadAction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadAction = { + "OverloadAction", + "OverloadAction", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_OverloadAction_tags_1, + sizeof(asn_DEF_S1AP_OverloadAction_tags_1) + /sizeof(asn_DEF_S1AP_OverloadAction_tags_1[0]), /* 1 */ + asn_DEF_S1AP_OverloadAction_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_OverloadAction_tags_1) + /sizeof(asn_DEF_S1AP_OverloadAction_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_OverloadAction_constr_1, &asn_PER_type_S1AP_OverloadAction_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_OverloadAction_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_OverloadAction.h b/lib/s1ap3/asn1c/S1AP_OverloadAction.h new file mode 100644 index 0000000000..0e3d9062b1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OverloadAction.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_OverloadAction_H_ +#define _S1AP_OverloadAction_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_OverloadAction { + S1AP_OverloadAction_reject_non_emergency_mo_dt = 0, + S1AP_OverloadAction_reject_rrc_cr_signalling = 1, + S1AP_OverloadAction_permit_emergency_sessions_and_mobile_terminated_services_only = 2, + /* + * Enumeration is extensible + */ + S1AP_OverloadAction_permit_high_priority_sessions_and_mobile_terminated_services_only = 3, + S1AP_OverloadAction_reject_delay_tolerant_access = 4, + S1AP_OverloadAction_permit_high_priority_sessions_and_exception_reporting_and_mobile_terminated_services_only = 5, + S1AP_OverloadAction_not_accept_mo_data_or_delay_tolerant_access_from_CP_CIoT = 6 +} e_S1AP_OverloadAction; + +/* S1AP_OverloadAction */ +typedef long S1AP_OverloadAction_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_OverloadAction_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadAction; +extern const asn_INTEGER_specifics_t asn_SPC_OverloadAction_specs_1; +asn_struct_free_f OverloadAction_free; +asn_struct_print_f OverloadAction_print; +asn_constr_check_f OverloadAction_constraint; +ber_type_decoder_f OverloadAction_decode_ber; +der_type_encoder_f OverloadAction_encode_der; +xer_type_decoder_f OverloadAction_decode_xer; +xer_type_encoder_f OverloadAction_encode_xer; +oer_type_decoder_f OverloadAction_decode_oer; +oer_type_encoder_f OverloadAction_encode_oer; +per_type_decoder_f OverloadAction_decode_uper; +per_type_encoder_f OverloadAction_encode_uper; +per_type_decoder_f OverloadAction_decode_aper; +per_type_encoder_f OverloadAction_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_OverloadAction_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_OverloadResponse.c b/lib/s1ap3/asn1c/S1AP_OverloadResponse.c new file mode 100644 index 0000000000..650203b4e8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OverloadResponse.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_OverloadResponse.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_OverloadResponse_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_OverloadResponse_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_OverloadResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadResponse, choice.overloadAction), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_OverloadAction, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "overloadAction" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_OverloadResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* overloadAction */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_OverloadResponse_specs_1 = { + sizeof(struct S1AP_OverloadResponse), + offsetof(struct S1AP_OverloadResponse, _asn_ctx), + offsetof(struct S1AP_OverloadResponse, present), + sizeof(((struct S1AP_OverloadResponse *)0)->present), + asn_MAP_S1AP_OverloadResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadResponse = { + "OverloadResponse", + "OverloadResponse", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_OverloadResponse_constr_1, &asn_PER_type_S1AP_OverloadResponse_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_OverloadResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_OverloadResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_OverloadResponse.h b/lib/s1ap3/asn1c/S1AP_OverloadResponse.h new file mode 100644 index 0000000000..1216e8f623 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OverloadResponse.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_OverloadResponse_H_ +#define _S1AP_OverloadResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_OverloadAction.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_OverloadResponse_PR { + OverloadResponse_PR_NOTHING, /* No components present */ + OverloadResponse_PR_overloadAction + /* Extensions may appear below */ + +} S1AP_OverloadResponse_PR; + +/* S1AP_OverloadResponse */ +typedef struct S1AP_OverloadResponse { + S1AP_OverloadResponse_PR present; + union S1AP_OverloadResponse_u { + S1AP_OverloadAction_t overloadAction; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_OverloadResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_OverloadResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_OverloadStart.c b/lib/s1ap3/asn1c/S1AP_OverloadStart.c new file mode 100644 index 0000000000..63881b58b8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OverloadStart.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_OverloadStart.h" + +asn_TYPE_member_t asn_MBR_S1AP_OverloadStart_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStart, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P61, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_OverloadStart_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_OverloadStart_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_OverloadStart_specs_1 = { + sizeof(struct S1AP_OverloadStart), + offsetof(struct S1AP_OverloadStart, _asn_ctx), + asn_MAP_S1AP_OverloadStart_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadStart = { + "OverloadStart", + "OverloadStart", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_OverloadStart_tags_1, + sizeof(asn_DEF_S1AP_OverloadStart_tags_1) + /sizeof(asn_DEF_S1AP_OverloadStart_tags_1[0]), /* 1 */ + asn_DEF_S1AP_OverloadStart_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_OverloadStart_tags_1) + /sizeof(asn_DEF_S1AP_OverloadStart_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_OverloadStart_1, + 1, /* Elements count */ + &asn_SPC_S1AP_OverloadStart_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_OverloadStart.h b/lib/s1ap3/asn1c/S1AP_OverloadStart.h new file mode 100644 index 0000000000..a08c90b6c3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OverloadStart.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_OverloadStart_H_ +#define _S1AP_OverloadStart_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_OverloadStart */ +typedef struct S1AP_OverloadStart { + S1AP_ProtocolIE_Container_6551P61_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_OverloadStart_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadStart; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_OverloadStart_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_OverloadStart_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_OverloadStart_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_OverloadStop.c b/lib/s1ap3/asn1c/S1AP_OverloadStop.c new file mode 100644 index 0000000000..a556c1a4ea --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OverloadStop.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_OverloadStop.h" + +asn_TYPE_member_t asn_MBR_S1AP_OverloadStop_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStop, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P62, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_OverloadStop_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_OverloadStop_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_OverloadStop_specs_1 = { + sizeof(struct S1AP_OverloadStop), + offsetof(struct S1AP_OverloadStop, _asn_ctx), + asn_MAP_S1AP_OverloadStop_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadStop = { + "OverloadStop", + "OverloadStop", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_OverloadStop_tags_1, + sizeof(asn_DEF_S1AP_OverloadStop_tags_1) + /sizeof(asn_DEF_S1AP_OverloadStop_tags_1[0]), /* 1 */ + asn_DEF_S1AP_OverloadStop_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_OverloadStop_tags_1) + /sizeof(asn_DEF_S1AP_OverloadStop_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_OverloadStop_1, + 1, /* Elements count */ + &asn_SPC_S1AP_OverloadStop_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_OverloadStop.h b/lib/s1ap3/asn1c/S1AP_OverloadStop.h new file mode 100644 index 0000000000..b53c0210d9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_OverloadStop.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_OverloadStop_H_ +#define _S1AP_OverloadStop_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_OverloadStop */ +typedef struct S1AP_OverloadStop { + S1AP_ProtocolIE_Container_6551P62_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_OverloadStop_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadStop; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_OverloadStop_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_OverloadStop_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_OverloadStop_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PDCP-SN.c b/lib/s1ap3/asn1c/S1AP_PDCP-SN.c new file mode 100644 index 0000000000..a47394d8d4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PDCP-SN.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PDCP-SN.h" + +int +S1AP_PDCP_SN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PDCP_SN_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_PDCP_SN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PDCP_SN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PDCP_SN = { + "PDCP-SN", + "PDCP-SN", + &asn_OP_NativeInteger, + asn_DEF_S1AP_PDCP_SN_tags_1, + sizeof(asn_DEF_S1AP_PDCP_SN_tags_1) + /sizeof(asn_DEF_S1AP_PDCP_SN_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PDCP_SN_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PDCP_SN_tags_1) + /sizeof(asn_DEF_S1AP_PDCP_SN_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PDCP_SN_constr_1, &asn_PER_type_S1AP_PDCP_SN_constr_1, S1AP_PDCP_SN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PDCP-SN.h b/lib/s1ap3/asn1c/S1AP_PDCP-SN.h new file mode 100644 index 0000000000..4adbf01ad6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PDCP-SN.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PDCP_SN_H_ +#define _S1AP_PDCP_SN_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PDCP-SN */ +typedef long S1AP_PDCP_SN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_PDCP_SN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PDCP_SN; +asn_struct_free_f S1AP_PDCP_SN_free; +asn_struct_print_f S1AP_PDCP_SN_print; +asn_constr_check_f S1AP_PDCP_SN_constraint; +ber_type_decoder_f S1AP_PDCP_SN_decode_ber; +der_type_encoder_f S1AP_PDCP_SN_encode_der; +xer_type_decoder_f S1AP_PDCP_SN_decode_xer; +xer_type_encoder_f S1AP_PDCP_SN_encode_xer; +oer_type_decoder_f S1AP_PDCP_SN_decode_oer; +oer_type_encoder_f S1AP_PDCP_SN_encode_oer; +per_type_decoder_f S1AP_PDCP_SN_decode_uper; +per_type_encoder_f S1AP_PDCP_SN_encode_uper; +per_type_decoder_f S1AP_PDCP_SN_decode_aper; +per_type_encoder_f S1AP_PDCP_SN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PDCP_SN_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.c b/lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.c new file mode 100644 index 0000000000..944422ee4b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PDCP-SNExtended.h" + +int +S1AP_PDCP_SNExtended_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PDCP_SNExtended_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..32767) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_PDCP_SNExtended_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PDCP_SNExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PDCP_SNExtended = { + "PDCP-SNExtended", + "PDCP-SNExtended", + &asn_OP_NativeInteger, + asn_DEF_S1AP_PDCP_SNExtended_tags_1, + sizeof(asn_DEF_S1AP_PDCP_SNExtended_tags_1) + /sizeof(asn_DEF_S1AP_PDCP_SNExtended_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PDCP_SNExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PDCP_SNExtended_tags_1) + /sizeof(asn_DEF_S1AP_PDCP_SNExtended_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PDCP_SNExtended_constr_1, &asn_PER_type_S1AP_PDCP_SNExtended_constr_1, S1AP_PDCP_SNExtended_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.h b/lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.h new file mode 100644 index 0000000000..99319c383a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PDCP-SNExtended.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PDCP_SNExtended_H_ +#define _S1AP_PDCP_SNExtended_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PDCP-SNExtended */ +typedef long S1AP_PDCP_SNExtended_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_PDCP_SNExtended_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PDCP_SNExtended; +asn_struct_free_f S1AP_PDCP_SNExtended_free; +asn_struct_print_f S1AP_PDCP_SNExtended_print; +asn_constr_check_f S1AP_PDCP_SNExtended_constraint; +ber_type_decoder_f S1AP_PDCP_SNExtended_decode_ber; +der_type_encoder_f S1AP_PDCP_SNExtended_encode_der; +xer_type_decoder_f S1AP_PDCP_SNExtended_decode_xer; +xer_type_encoder_f S1AP_PDCP_SNExtended_encode_xer; +oer_type_decoder_f S1AP_PDCP_SNExtended_decode_oer; +oer_type_encoder_f S1AP_PDCP_SNExtended_encode_oer; +per_type_decoder_f S1AP_PDCP_SNExtended_decode_uper; +per_type_encoder_f S1AP_PDCP_SNExtended_encode_uper; +per_type_decoder_f S1AP_PDCP_SNExtended_decode_aper; +per_type_encoder_f S1AP_PDCP_SNExtended_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PDCP_SNExtended_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.c b/lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.c new file mode 100644 index 0000000000..98db94af37 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PDCP-SNlength18.h" + +int +S1AP_PDCP_SNlength18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 262143)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PDCP_SNlength18_constr_1 CC_NOTUSED = { + { 4, 1 } /* (0..262143) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_PDCP_SNlength18_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 18, -1, 0, 262143 } /* (0..262143) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PDCP_SNlength18 = { + "PDCP-SNlength18", + "PDCP-SNlength18", + &asn_OP_NativeInteger, + asn_DEF_S1AP_PDCP_SNlength18_tags_1, + sizeof(asn_DEF_S1AP_PDCP_SNlength18_tags_1) + /sizeof(asn_DEF_S1AP_PDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PDCP_SNlength18_tags_1) + /sizeof(asn_DEF_S1AP_PDCP_SNlength18_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PDCP_SNlength18_constr_1, &asn_PER_type_S1AP_PDCP_SNlength18_constr_1, S1AP_PDCP_SNlength18_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.h b/lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.h new file mode 100644 index 0000000000..78314ed7b9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PDCP-SNlength18.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PDCP_SNlength18_H_ +#define _S1AP_PDCP_SNlength18_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PDCP-SNlength18 */ +typedef long S1AP_PDCP_SNlength18_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_PDCP_SNlength18_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PDCP_SNlength18; +asn_struct_free_f S1AP_PDCP_SNlength18_free; +asn_struct_print_f S1AP_PDCP_SNlength18_print; +asn_constr_check_f S1AP_PDCP_SNlength18_constraint; +ber_type_decoder_f S1AP_PDCP_SNlength18_decode_ber; +der_type_encoder_f S1AP_PDCP_SNlength18_encode_der; +xer_type_decoder_f S1AP_PDCP_SNlength18_decode_xer; +xer_type_encoder_f S1AP_PDCP_SNlength18_encode_xer; +oer_type_decoder_f S1AP_PDCP_SNlength18_decode_oer; +oer_type_encoder_f S1AP_PDCP_SNlength18_encode_oer; +per_type_decoder_f S1AP_PDCP_SNlength18_decode_uper; +per_type_encoder_f S1AP_PDCP_SNlength18_encode_uper; +per_type_decoder_f S1AP_PDCP_SNlength18_decode_aper; +per_type_encoder_f S1AP_PDCP_SNlength18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PDCP_SNlength18_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PLMNidentity.c b/lib/s1ap3/asn1c/S1AP_PLMNidentity.c new file mode 100644 index 0000000000..e47913fdbf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PLMNidentity.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PLMNidentity.h" + +int +S1AP_PLMNidentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const S1AP_TBCD_STRING_t *st = (const S1AP_TBCD_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using S1AP_TBCD_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PLMNidentity_constr_1 CC_NOTUSED = { + { 0, 0 }, + 3 /* (SIZE(3..3)) */}; +asn_per_constraints_t asn_PER_type_S1AP_PLMNidentity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PLMNidentity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PLMNidentity = { + "PLMNidentity", + "PLMNidentity", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_PLMNidentity_tags_1, + sizeof(asn_DEF_S1AP_PLMNidentity_tags_1) + /sizeof(asn_DEF_S1AP_PLMNidentity_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PLMNidentity_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PLMNidentity_tags_1) + /sizeof(asn_DEF_S1AP_PLMNidentity_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PLMNidentity_constr_1, &asn_PER_type_S1AP_PLMNidentity_constr_1, S1AP_PLMNidentity_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PLMNidentity.h b/lib/s1ap3/asn1c/S1AP_PLMNidentity.h new file mode 100644 index 0000000000..c6f672b44e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PLMNidentity.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PLMNidentity_H_ +#define _S1AP_PLMNidentity_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TBCD-STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PLMNidentity */ +typedef S1AP_TBCD_STRING_t S1AP_PLMNidentity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_PLMNidentity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PLMNidentity; +asn_struct_free_f S1AP_PLMNidentity_free; +asn_struct_print_f S1AP_PLMNidentity_print; +asn_constr_check_f S1AP_PLMNidentity_constraint; +ber_type_decoder_f S1AP_PLMNidentity_decode_ber; +der_type_encoder_f S1AP_PLMNidentity_encode_der; +xer_type_decoder_f S1AP_PLMNidentity_decode_xer; +xer_type_encoder_f S1AP_PLMNidentity_encode_xer; +oer_type_decoder_f S1AP_PLMNidentity_decode_oer; +oer_type_encoder_f S1AP_PLMNidentity_encode_oer; +per_type_decoder_f S1AP_PLMNidentity_decode_uper; +per_type_encoder_f S1AP_PLMNidentity_encode_uper; +per_type_decoder_f S1AP_PLMNidentity_decode_aper; +per_type_encoder_f S1AP_PLMNidentity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PLMNidentity_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.c b/lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.c new file mode 100644 index 0000000000..8ecbc0185b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PS-ServiceNotAvailable.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PS_ServiceNotAvailable_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_PS_ServiceNotAvailable_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_PS_ServiceNotAvailable_value2enum_1[] = { + { 0, 24, "ps-service-not-available" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_PS_ServiceNotAvailable_enum2value_1[] = { + 0 /* ps-service-not-available(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_PS_ServiceNotAvailable_specs_1 = { + asn_MAP_S1AP_PS_ServiceNotAvailable_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_PS_ServiceNotAvailable_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PS_ServiceNotAvailable_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PS_ServiceNotAvailable = { + "PS-ServiceNotAvailable", + "PS-ServiceNotAvailable", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_PS_ServiceNotAvailable_tags_1, + sizeof(asn_DEF_S1AP_PS_ServiceNotAvailable_tags_1) + /sizeof(asn_DEF_S1AP_PS_ServiceNotAvailable_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PS_ServiceNotAvailable_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PS_ServiceNotAvailable_tags_1) + /sizeof(asn_DEF_S1AP_PS_ServiceNotAvailable_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PS_ServiceNotAvailable_constr_1, &asn_PER_type_S1AP_PS_ServiceNotAvailable_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_PS_ServiceNotAvailable_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.h b/lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.h new file mode 100644 index 0000000000..5439e91edd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PS-ServiceNotAvailable.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PS_ServiceNotAvailable_H_ +#define _S1AP_PS_ServiceNotAvailable_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_PS_ServiceNotAvailable { + S1AP_PS_ServiceNotAvailable_ps_service_not_available = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_PS_ServiceNotAvailable; + +/* S1AP_PS-ServiceNotAvailable */ +typedef long S1AP_PS_ServiceNotAvailable_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PS_ServiceNotAvailable; +asn_struct_free_f S1AP_PS_ServiceNotAvailable_free; +asn_struct_print_f S1AP_PS_ServiceNotAvailable_print; +asn_constr_check_f S1AP_PS_ServiceNotAvailable_constraint; +ber_type_decoder_f S1AP_PS_ServiceNotAvailable_decode_ber; +der_type_encoder_f S1AP_PS_ServiceNotAvailable_encode_der; +xer_type_decoder_f S1AP_PS_ServiceNotAvailable_decode_xer; +xer_type_encoder_f S1AP_PS_ServiceNotAvailable_encode_xer; +oer_type_decoder_f S1AP_PS_ServiceNotAvailable_decode_oer; +oer_type_encoder_f S1AP_PS_ServiceNotAvailable_encode_oer; +per_type_decoder_f S1AP_PS_ServiceNotAvailable_decode_uper; +per_type_encoder_f S1AP_PS_ServiceNotAvailable_encode_uper; +per_type_decoder_f S1AP_PS_ServiceNotAvailable_decode_aper; +per_type_encoder_f S1AP_PS_ServiceNotAvailable_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PS_ServiceNotAvailable_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PWSFailureIndication.c b/lib/s1ap3/asn1c/S1AP_PWSFailureIndication.c new file mode 100644 index 0000000000..799f8833fa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PWSFailureIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PWSFailureIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_PWSFailureIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSFailureIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P72, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PWSFailureIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PWSFailureIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PWSFailureIndication_specs_1 = { + sizeof(struct S1AP_PWSFailureIndication), + offsetof(struct S1AP_PWSFailureIndication, _asn_ctx), + asn_MAP_S1AP_PWSFailureIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PWSFailureIndication = { + "PWSFailureIndication", + "PWSFailureIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PWSFailureIndication_tags_1, + sizeof(asn_DEF_S1AP_PWSFailureIndication_tags_1) + /sizeof(asn_DEF_S1AP_PWSFailureIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PWSFailureIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PWSFailureIndication_tags_1) + /sizeof(asn_DEF_S1AP_PWSFailureIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PWSFailureIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_PWSFailureIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PWSFailureIndication.h b/lib/s1ap3/asn1c/S1AP_PWSFailureIndication.h new file mode 100644 index 0000000000..171645a978 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PWSFailureIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PWSFailureIndication_H_ +#define _S1AP_PWSFailureIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PWSFailureIndication */ +typedef struct S1AP_PWSFailureIndication { + S1AP_ProtocolIE_Container_6551P72_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PWSFailureIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PWSFailureIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PWSFailureIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PWSFailureIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PWSFailureIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PWSRestartIndication.c b/lib/s1ap3/asn1c/S1AP_PWSRestartIndication.c new file mode 100644 index 0000000000..8a309cc767 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PWSRestartIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PWSRestartIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_PWSRestartIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSRestartIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P71, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PWSRestartIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PWSRestartIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PWSRestartIndication_specs_1 = { + sizeof(struct S1AP_PWSRestartIndication), + offsetof(struct S1AP_PWSRestartIndication, _asn_ctx), + asn_MAP_S1AP_PWSRestartIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PWSRestartIndication = { + "PWSRestartIndication", + "PWSRestartIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PWSRestartIndication_tags_1, + sizeof(asn_DEF_S1AP_PWSRestartIndication_tags_1) + /sizeof(asn_DEF_S1AP_PWSRestartIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PWSRestartIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PWSRestartIndication_tags_1) + /sizeof(asn_DEF_S1AP_PWSRestartIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PWSRestartIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_PWSRestartIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PWSRestartIndication.h b/lib/s1ap3/asn1c/S1AP_PWSRestartIndication.h new file mode 100644 index 0000000000..568df65ad6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PWSRestartIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PWSRestartIndication_H_ +#define _S1AP_PWSRestartIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PWSRestartIndication */ +typedef struct S1AP_PWSRestartIndication { + S1AP_ProtocolIE_Container_6551P71_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PWSRestartIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PWSRestartIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PWSRestartIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PWSRestartIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PWSRestartIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.c b/lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.c new file mode 100644 index 0000000000..5c5f4fe403 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PWSfailedECGIList.h" + +#include "S1AP_EUTRAN-CGI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_PWSfailedECGIList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_PWSfailedECGIList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_PWSfailedECGIList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PWSfailedECGIList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_PWSfailedECGIList_specs_1 = { + sizeof(struct S1AP_PWSfailedECGIList), + offsetof(struct S1AP_PWSfailedECGIList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PWSfailedECGIList = { + "PWSfailedECGIList", + "PWSfailedECGIList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_PWSfailedECGIList_tags_1, + sizeof(asn_DEF_S1AP_PWSfailedECGIList_tags_1) + /sizeof(asn_DEF_S1AP_PWSfailedECGIList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PWSfailedECGIList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PWSfailedECGIList_tags_1) + /sizeof(asn_DEF_S1AP_PWSfailedECGIList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PWSfailedECGIList_constr_1, &asn_PER_type_S1AP_PWSfailedECGIList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_PWSfailedECGIList_1, + 1, /* Single element */ + &asn_SPC_S1AP_PWSfailedECGIList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.h b/lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.h new file mode 100644 index 0000000000..fc801ad397 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PWSfailedECGIList.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PWSfailedECGIList_H_ +#define _S1AP_PWSfailedECGIList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_EUTRAN_CGI; + +/* S1AP_PWSfailedECGIList */ +typedef struct S1AP_PWSfailedECGIList { + A_SEQUENCE_OF(struct S1AP_EUTRAN_CGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PWSfailedECGIList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PWSfailedECGIList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PWSfailedECGIList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.c b/lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.c new file mode 100644 index 0000000000..b46dc1764d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.c @@ -0,0 +1,82 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Paging-eDRX-Cycle.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Paging_eDRX_Cycle_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Paging_eDRX_Cycle_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 13 } /* (0..13,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Paging_eDRX_Cycle_value2enum_1[] = { + { 0, 6, "hfhalf" }, + { 1, 3, "hf1" }, + { 2, 3, "hf2" }, + { 3, 3, "hf4" }, + { 4, 3, "hf6" }, + { 5, 3, "hf8" }, + { 6, 4, "hf10" }, + { 7, 4, "hf12" }, + { 8, 4, "hf14" }, + { 9, 4, "hf16" }, + { 10, 4, "hf32" }, + { 11, 4, "hf64" }, + { 12, 5, "hf128" }, + { 13, 5, "hf256" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_Paging_eDRX_Cycle_enum2value_1[] = { + 1, /* hf1(1) */ + 6, /* hf10(6) */ + 7, /* hf12(7) */ + 12, /* hf128(12) */ + 8, /* hf14(8) */ + 9, /* hf16(9) */ + 2, /* hf2(2) */ + 13, /* hf256(13) */ + 10, /* hf32(10) */ + 3, /* hf4(3) */ + 4, /* hf6(4) */ + 11, /* hf64(11) */ + 5, /* hf8(5) */ + 0 /* hfhalf(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_Paging_eDRX_Cycle_specs_1 = { + asn_MAP_S1AP_Paging_eDRX_Cycle_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Paging_eDRX_Cycle_enum2value_1, /* N => "tag"; sorted by N */ + 14, /* Number of elements in the maps */ + 15, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Paging_eDRX_Cycle_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Paging_eDRX_Cycle = { + "Paging-eDRX-Cycle", + "Paging-eDRX-Cycle", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Paging_eDRX_Cycle_tags_1, + sizeof(asn_DEF_S1AP_Paging_eDRX_Cycle_tags_1) + /sizeof(asn_DEF_S1AP_Paging_eDRX_Cycle_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Paging_eDRX_Cycle_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Paging_eDRX_Cycle_tags_1) + /sizeof(asn_DEF_S1AP_Paging_eDRX_Cycle_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Paging_eDRX_Cycle_constr_1, &asn_PER_type_S1AP_Paging_eDRX_Cycle_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Paging_eDRX_Cycle_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.h b/lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.h new file mode 100644 index 0000000000..12b605ce1f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Paging-eDRX-Cycle.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Paging_eDRX_Cycle_H_ +#define _S1AP_Paging_eDRX_Cycle_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Paging_eDRX_Cycle { + S1AP_Paging_eDRX_Cycle_hfhalf = 0, + S1AP_Paging_eDRX_Cycle_hf1 = 1, + S1AP_Paging_eDRX_Cycle_hf2 = 2, + S1AP_Paging_eDRX_Cycle_hf4 = 3, + S1AP_Paging_eDRX_Cycle_hf6 = 4, + S1AP_Paging_eDRX_Cycle_hf8 = 5, + S1AP_Paging_eDRX_Cycle_hf10 = 6, + S1AP_Paging_eDRX_Cycle_hf12 = 7, + S1AP_Paging_eDRX_Cycle_hf14 = 8, + S1AP_Paging_eDRX_Cycle_hf16 = 9, + S1AP_Paging_eDRX_Cycle_hf32 = 10, + S1AP_Paging_eDRX_Cycle_hf64 = 11, + S1AP_Paging_eDRX_Cycle_hf128 = 12, + S1AP_Paging_eDRX_Cycle_hf256 = 13 + /* + * Enumeration is extensible + */ +} e_S1AP_Paging_eDRX_Cycle; + +/* S1AP_Paging-eDRX-Cycle */ +typedef long S1AP_Paging_eDRX_Cycle_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Paging_eDRX_Cycle_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Paging_eDRX_Cycle; +extern const asn_INTEGER_specifics_t asn_SPC_Paging_eDRX_Cycle_specs_1; +asn_struct_free_f Paging_eDRX_Cycle_free; +asn_struct_print_f Paging_eDRX_Cycle_print; +asn_constr_check_f Paging_eDRX_Cycle_constraint; +ber_type_decoder_f Paging_eDRX_Cycle_decode_ber; +der_type_encoder_f Paging_eDRX_Cycle_encode_der; +xer_type_decoder_f Paging_eDRX_Cycle_decode_xer; +xer_type_encoder_f Paging_eDRX_Cycle_encode_xer; +oer_type_decoder_f Paging_eDRX_Cycle_decode_oer; +oer_type_encoder_f Paging_eDRX_Cycle_encode_oer; +per_type_decoder_f Paging_eDRX_Cycle_decode_uper; +per_type_encoder_f Paging_eDRX_Cycle_encode_uper; +per_type_decoder_f Paging_eDRX_Cycle_decode_aper; +per_type_encoder_f Paging_eDRX_Cycle_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Paging_eDRX_Cycle_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.c b/lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.c new file mode 100644 index 0000000000..c98ca354bb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Paging-eDRXInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_Paging_eDRXInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Paging_eDRXInformation, paging_eDRX_Cycle), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Paging_eDRX_Cycle, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "paging-eDRX-Cycle" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_Paging_eDRXInformation, pagingTimeWindow), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PagingTimeWindow, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pagingTimeWindow" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_Paging_eDRXInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P77, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_Paging_eDRXInformation_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_Paging_eDRXInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Paging_eDRXInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* paging-eDRX-Cycle */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pagingTimeWindow */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_Paging_eDRXInformation_specs_1 = { + sizeof(struct S1AP_Paging_eDRXInformation), + offsetof(struct S1AP_Paging_eDRXInformation, _asn_ctx), + asn_MAP_S1AP_Paging_eDRXInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_Paging_eDRXInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Paging_eDRXInformation = { + "Paging-eDRXInformation", + "Paging-eDRXInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Paging_eDRXInformation_tags_1, + sizeof(asn_DEF_S1AP_Paging_eDRXInformation_tags_1) + /sizeof(asn_DEF_S1AP_Paging_eDRXInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Paging_eDRXInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Paging_eDRXInformation_tags_1) + /sizeof(asn_DEF_S1AP_Paging_eDRXInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Paging_eDRXInformation_1, + 3, /* Elements count */ + &asn_SPC_S1AP_Paging_eDRXInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.h b/lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.h new file mode 100644 index 0000000000..6df33bd212 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Paging-eDRXInformation.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Paging_eDRXInformation_H_ +#define _S1AP_Paging_eDRXInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_Paging-eDRX-Cycle.h" +#include "S1AP_PagingTimeWindow.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_Paging-eDRXInformation */ +typedef struct S1AP_Paging_eDRXInformation { + S1AP_Paging_eDRX_Cycle_t paging_eDRX_Cycle; + S1AP_PagingTimeWindow_t *pagingTimeWindow; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Paging_eDRXInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Paging_eDRXInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Paging_eDRXInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Paging.c b/lib/s1ap3/asn1c/S1AP_Paging.c new file mode 100644 index 0000000000..e4d3098bb4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Paging.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Paging.h" + +asn_TYPE_member_t asn_MBR_S1AP_Paging_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Paging, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P22, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Paging_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Paging_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_Paging_specs_1 = { + sizeof(struct S1AP_Paging), + offsetof(struct S1AP_Paging, _asn_ctx), + asn_MAP_S1AP_Paging_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Paging = { + "Paging", + "Paging", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Paging_tags_1, + sizeof(asn_DEF_S1AP_Paging_tags_1) + /sizeof(asn_DEF_S1AP_Paging_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Paging_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Paging_tags_1) + /sizeof(asn_DEF_S1AP_Paging_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Paging_1, + 1, /* Elements count */ + &asn_SPC_S1AP_Paging_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Paging.h b/lib/s1ap3/asn1c/S1AP_Paging.h new file mode 100644 index 0000000000..38d515871c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Paging.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Paging_H_ +#define _S1AP_Paging_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Paging */ +typedef struct S1AP_Paging { + S1AP_ProtocolIE_Container_6551P22_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Paging_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Paging; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_Paging_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_Paging_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Paging_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PagingAttemptCount.c b/lib/s1ap3/asn1c/S1AP_PagingAttemptCount.c new file mode 100644 index 0000000000..bf17b6e7a9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingAttemptCount.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PagingAttemptCount.h" + +int +S1AP_PagingAttemptCount_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PagingAttemptCount_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_PagingAttemptCount_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 1, 16 } /* (1..16,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PagingAttemptCount_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PagingAttemptCount = { + "PagingAttemptCount", + "PagingAttemptCount", + &asn_OP_NativeInteger, + asn_DEF_S1AP_PagingAttemptCount_tags_1, + sizeof(asn_DEF_S1AP_PagingAttemptCount_tags_1) + /sizeof(asn_DEF_S1AP_PagingAttemptCount_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PagingAttemptCount_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PagingAttemptCount_tags_1) + /sizeof(asn_DEF_S1AP_PagingAttemptCount_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PagingAttemptCount_constr_1, &asn_PER_type_S1AP_PagingAttemptCount_constr_1, S1AP_PagingAttemptCount_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PagingAttemptCount.h b/lib/s1ap3/asn1c/S1AP_PagingAttemptCount.h new file mode 100644 index 0000000000..89a9e830eb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingAttemptCount.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PagingAttemptCount_H_ +#define _S1AP_PagingAttemptCount_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PagingAttemptCount */ +typedef long S1AP_PagingAttemptCount_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_PagingAttemptCount_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PagingAttemptCount; +asn_struct_free_f S1AP_PagingAttemptCount_free; +asn_struct_print_f S1AP_PagingAttemptCount_print; +asn_constr_check_f S1AP_PagingAttemptCount_constraint; +ber_type_decoder_f S1AP_PagingAttemptCount_decode_ber; +der_type_encoder_f S1AP_PagingAttemptCount_encode_der; +xer_type_decoder_f S1AP_PagingAttemptCount_decode_xer; +xer_type_encoder_f S1AP_PagingAttemptCount_encode_xer; +oer_type_decoder_f S1AP_PagingAttemptCount_decode_oer; +oer_type_encoder_f S1AP_PagingAttemptCount_encode_oer; +per_type_decoder_f S1AP_PagingAttemptCount_decode_uper; +per_type_encoder_f S1AP_PagingAttemptCount_encode_uper; +per_type_decoder_f S1AP_PagingAttemptCount_decode_aper; +per_type_encoder_f S1AP_PagingAttemptCount_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PagingAttemptCount_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PagingAttemptInformation.c b/lib/s1ap3/asn1c/S1AP_PagingAttemptInformation.c new file mode 100644 index 0000000000..5307ef0f43 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingAttemptInformation.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PagingAttemptInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_PagingAttemptInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingAttemptInformation, pagingAttemptCount), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PagingAttemptCount, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pagingAttemptCount" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingAttemptInformation, intendedNumberOfPagingAttempts), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_IntendedNumberOfPagingAttempts, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "intendedNumberOfPagingAttempts" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_PagingAttemptInformation, nextPagingAreaScope), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_NextPagingAreaScope, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nextPagingAreaScope" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_PagingAttemptInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P76, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_PagingAttemptInformation_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_PagingAttemptInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PagingAttemptInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pagingAttemptCount */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* intendedNumberOfPagingAttempts */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nextPagingAreaScope */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PagingAttemptInformation_specs_1 = { + sizeof(struct S1AP_PagingAttemptInformation), + offsetof(struct S1AP_PagingAttemptInformation, _asn_ctx), + asn_MAP_S1AP_PagingAttemptInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_PagingAttemptInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PagingAttemptInformation = { + "PagingAttemptInformation", + "PagingAttemptInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PagingAttemptInformation_tags_1, + sizeof(asn_DEF_S1AP_PagingAttemptInformation_tags_1) + /sizeof(asn_DEF_S1AP_PagingAttemptInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PagingAttemptInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PagingAttemptInformation_tags_1) + /sizeof(asn_DEF_S1AP_PagingAttemptInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PagingAttemptInformation_1, + 4, /* Elements count */ + &asn_SPC_S1AP_PagingAttemptInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PagingAttemptInformation.h b/lib/s1ap3/asn1c/S1AP_PagingAttemptInformation.h new file mode 100644 index 0000000000..50e15456bd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingAttemptInformation.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PagingAttemptInformation_H_ +#define _S1AP_PagingAttemptInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PagingAttemptCount.h" +#include "S1AP_IntendedNumberOfPagingAttempts.h" +#include "S1AP_NextPagingAreaScope.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_PagingAttemptInformation */ +typedef struct S1AP_PagingAttemptInformation { + S1AP_PagingAttemptCount_t pagingAttemptCount; + S1AP_IntendedNumberOfPagingAttempts_t intendedNumberOfPagingAttempts; + S1AP_NextPagingAreaScope_t *nextPagingAreaScope; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PagingAttemptInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PagingAttemptInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PagingAttemptInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PagingAttemptInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PagingAttemptInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PagingDRX.c b/lib/s1ap3/asn1c/S1AP_PagingDRX.c new file mode 100644 index 0000000000..0821d52610 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingDRX.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PagingDRX.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PagingDRX_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_PagingDRX_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_PagingDRX_value2enum_1[] = { + { 0, 3, "v32" }, + { 1, 3, "v64" }, + { 2, 4, "v128" }, + { 3, 4, "v256" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_PagingDRX_enum2value_1[] = { + 2, /* v128(2) */ + 3, /* v256(3) */ + 0, /* v32(0) */ + 1 /* v64(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_PagingDRX_specs_1 = { + asn_MAP_S1AP_PagingDRX_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_PagingDRX_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PagingDRX_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PagingDRX = { + "PagingDRX", + "PagingDRX", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_PagingDRX_tags_1, + sizeof(asn_DEF_S1AP_PagingDRX_tags_1) + /sizeof(asn_DEF_S1AP_PagingDRX_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PagingDRX_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PagingDRX_tags_1) + /sizeof(asn_DEF_S1AP_PagingDRX_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PagingDRX_constr_1, &asn_PER_type_S1AP_PagingDRX_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_PagingDRX_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PagingDRX.h b/lib/s1ap3/asn1c/S1AP_PagingDRX.h new file mode 100644 index 0000000000..b615547746 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingDRX.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PagingDRX_H_ +#define _S1AP_PagingDRX_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_PagingDRX { + S1AP_PagingDRX_v32 = 0, + S1AP_PagingDRX_v64 = 1, + S1AP_PagingDRX_v128 = 2, + S1AP_PagingDRX_v256 = 3 + /* + * Enumeration is extensible + */ +} e_S1AP_PagingDRX; + +/* S1AP_PagingDRX */ +typedef long S1AP_PagingDRX_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PagingDRX; +asn_struct_free_f S1AP_PagingDRX_free; +asn_struct_print_f S1AP_PagingDRX_print; +asn_constr_check_f S1AP_PagingDRX_constraint; +ber_type_decoder_f S1AP_PagingDRX_decode_ber; +der_type_encoder_f S1AP_PagingDRX_encode_der; +xer_type_decoder_f S1AP_PagingDRX_decode_xer; +xer_type_encoder_f S1AP_PagingDRX_encode_xer; +oer_type_decoder_f S1AP_PagingDRX_decode_oer; +oer_type_encoder_f S1AP_PagingDRX_encode_oer; +per_type_decoder_f S1AP_PagingDRX_decode_uper; +per_type_encoder_f S1AP_PagingDRX_encode_uper; +per_type_decoder_f S1AP_PagingDRX_decode_aper; +per_type_encoder_f S1AP_PagingDRX_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PagingDRX_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PagingPriority.c b/lib/s1ap3/asn1c/S1AP_PagingPriority.c new file mode 100644 index 0000000000..c340a29b06 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingPriority.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PagingPriority.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PagingPriority_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_PagingPriority_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_PagingPriority_value2enum_1[] = { + { 0, 10, "priolevel1" }, + { 1, 10, "priolevel2" }, + { 2, 10, "priolevel3" }, + { 3, 10, "priolevel4" }, + { 4, 10, "priolevel5" }, + { 5, 10, "priolevel6" }, + { 6, 10, "priolevel7" }, + { 7, 10, "priolevel8" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_PagingPriority_enum2value_1[] = { + 0, /* priolevel1(0) */ + 1, /* priolevel2(1) */ + 2, /* priolevel3(2) */ + 3, /* priolevel4(3) */ + 4, /* priolevel5(4) */ + 5, /* priolevel6(5) */ + 6, /* priolevel7(6) */ + 7 /* priolevel8(7) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_PagingPriority_specs_1 = { + asn_MAP_S1AP_PagingPriority_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_PagingPriority_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 9, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PagingPriority_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PagingPriority = { + "PagingPriority", + "PagingPriority", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_PagingPriority_tags_1, + sizeof(asn_DEF_S1AP_PagingPriority_tags_1) + /sizeof(asn_DEF_S1AP_PagingPriority_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PagingPriority_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PagingPriority_tags_1) + /sizeof(asn_DEF_S1AP_PagingPriority_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PagingPriority_constr_1, &asn_PER_type_S1AP_PagingPriority_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_PagingPriority_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PagingPriority.h b/lib/s1ap3/asn1c/S1AP_PagingPriority.h new file mode 100644 index 0000000000..2e8132bd7c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingPriority.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PagingPriority_H_ +#define _S1AP_PagingPriority_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_PagingPriority { + S1AP_PagingPriority_priolevel1 = 0, + S1AP_PagingPriority_priolevel2 = 1, + S1AP_PagingPriority_priolevel3 = 2, + S1AP_PagingPriority_priolevel4 = 3, + S1AP_PagingPriority_priolevel5 = 4, + S1AP_PagingPriority_priolevel6 = 5, + S1AP_PagingPriority_priolevel7 = 6, + S1AP_PagingPriority_priolevel8 = 7 + /* + * Enumeration is extensible + */ +} e_S1AP_PagingPriority; + +/* S1AP_PagingPriority */ +typedef long S1AP_PagingPriority_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PagingPriority; +asn_struct_free_f S1AP_PagingPriority_free; +asn_struct_print_f S1AP_PagingPriority_print; +asn_constr_check_f S1AP_PagingPriority_constraint; +ber_type_decoder_f S1AP_PagingPriority_decode_ber; +der_type_encoder_f S1AP_PagingPriority_encode_der; +xer_type_decoder_f S1AP_PagingPriority_decode_xer; +xer_type_encoder_f S1AP_PagingPriority_encode_xer; +oer_type_decoder_f S1AP_PagingPriority_decode_oer; +oer_type_encoder_f S1AP_PagingPriority_encode_oer; +per_type_decoder_f S1AP_PagingPriority_decode_uper; +per_type_encoder_f S1AP_PagingPriority_encode_uper; +per_type_decoder_f S1AP_PagingPriority_decode_aper; +per_type_encoder_f S1AP_PagingPriority_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PagingPriority_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PagingTimeWindow.c b/lib/s1ap3/asn1c/S1AP_PagingTimeWindow.c new file mode 100644 index 0000000000..3820cd9371 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingTimeWindow.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PagingTimeWindow.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PagingTimeWindow_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_PagingTimeWindow_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_PagingTimeWindow_value2enum_1[] = { + { 0, 2, "s1" }, + { 1, 2, "s2" }, + { 2, 2, "s3" }, + { 3, 2, "s4" }, + { 4, 2, "s5" }, + { 5, 2, "s6" }, + { 6, 2, "s7" }, + { 7, 2, "s8" }, + { 8, 2, "s9" }, + { 9, 3, "s10" }, + { 10, 3, "s11" }, + { 11, 3, "s12" }, + { 12, 3, "s13" }, + { 13, 3, "s14" }, + { 14, 3, "s15" }, + { 15, 3, "s16" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_PagingTimeWindow_enum2value_1[] = { + 0, /* s1(0) */ + 9, /* s10(9) */ + 10, /* s11(10) */ + 11, /* s12(11) */ + 12, /* s13(12) */ + 13, /* s14(13) */ + 14, /* s15(14) */ + 15, /* s16(15) */ + 1, /* s2(1) */ + 2, /* s3(2) */ + 3, /* s4(3) */ + 4, /* s5(4) */ + 5, /* s6(5) */ + 6, /* s7(6) */ + 7, /* s8(7) */ + 8 /* s9(8) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_PagingTimeWindow_specs_1 = { + asn_MAP_S1AP_PagingTimeWindow_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_PagingTimeWindow_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 17, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PagingTimeWindow_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PagingTimeWindow = { + "PagingTimeWindow", + "PagingTimeWindow", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_PagingTimeWindow_tags_1, + sizeof(asn_DEF_S1AP_PagingTimeWindow_tags_1) + /sizeof(asn_DEF_S1AP_PagingTimeWindow_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PagingTimeWindow_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PagingTimeWindow_tags_1) + /sizeof(asn_DEF_S1AP_PagingTimeWindow_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PagingTimeWindow_constr_1, &asn_PER_type_S1AP_PagingTimeWindow_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_PagingTimeWindow_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PagingTimeWindow.h b/lib/s1ap3/asn1c/S1AP_PagingTimeWindow.h new file mode 100644 index 0000000000..ee8e277062 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PagingTimeWindow.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PagingTimeWindow_H_ +#define _S1AP_PagingTimeWindow_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_PagingTimeWindow { + S1AP_PagingTimeWindow_s1 = 0, + S1AP_PagingTimeWindow_s2 = 1, + S1AP_PagingTimeWindow_s3 = 2, + S1AP_PagingTimeWindow_s4 = 3, + S1AP_PagingTimeWindow_s5 = 4, + S1AP_PagingTimeWindow_s6 = 5, + S1AP_PagingTimeWindow_s7 = 6, + S1AP_PagingTimeWindow_s8 = 7, + S1AP_PagingTimeWindow_s9 = 8, + S1AP_PagingTimeWindow_s10 = 9, + S1AP_PagingTimeWindow_s11 = 10, + S1AP_PagingTimeWindow_s12 = 11, + S1AP_PagingTimeWindow_s13 = 12, + S1AP_PagingTimeWindow_s14 = 13, + S1AP_PagingTimeWindow_s15 = 14, + S1AP_PagingTimeWindow_s16 = 15 + /* + * Enumeration is extensible + */ +} e_S1AP_PagingTimeWindow; + +/* S1AP_PagingTimeWindow */ +typedef long S1AP_PagingTimeWindow_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_PagingTimeWindow_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PagingTimeWindow; +extern const asn_INTEGER_specifics_t asn_SPC_PagingTimeWindow_specs_1; +asn_struct_free_f PagingTimeWindow_free; +asn_struct_print_f PagingTimeWindow_print; +asn_constr_check_f PagingTimeWindow_constraint; +ber_type_decoder_f PagingTimeWindow_decode_ber; +der_type_encoder_f PagingTimeWindow_encode_der; +xer_type_decoder_f PagingTimeWindow_decode_xer; +xer_type_encoder_f PagingTimeWindow_encode_xer; +oer_type_decoder_f PagingTimeWindow_decode_oer; +oer_type_encoder_f PagingTimeWindow_encode_oer; +per_type_decoder_f PagingTimeWindow_decode_uper; +per_type_encoder_f PagingTimeWindow_encode_uper; +per_type_decoder_f PagingTimeWindow_decode_aper; +per_type_encoder_f PagingTimeWindow_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PagingTimeWindow_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PathSwitchRequest.c b/lib/s1ap3/asn1c/S1AP_PathSwitchRequest.c new file mode 100644 index 0000000000..07af5fcc82 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PathSwitchRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PathSwitchRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PathSwitchRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PathSwitchRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequest_specs_1 = { + sizeof(struct S1AP_PathSwitchRequest), + offsetof(struct S1AP_PathSwitchRequest, _asn_ctx), + asn_MAP_S1AP_PathSwitchRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequest = { + "PathSwitchRequest", + "PathSwitchRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PathSwitchRequest_tags_1, + sizeof(asn_DEF_S1AP_PathSwitchRequest_tags_1) + /sizeof(asn_DEF_S1AP_PathSwitchRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PathSwitchRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PathSwitchRequest_tags_1) + /sizeof(asn_DEF_S1AP_PathSwitchRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PathSwitchRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_PathSwitchRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PathSwitchRequest.h b/lib/s1ap3/asn1c/S1AP_PathSwitchRequest.h new file mode 100644 index 0000000000..9349c5e6a7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PathSwitchRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PathSwitchRequest_H_ +#define _S1AP_PathSwitchRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PathSwitchRequest */ +typedef struct S1AP_PathSwitchRequest { + S1AP_ProtocolIE_Container_6551P7_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PathSwitchRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PathSwitchRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PathSwitchRequestAcknowledge.c b/lib/s1ap3/asn1c/S1AP_PathSwitchRequestAcknowledge.c new file mode 100644 index 0000000000..025f41ec7c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PathSwitchRequestAcknowledge.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PathSwitchRequestAcknowledge.h" + +asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PathSwitchRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PathSwitchRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestAcknowledge_specs_1 = { + sizeof(struct S1AP_PathSwitchRequestAcknowledge), + offsetof(struct S1AP_PathSwitchRequestAcknowledge, _asn_ctx), + asn_MAP_S1AP_PathSwitchRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestAcknowledge = { + "PathSwitchRequestAcknowledge", + "PathSwitchRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PathSwitchRequestAcknowledge_tags_1, + sizeof(asn_DEF_S1AP_PathSwitchRequestAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_PathSwitchRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PathSwitchRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PathSwitchRequestAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_PathSwitchRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PathSwitchRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1AP_PathSwitchRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PathSwitchRequestAcknowledge.h b/lib/s1ap3/asn1c/S1AP_PathSwitchRequestAcknowledge.h new file mode 100644 index 0000000000..0d094a62d1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PathSwitchRequestAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PathSwitchRequestAcknowledge_H_ +#define _S1AP_PathSwitchRequestAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PathSwitchRequestAcknowledge */ +typedef struct S1AP_PathSwitchRequestAcknowledge { + S1AP_ProtocolIE_Container_6551P8_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PathSwitchRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PathSwitchRequestAcknowledge_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PathSwitchRequestFailure.c b/lib/s1ap3/asn1c/S1AP_PathSwitchRequestFailure.c new file mode 100644 index 0000000000..e6c98827db --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PathSwitchRequestFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PathSwitchRequestFailure.h" + +asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PathSwitchRequestFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PathSwitchRequestFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestFailure_specs_1 = { + sizeof(struct S1AP_PathSwitchRequestFailure), + offsetof(struct S1AP_PathSwitchRequestFailure, _asn_ctx), + asn_MAP_S1AP_PathSwitchRequestFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestFailure = { + "PathSwitchRequestFailure", + "PathSwitchRequestFailure", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PathSwitchRequestFailure_tags_1, + sizeof(asn_DEF_S1AP_PathSwitchRequestFailure_tags_1) + /sizeof(asn_DEF_S1AP_PathSwitchRequestFailure_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PathSwitchRequestFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PathSwitchRequestFailure_tags_1) + /sizeof(asn_DEF_S1AP_PathSwitchRequestFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PathSwitchRequestFailure_1, + 1, /* Elements count */ + &asn_SPC_S1AP_PathSwitchRequestFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PathSwitchRequestFailure.h b/lib/s1ap3/asn1c/S1AP_PathSwitchRequestFailure.h new file mode 100644 index 0000000000..bdb1bddafc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PathSwitchRequestFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PathSwitchRequestFailure_H_ +#define _S1AP_PathSwitchRequestFailure_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PathSwitchRequestFailure */ +typedef struct S1AP_PathSwitchRequestFailure { + S1AP_ProtocolIE_Container_6551P9_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PathSwitchRequestFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PathSwitchRequestFailure_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PedestrianUE.c b/lib/s1ap3/asn1c/S1AP_PedestrianUE.c new file mode 100644 index 0000000000..15c90de90a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PedestrianUE.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PedestrianUE.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PedestrianUE_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_PedestrianUE_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_PedestrianUE_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_PedestrianUE_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_PedestrianUE_specs_1 = { + asn_MAP_S1AP_PedestrianUE_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_PedestrianUE_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PedestrianUE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PedestrianUE = { + "PedestrianUE", + "PedestrianUE", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_PedestrianUE_tags_1, + sizeof(asn_DEF_S1AP_PedestrianUE_tags_1) + /sizeof(asn_DEF_S1AP_PedestrianUE_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PedestrianUE_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PedestrianUE_tags_1) + /sizeof(asn_DEF_S1AP_PedestrianUE_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PedestrianUE_constr_1, &asn_PER_type_S1AP_PedestrianUE_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_PedestrianUE_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PedestrianUE.h b/lib/s1ap3/asn1c/S1AP_PedestrianUE.h new file mode 100644 index 0000000000..389d048e1b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PedestrianUE.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PedestrianUE_H_ +#define _S1AP_PedestrianUE_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_PedestrianUE { + S1AP_PedestrianUE_authorized = 0, + S1AP_PedestrianUE_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_PedestrianUE; + +/* S1AP_PedestrianUE */ +typedef long S1AP_PedestrianUE_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_PedestrianUE_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PedestrianUE; +extern const asn_INTEGER_specifics_t asn_SPC_PedestrianUE_specs_1; +asn_struct_free_f PedestrianUE_free; +asn_struct_print_f PedestrianUE_print; +asn_constr_check_f PedestrianUE_constraint; +ber_type_decoder_f PedestrianUE_decode_ber; +der_type_encoder_f PedestrianUE_encode_der; +xer_type_decoder_f PedestrianUE_decode_xer; +xer_type_encoder_f PedestrianUE_encode_xer; +oer_type_decoder_f PedestrianUE_decode_oer; +oer_type_encoder_f PedestrianUE_encode_oer; +per_type_decoder_f PedestrianUE_decode_uper; +per_type_encoder_f PedestrianUE_encode_uper; +per_type_decoder_f PedestrianUE_decode_aper; +per_type_encoder_f PedestrianUE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PedestrianUE_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Port-Number.c b/lib/s1ap3/asn1c/S1AP_Port-Number.c new file mode 100644 index 0000000000..9a1d97b715 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Port-Number.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Port-Number.h" + +int +S1AP_Port_Number_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Port_Number_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +asn_per_constraints_t asn_PER_type_S1AP_Port_Number_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Port_Number_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Port_Number = { + "Port-Number", + "Port-Number", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Port_Number_tags_1, + sizeof(asn_DEF_S1AP_Port_Number_tags_1) + /sizeof(asn_DEF_S1AP_Port_Number_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Port_Number_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Port_Number_tags_1) + /sizeof(asn_DEF_S1AP_Port_Number_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Port_Number_constr_1, &asn_PER_type_S1AP_Port_Number_constr_1, S1AP_Port_Number_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Port-Number.h b/lib/s1ap3/asn1c/S1AP_Port-Number.h new file mode 100644 index 0000000000..d69d11b618 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Port-Number.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Port_Number_H_ +#define _S1AP_Port_Number_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Port-Number */ +typedef OCTET_STRING_t S1AP_Port_Number_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Port_Number_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Port_Number; +asn_struct_free_f S1AP_Port_Number_free; +asn_struct_print_f S1AP_Port_Number_print; +asn_constr_check_f S1AP_Port_Number_constraint; +ber_type_decoder_f S1AP_Port_Number_decode_ber; +der_type_encoder_f S1AP_Port_Number_encode_der; +xer_type_decoder_f S1AP_Port_Number_decode_xer; +xer_type_encoder_f S1AP_Port_Number_encode_xer; +oer_type_decoder_f S1AP_Port_Number_decode_oer; +oer_type_encoder_f S1AP_Port_Number_encode_oer; +per_type_decoder_f S1AP_Port_Number_decode_uper; +per_type_encoder_f S1AP_Port_Number_encode_uper; +per_type_decoder_f S1AP_Port_Number_decode_aper; +per_type_encoder_f S1AP_Port_Number_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Port_Number_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.c b/lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.c new file mode 100644 index 0000000000..0589813ccc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Pre-emptionCapability.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Pre_emptionCapability_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Pre_emptionCapability_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Pre_emptionCapability_value2enum_1[] = { + { 0, 29, "shall-not-trigger-pre-emption" }, + { 1, 23, "may-trigger-pre-emption" } +}; +static const unsigned int asn_MAP_S1AP_Pre_emptionCapability_enum2value_1[] = { + 1, /* may-trigger-pre-emption(1) */ + 0 /* shall-not-trigger-pre-emption(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_Pre_emptionCapability_specs_1 = { + asn_MAP_S1AP_Pre_emptionCapability_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Pre_emptionCapability_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Pre_emptionCapability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Pre_emptionCapability = { + "Pre-emptionCapability", + "Pre-emptionCapability", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Pre_emptionCapability_tags_1, + sizeof(asn_DEF_S1AP_Pre_emptionCapability_tags_1) + /sizeof(asn_DEF_S1AP_Pre_emptionCapability_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Pre_emptionCapability_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Pre_emptionCapability_tags_1) + /sizeof(asn_DEF_S1AP_Pre_emptionCapability_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Pre_emptionCapability_constr_1, &asn_PER_type_S1AP_Pre_emptionCapability_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Pre_emptionCapability_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.h b/lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.h new file mode 100644 index 0000000000..2b67f77332 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Pre-emptionCapability.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Pre_emptionCapability_H_ +#define _S1AP_Pre_emptionCapability_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Pre_emptionCapability { + S1AP_Pre_emptionCapability_shall_not_trigger_pre_emption = 0, + S1AP_Pre_emptionCapability_may_trigger_pre_emption = 1 +} e_S1AP_Pre_emptionCapability; + +/* S1AP_Pre-emptionCapability */ +typedef long S1AP_Pre_emptionCapability_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Pre_emptionCapability_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Pre_emptionCapability; +extern const asn_INTEGER_specifics_t asn_SPC_Pre_emptionCapability_specs_1; +asn_struct_free_f Pre_emptionCapability_free; +asn_struct_print_f Pre_emptionCapability_print; +asn_constr_check_f Pre_emptionCapability_constraint; +ber_type_decoder_f Pre_emptionCapability_decode_ber; +der_type_encoder_f Pre_emptionCapability_encode_der; +xer_type_decoder_f Pre_emptionCapability_decode_xer; +xer_type_encoder_f Pre_emptionCapability_encode_xer; +oer_type_decoder_f Pre_emptionCapability_decode_oer; +oer_type_encoder_f Pre_emptionCapability_encode_oer; +per_type_decoder_f Pre_emptionCapability_decode_uper; +per_type_encoder_f Pre_emptionCapability_encode_uper; +per_type_decoder_f Pre_emptionCapability_decode_aper; +per_type_encoder_f Pre_emptionCapability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Pre_emptionCapability_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Pre-emptionVulnerability.c b/lib/s1ap3/asn1c/S1AP_Pre-emptionVulnerability.c new file mode 100644 index 0000000000..a60844d590 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Pre-emptionVulnerability.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Pre-emptionVulnerability.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Pre_emptionVulnerability_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Pre_emptionVulnerability_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Pre_emptionVulnerability_value2enum_1[] = { + { 0, 16, "not-pre-emptable" }, + { 1, 12, "pre-emptable" } +}; +static const unsigned int asn_MAP_S1AP_Pre_emptionVulnerability_enum2value_1[] = { + 0, /* not-pre-emptable(0) */ + 1 /* pre-emptable(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_Pre_emptionVulnerability_specs_1 = { + asn_MAP_S1AP_Pre_emptionVulnerability_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Pre_emptionVulnerability_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Pre_emptionVulnerability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Pre_emptionVulnerability = { + "Pre-emptionVulnerability", + "Pre-emptionVulnerability", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Pre_emptionVulnerability_tags_1, + sizeof(asn_DEF_S1AP_Pre_emptionVulnerability_tags_1) + /sizeof(asn_DEF_S1AP_Pre_emptionVulnerability_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Pre_emptionVulnerability_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Pre_emptionVulnerability_tags_1) + /sizeof(asn_DEF_S1AP_Pre_emptionVulnerability_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Pre_emptionVulnerability_constr_1, &asn_PER_type_S1AP_Pre_emptionVulnerability_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Pre_emptionVulnerability_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Pre-emptionVulnerability.h b/lib/s1ap3/asn1c/S1AP_Pre-emptionVulnerability.h new file mode 100644 index 0000000000..43e41a3fcf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Pre-emptionVulnerability.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Pre_emptionVulnerability_H_ +#define _S1AP_Pre_emptionVulnerability_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Pre_emptionVulnerability { + S1AP_Pre_emptionVulnerability_not_pre_emptable = 0, + S1AP_Pre_emptionVulnerability_pre_emptable = 1 +} e_S1AP_Pre_emptionVulnerability; + +/* S1AP_Pre-emptionVulnerability */ +typedef long S1AP_Pre_emptionVulnerability_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Pre_emptionVulnerability_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Pre_emptionVulnerability; +extern const asn_INTEGER_specifics_t asn_SPC_Pre_emptionVulnerability_specs_1; +asn_struct_free_f Pre_emptionVulnerability_free; +asn_struct_print_f Pre_emptionVulnerability_print; +asn_constr_check_f Pre_emptionVulnerability_constraint; +ber_type_decoder_f Pre_emptionVulnerability_decode_ber; +der_type_encoder_f Pre_emptionVulnerability_encode_der; +xer_type_decoder_f Pre_emptionVulnerability_decode_xer; +xer_type_encoder_f Pre_emptionVulnerability_encode_xer; +oer_type_decoder_f Pre_emptionVulnerability_decode_oer; +oer_type_encoder_f Pre_emptionVulnerability_encode_oer; +per_type_decoder_f Pre_emptionVulnerability_decode_uper; +per_type_encoder_f Pre_emptionVulnerability_encode_uper; +per_type_decoder_f Pre_emptionVulnerability_decode_aper; +per_type_encoder_f Pre_emptionVulnerability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Pre_emptionVulnerability_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Presence.c b/lib/s1ap3/asn1c/S1AP_Presence.c new file mode 100644 index 0000000000..4a9caee0f6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Presence.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Presence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Presence_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Presence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_Presence_value2enum_1[] = { + { 0, 8, "optional" }, + { 1, 11, "conditional" }, + { 2, 9, "mandatory" } +}; +static const unsigned int asn_MAP_S1AP_Presence_enum2value_1[] = { + 1, /* conditional(1) */ + 2, /* mandatory(2) */ + 0 /* optional(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_Presence_specs_1 = { + asn_MAP_S1AP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_Presence_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Presence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Presence = { + "Presence", + "Presence", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_Presence_tags_1, + sizeof(asn_DEF_S1AP_Presence_tags_1) + /sizeof(asn_DEF_S1AP_Presence_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Presence_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Presence_tags_1) + /sizeof(asn_DEF_S1AP_Presence_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Presence_constr_1, &asn_PER_type_S1AP_Presence_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_Presence_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Presence.h b/lib/s1ap3/asn1c/S1AP_Presence.h new file mode 100644 index 0000000000..5a638e23a6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Presence.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Presence_H_ +#define _S1AP_Presence_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_Presence { + S1AP_Presence_optional = 0, + S1AP_Presence_conditional = 1, + S1AP_Presence_mandatory = 2 +} e_S1AP_Presence; + +/* S1AP_Presence */ +typedef long S1AP_Presence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Presence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Presence; +extern const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1; +asn_struct_free_f Presence_free; +asn_struct_print_f Presence_print; +asn_constr_check_f Presence_constraint; +ber_type_decoder_f Presence_decode_ber; +der_type_encoder_f Presence_encode_der; +xer_type_decoder_f Presence_decode_xer; +xer_type_encoder_f Presence_encode_xer; +oer_type_decoder_f Presence_decode_oer; +oer_type_encoder_f Presence_encode_oer; +per_type_decoder_f Presence_decode_uper; +per_type_encoder_f Presence_encode_uper; +per_type_decoder_f Presence_decode_aper; +per_type_encoder_f Presence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Presence_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PriorityLevel.c b/lib/s1ap3/asn1c/S1AP_PriorityLevel.c new file mode 100644 index 0000000000..078f69010b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PriorityLevel.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PriorityLevel.h" + +int +S1AP_PriorityLevel_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PriorityLevel_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..15) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_PriorityLevel_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PriorityLevel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PriorityLevel = { + "PriorityLevel", + "PriorityLevel", + &asn_OP_NativeInteger, + asn_DEF_S1AP_PriorityLevel_tags_1, + sizeof(asn_DEF_S1AP_PriorityLevel_tags_1) + /sizeof(asn_DEF_S1AP_PriorityLevel_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PriorityLevel_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PriorityLevel_tags_1) + /sizeof(asn_DEF_S1AP_PriorityLevel_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PriorityLevel_constr_1, &asn_PER_type_S1AP_PriorityLevel_constr_1, S1AP_PriorityLevel_constraint }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PriorityLevel.h b/lib/s1ap3/asn1c/S1AP_PriorityLevel.h new file mode 100644 index 0000000000..8933d2b7ba --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PriorityLevel.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PriorityLevel_H_ +#define _S1AP_PriorityLevel_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_PriorityLevel { + S1AP_PriorityLevel_spare = 0, + S1AP_PriorityLevel_highest = 1, + S1AP_PriorityLevel_lowest = 14, + S1AP_PriorityLevel_no_priority = 15 +} e_S1AP_PriorityLevel; + +/* S1AP_PriorityLevel */ +typedef long S1AP_PriorityLevel_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_PriorityLevel_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PriorityLevel; +asn_struct_free_f S1AP_PriorityLevel_free; +asn_struct_print_f S1AP_PriorityLevel_print; +asn_constr_check_f S1AP_PriorityLevel_constraint; +ber_type_decoder_f S1AP_PriorityLevel_decode_ber; +der_type_encoder_f S1AP_PriorityLevel_encode_der; +xer_type_decoder_f S1AP_PriorityLevel_decode_xer; +xer_type_encoder_f S1AP_PriorityLevel_encode_xer; +oer_type_decoder_f S1AP_PriorityLevel_decode_oer; +oer_type_encoder_f S1AP_PriorityLevel_encode_oer; +per_type_decoder_f S1AP_PriorityLevel_decode_uper; +per_type_encoder_f S1AP_PriorityLevel_encode_uper; +per_type_decoder_f S1AP_PriorityLevel_decode_aper; +per_type_encoder_f S1AP_PriorityLevel_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PriorityLevel_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PrivacyIndicator.c b/lib/s1ap3/asn1c/S1AP_PrivacyIndicator.c new file mode 100644 index 0000000000..5ea4f14d1c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivacyIndicator.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PrivacyIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_PrivacyIndicator_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_PrivacyIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_PrivacyIndicator_value2enum_1[] = { + { 0, 13, "immediate-MDT" }, + { 1, 10, "logged-MDT" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_PrivacyIndicator_enum2value_1[] = { + 0, /* immediate-MDT(0) */ + 1 /* logged-MDT(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_PrivacyIndicator_specs_1 = { + asn_MAP_S1AP_PrivacyIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_PrivacyIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PrivacyIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PrivacyIndicator = { + "PrivacyIndicator", + "PrivacyIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_PrivacyIndicator_tags_1, + sizeof(asn_DEF_S1AP_PrivacyIndicator_tags_1) + /sizeof(asn_DEF_S1AP_PrivacyIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PrivacyIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PrivacyIndicator_tags_1) + /sizeof(asn_DEF_S1AP_PrivacyIndicator_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PrivacyIndicator_constr_1, &asn_PER_type_S1AP_PrivacyIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_PrivacyIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PrivacyIndicator.h b/lib/s1ap3/asn1c/S1AP_PrivacyIndicator.h new file mode 100644 index 0000000000..96cab5afd2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivacyIndicator.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PrivacyIndicator_H_ +#define _S1AP_PrivacyIndicator_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_PrivacyIndicator { + S1AP_PrivacyIndicator_immediate_MDT = 0, + S1AP_PrivacyIndicator_logged_MDT = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_PrivacyIndicator; + +/* S1AP_PrivacyIndicator */ +typedef long S1AP_PrivacyIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PrivacyIndicator; +asn_struct_free_f S1AP_PrivacyIndicator_free; +asn_struct_print_f S1AP_PrivacyIndicator_print; +asn_constr_check_f S1AP_PrivacyIndicator_constraint; +ber_type_decoder_f S1AP_PrivacyIndicator_decode_ber; +der_type_encoder_f S1AP_PrivacyIndicator_encode_der; +xer_type_decoder_f S1AP_PrivacyIndicator_decode_xer; +xer_type_encoder_f S1AP_PrivacyIndicator_encode_xer; +oer_type_decoder_f S1AP_PrivacyIndicator_decode_oer; +oer_type_encoder_f S1AP_PrivacyIndicator_encode_oer; +per_type_decoder_f S1AP_PrivacyIndicator_decode_uper; +per_type_encoder_f S1AP_PrivacyIndicator_encode_uper; +per_type_decoder_f S1AP_PrivacyIndicator_decode_aper; +per_type_encoder_f S1AP_PrivacyIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PrivacyIndicator_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PrivateIE-Container.c b/lib/s1ap3/asn1c/S1AP_PrivateIE-Container.c new file mode 100644 index 0000000000..8b2889e553 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivateIE-Container.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PrivateIE-Container.h" + +#include "S1AP_PrivateIE-Field.h" +static asn_oer_constraints_t asn_OER_type_S1AP_PrivateIE_Container_6618P0_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_PrivateIE_Container_6618P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_PrivateIE_Container_6618P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PrivateMessageIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PrivateIE_Container_6618P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_PrivateIE_Container_6618P0_specs_1 = { + sizeof(struct S1AP_PrivateIE_Container_6618P0), + offsetof(struct S1AP_PrivateIE_Container_6618P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PrivateIE_Container_6618P0 = { + "PrivateIE-Container", + "PrivateIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_PrivateIE_Container_6618P0_tags_1, + sizeof(asn_DEF_S1AP_PrivateIE_Container_6618P0_tags_1) + /sizeof(asn_DEF_S1AP_PrivateIE_Container_6618P0_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PrivateIE_Container_6618P0_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PrivateIE_Container_6618P0_tags_1) + /sizeof(asn_DEF_S1AP_PrivateIE_Container_6618P0_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_PrivateIE_Container_6618P0_constr_1, &asn_PER_type_S1AP_PrivateIE_Container_6618P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_PrivateIE_Container_6618P0_1, + 1, /* Single element */ + &asn_SPC_S1AP_PrivateIE_Container_6618P0_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PrivateIE-Container.h b/lib/s1ap3/asn1c/S1AP_PrivateIE-Container.h new file mode 100644 index 0000000000..173ecfdfd0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivateIE-Container.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PrivateIE_Container_H_ +#define _S1AP_PrivateIE_Container_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_PrivateMessageIEs; + +/* S1AP_PrivateIE-Container */ +typedef struct S1AP_PrivateIE_Container_6618P0 { + A_SEQUENCE_OF(struct S1AP_PrivateMessageIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PrivateIE_Container_6618P0_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PrivateIE_Container_6618P0; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_PrivateIE_Container_6618P0_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PrivateIE_Container_6618P0_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_PrivateIE_Container_6618P0_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PrivateIE_Container_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PrivateIE-Field.c b/lib/s1ap3/asn1c/S1AP_PrivateIE-Field.c new file mode 100644 index 0000000000..f76cc3373d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivateIE-Field.c @@ -0,0 +1,175 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PrivateIE-Field.h" + +static int +memb_S1AP_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_2 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_4 = { + sizeof(struct S1AP_PrivateMessageIEs__value), + offsetof(struct S1AP_PrivateMessageIEs__value, _asn_ctx), + offsetof(struct S1AP_PrivateMessageIEs__value, present), + sizeof(((struct S1AP_PrivateMessageIEs__value *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_PrivateMessageIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PrivateMessageIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_PrivateIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_2, &asn_PER_memb_S1AP_id_constr_2, memb_S1AP_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PrivateMessageIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_3, &asn_PER_memb_S1AP_criticality_constr_3, memb_S1AP_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_PrivateMessageIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_4, + 0, + { &asn_OER_memb_S1AP_value_constr_4, &asn_PER_memb_S1AP_value_constr_4, memb_S1AP_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PrivateMessageIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PrivateMessageIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PrivateMessageIEs_specs_1 = { + sizeof(struct S1AP_PrivateMessageIEs), + offsetof(struct S1AP_PrivateMessageIEs, _asn_ctx), + asn_MAP_S1AP_PrivateMessageIEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PrivateMessageIEs = { + "PrivateMessageIEs", + "PrivateMessageIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PrivateMessageIEs_tags_1, + sizeof(asn_DEF_S1AP_PrivateMessageIEs_tags_1) + /sizeof(asn_DEF_S1AP_PrivateMessageIEs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PrivateMessageIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PrivateMessageIEs_tags_1) + /sizeof(asn_DEF_S1AP_PrivateMessageIEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PrivateMessageIEs_1, + 3, /* Elements count */ + &asn_SPC_S1AP_PrivateMessageIEs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PrivateIE-Field.h b/lib/s1ap3/asn1c/S1AP_PrivateIE-Field.h new file mode 100644 index 0000000000..b7e36c28b4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivateIE-Field.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PrivateIE_Field_H_ +#define _S1AP_PrivateIE_Field_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PrivateIE-ID.h" +#include "S1AP_Criticality.h" +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_PrivateMessageIEs__value_PR { + PrivateMessageIEs__value_PR_NOTHING /* No components present */ + +} S1AP_PrivateMessageIEs__value_PR; + +/* S1AP_PrivateIE-Field */ +typedef struct S1AP_PrivateMessageIEs { + S1AP_PrivateIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_PrivateMessageIEs__value { + S1AP_PrivateMessageIEs__value_PR present; + union S1AP_PrivateMessageIEs__S1AP_value_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PrivateMessageIEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PrivateMessageIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PrivateMessageIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PrivateMessageIEs_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PrivateIE_Field_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PrivateIE-ID.c b/lib/s1ap3/asn1c/S1AP_PrivateIE-ID.c new file mode 100644 index 0000000000..26cbf5d22c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivateIE-ID.c @@ -0,0 +1,98 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PrivateIE-ID.h" + +static int +memb_S1AP_local_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_local_constr_2 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_local_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_PrivateIE_ID_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_PrivateIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_PrivateIE_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PrivateIE_ID, choice.local), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_S1AP_local_constr_2, &asn_PER_memb_S1AP_local_constr_2, memb_S1AP_local_constraint_1 }, + 0, 0, /* No default value */ + "local" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PrivateIE_ID, choice.global), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OBJECT_IDENTIFIER, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PrivateIE_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* local */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_PrivateIE_ID_specs_1 = { + sizeof(struct S1AP_PrivateIE_ID), + offsetof(struct S1AP_PrivateIE_ID, _asn_ctx), + offsetof(struct S1AP_PrivateIE_ID, present), + sizeof(((struct S1AP_PrivateIE_ID *)0)->present), + asn_MAP_S1AP_PrivateIE_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PrivateIE_ID = { + "PrivateIE-ID", + "PrivateIE-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_PrivateIE_ID_constr_1, &asn_PER_type_S1AP_PrivateIE_ID_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_PrivateIE_ID_1, + 2, /* Elements count */ + &asn_SPC_S1AP_PrivateIE_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PrivateIE-ID.h b/lib/s1ap3/asn1c/S1AP_PrivateIE-ID.h new file mode 100644 index 0000000000..36410ca4fa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivateIE-ID.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PrivateIE_ID_H_ +#define _S1AP_PrivateIE_ID_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_PrivateIE_ID_PR { + PrivateIE_ID_PR_NOTHING, /* No components present */ + PrivateIE_ID_PR_local, + PrivateIE_ID_PR_global +} S1AP_PrivateIE_ID_PR; + +/* S1AP_PrivateIE-ID */ +typedef struct S1AP_PrivateIE_ID { + S1AP_PrivateIE_ID_PR present; + union S1AP_PrivateIE_ID_u { + long local; + OBJECT_IDENTIFIER_t global; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PrivateIE_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PrivateIE_ID; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_PrivateIE_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PrivateIE_ID_1[2]; +extern asn_per_constraints_t asn_PER_type_S1AP_PrivateIE_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PrivateIE_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_PrivateMessage.c b/lib/s1ap3/asn1c/S1AP_PrivateMessage.c new file mode 100644 index 0000000000..a5a92281a3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivateMessage.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_PrivateMessage.h" + +asn_TYPE_member_t asn_MBR_S1AP_PrivateMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PrivateMessage, privateIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PrivateIE_Container_6618P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "privateIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PrivateMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PrivateMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* privateIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PrivateMessage_specs_1 = { + sizeof(struct S1AP_PrivateMessage), + offsetof(struct S1AP_PrivateMessage, _asn_ctx), + asn_MAP_S1AP_PrivateMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PrivateMessage = { + "PrivateMessage", + "PrivateMessage", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PrivateMessage_tags_1, + sizeof(asn_DEF_S1AP_PrivateMessage_tags_1) + /sizeof(asn_DEF_S1AP_PrivateMessage_tags_1[0]), /* 1 */ + asn_DEF_S1AP_PrivateMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_PrivateMessage_tags_1) + /sizeof(asn_DEF_S1AP_PrivateMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PrivateMessage_1, + 1, /* Elements count */ + &asn_SPC_S1AP_PrivateMessage_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_PrivateMessage.h b/lib/s1ap3/asn1c/S1AP_PrivateMessage.h new file mode 100644 index 0000000000..77c4454ed2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_PrivateMessage.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_PrivateMessage_H_ +#define _S1AP_PrivateMessage_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PrivateIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_PrivateMessage */ +typedef struct S1AP_PrivateMessage { + S1AP_PrivateIE_Container_6618P0_t privateIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PrivateMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PrivateMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PrivateMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_PrivateMessage_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_PrivateMessage_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProSeAuthorized.c b/lib/s1ap3/asn1c/S1AP_ProSeAuthorized.c new file mode 100644 index 0000000000..782d0876f2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProSeAuthorized.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProSeAuthorized.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_ProSeAuthorized_1[] = { + { ATF_POINTER, 3, offsetof(struct S1AP_ProSeAuthorized, proSeDirectDiscovery), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProSeDirectDiscovery, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "proSeDirectDiscovery" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_ProSeAuthorized, proSeDirectCommunication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProSeDirectCommunication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "proSeDirectCommunication" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ProSeAuthorized, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P79, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ProSeAuthorized_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ProSeAuthorized_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ProSeAuthorized_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* proSeDirectDiscovery */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* proSeDirectCommunication */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_ProSeAuthorized_specs_1 = { + sizeof(struct S1AP_ProSeAuthorized), + offsetof(struct S1AP_ProSeAuthorized, _asn_ctx), + asn_MAP_S1AP_ProSeAuthorized_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_ProSeAuthorized_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeAuthorized = { + "ProSeAuthorized", + "ProSeAuthorized", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProSeAuthorized_tags_1, + sizeof(asn_DEF_S1AP_ProSeAuthorized_tags_1) + /sizeof(asn_DEF_S1AP_ProSeAuthorized_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProSeAuthorized_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProSeAuthorized_tags_1) + /sizeof(asn_DEF_S1AP_ProSeAuthorized_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ProSeAuthorized_1, + 3, /* Elements count */ + &asn_SPC_S1AP_ProSeAuthorized_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProSeAuthorized.h b/lib/s1ap3/asn1c/S1AP_ProSeAuthorized.h new file mode 100644 index 0000000000..afe2b034fa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProSeAuthorized.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProSeAuthorized_H_ +#define _S1AP_ProSeAuthorized_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProSeDirectDiscovery.h" +#include "S1AP_ProSeDirectCommunication.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ProSeAuthorized */ +typedef struct S1AP_ProSeAuthorized { + S1AP_ProSeDirectDiscovery_t *proSeDirectDiscovery; /* OPTIONAL */ + S1AP_ProSeDirectCommunication_t *proSeDirectCommunication; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProSeAuthorized_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeAuthorized; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProSeAuthorized_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProSeDirectCommunication.c b/lib/s1ap3/asn1c/S1AP_ProSeDirectCommunication.c new file mode 100644 index 0000000000..9b05bc0516 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProSeDirectCommunication.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProSeDirectCommunication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ProSeDirectCommunication_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ProSeDirectCommunication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ProSeDirectCommunication_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_ProSeDirectCommunication_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_ProSeDirectCommunication_specs_1 = { + asn_MAP_S1AP_ProSeDirectCommunication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ProSeDirectCommunication_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProSeDirectCommunication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeDirectCommunication = { + "ProSeDirectCommunication", + "ProSeDirectCommunication", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ProSeDirectCommunication_tags_1, + sizeof(asn_DEF_S1AP_ProSeDirectCommunication_tags_1) + /sizeof(asn_DEF_S1AP_ProSeDirectCommunication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProSeDirectCommunication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProSeDirectCommunication_tags_1) + /sizeof(asn_DEF_S1AP_ProSeDirectCommunication_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ProSeDirectCommunication_constr_1, &asn_PER_type_S1AP_ProSeDirectCommunication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ProSeDirectCommunication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProSeDirectCommunication.h b/lib/s1ap3/asn1c/S1AP_ProSeDirectCommunication.h new file mode 100644 index 0000000000..f00d6d79d9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProSeDirectCommunication.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProSeDirectCommunication_H_ +#define _S1AP_ProSeDirectCommunication_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ProSeDirectCommunication { + S1AP_ProSeDirectCommunication_authorized = 0, + S1AP_ProSeDirectCommunication_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_ProSeDirectCommunication; + +/* S1AP_ProSeDirectCommunication */ +typedef long S1AP_ProSeDirectCommunication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ProSeDirectCommunication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeDirectCommunication; +extern const asn_INTEGER_specifics_t asn_SPC_ProSeDirectCommunication_specs_1; +asn_struct_free_f ProSeDirectCommunication_free; +asn_struct_print_f ProSeDirectCommunication_print; +asn_constr_check_f ProSeDirectCommunication_constraint; +ber_type_decoder_f ProSeDirectCommunication_decode_ber; +der_type_encoder_f ProSeDirectCommunication_encode_der; +xer_type_decoder_f ProSeDirectCommunication_decode_xer; +xer_type_encoder_f ProSeDirectCommunication_encode_xer; +oer_type_decoder_f ProSeDirectCommunication_decode_oer; +oer_type_encoder_f ProSeDirectCommunication_encode_oer; +per_type_decoder_f ProSeDirectCommunication_decode_uper; +per_type_encoder_f ProSeDirectCommunication_encode_uper; +per_type_decoder_f ProSeDirectCommunication_decode_aper; +per_type_encoder_f ProSeDirectCommunication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProSeDirectCommunication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.c b/lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.c new file mode 100644 index 0000000000..3670e89f63 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProSeDirectDiscovery.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ProSeDirectDiscovery_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ProSeDirectDiscovery_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ProSeDirectDiscovery_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_ProSeDirectDiscovery_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_ProSeDirectDiscovery_specs_1 = { + asn_MAP_S1AP_ProSeDirectDiscovery_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ProSeDirectDiscovery_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProSeDirectDiscovery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeDirectDiscovery = { + "ProSeDirectDiscovery", + "ProSeDirectDiscovery", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ProSeDirectDiscovery_tags_1, + sizeof(asn_DEF_S1AP_ProSeDirectDiscovery_tags_1) + /sizeof(asn_DEF_S1AP_ProSeDirectDiscovery_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProSeDirectDiscovery_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProSeDirectDiscovery_tags_1) + /sizeof(asn_DEF_S1AP_ProSeDirectDiscovery_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ProSeDirectDiscovery_constr_1, &asn_PER_type_S1AP_ProSeDirectDiscovery_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ProSeDirectDiscovery_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.h b/lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.h new file mode 100644 index 0000000000..5248a47657 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProSeDirectDiscovery.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProSeDirectDiscovery_H_ +#define _S1AP_ProSeDirectDiscovery_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ProSeDirectDiscovery { + S1AP_ProSeDirectDiscovery_authorized = 0, + S1AP_ProSeDirectDiscovery_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_ProSeDirectDiscovery; + +/* S1AP_ProSeDirectDiscovery */ +typedef long S1AP_ProSeDirectDiscovery_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ProSeDirectDiscovery_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeDirectDiscovery; +extern const asn_INTEGER_specifics_t asn_SPC_ProSeDirectDiscovery_specs_1; +asn_struct_free_f ProSeDirectDiscovery_free; +asn_struct_print_f ProSeDirectDiscovery_print; +asn_constr_check_f ProSeDirectDiscovery_constraint; +ber_type_decoder_f ProSeDirectDiscovery_decode_ber; +der_type_encoder_f ProSeDirectDiscovery_encode_der; +xer_type_decoder_f ProSeDirectDiscovery_decode_xer; +xer_type_encoder_f ProSeDirectDiscovery_encode_xer; +oer_type_decoder_f ProSeDirectDiscovery_decode_oer; +oer_type_encoder_f ProSeDirectDiscovery_encode_oer; +per_type_decoder_f ProSeDirectDiscovery_decode_uper; +per_type_encoder_f ProSeDirectDiscovery_encode_uper; +per_type_decoder_f ProSeDirectDiscovery_decode_aper; +per_type_encoder_f ProSeDirectDiscovery_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProSeDirectDiscovery_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProSeUEtoNetworkRelaying.c b/lib/s1ap3/asn1c/S1AP_ProSeUEtoNetworkRelaying.c new file mode 100644 index 0000000000..144444fd0f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProSeUEtoNetworkRelaying.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProSeUEtoNetworkRelaying.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ProSeUEtoNetworkRelaying_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_ProSeUEtoNetworkRelaying_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ProSeUEtoNetworkRelaying_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_ProSeUEtoNetworkRelaying_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_ProSeUEtoNetworkRelaying_specs_1 = { + asn_MAP_S1AP_ProSeUEtoNetworkRelaying_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ProSeUEtoNetworkRelaying_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProSeUEtoNetworkRelaying_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeUEtoNetworkRelaying = { + "ProSeUEtoNetworkRelaying", + "ProSeUEtoNetworkRelaying", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ProSeUEtoNetworkRelaying_tags_1, + sizeof(asn_DEF_S1AP_ProSeUEtoNetworkRelaying_tags_1) + /sizeof(asn_DEF_S1AP_ProSeUEtoNetworkRelaying_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProSeUEtoNetworkRelaying_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProSeUEtoNetworkRelaying_tags_1) + /sizeof(asn_DEF_S1AP_ProSeUEtoNetworkRelaying_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ProSeUEtoNetworkRelaying_constr_1, &asn_PER_type_S1AP_ProSeUEtoNetworkRelaying_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ProSeUEtoNetworkRelaying_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProSeUEtoNetworkRelaying.h b/lib/s1ap3/asn1c/S1AP_ProSeUEtoNetworkRelaying.h new file mode 100644 index 0000000000..7885389210 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProSeUEtoNetworkRelaying.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProSeUEtoNetworkRelaying_H_ +#define _S1AP_ProSeUEtoNetworkRelaying_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ProSeUEtoNetworkRelaying { + S1AP_ProSeUEtoNetworkRelaying_authorized = 0, + S1AP_ProSeUEtoNetworkRelaying_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_ProSeUEtoNetworkRelaying; + +/* S1AP_ProSeUEtoNetworkRelaying */ +typedef long S1AP_ProSeUEtoNetworkRelaying_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeUEtoNetworkRelaying; +asn_struct_free_f S1AP_ProSeUEtoNetworkRelaying_free; +asn_struct_print_f S1AP_ProSeUEtoNetworkRelaying_print; +asn_constr_check_f S1AP_ProSeUEtoNetworkRelaying_constraint; +ber_type_decoder_f S1AP_ProSeUEtoNetworkRelaying_decode_ber; +der_type_encoder_f S1AP_ProSeUEtoNetworkRelaying_encode_der; +xer_type_decoder_f S1AP_ProSeUEtoNetworkRelaying_decode_xer; +xer_type_encoder_f S1AP_ProSeUEtoNetworkRelaying_encode_xer; +oer_type_decoder_f S1AP_ProSeUEtoNetworkRelaying_decode_oer; +oer_type_encoder_f S1AP_ProSeUEtoNetworkRelaying_encode_oer; +per_type_decoder_f S1AP_ProSeUEtoNetworkRelaying_decode_uper; +per_type_encoder_f S1AP_ProSeUEtoNetworkRelaying_encode_uper; +per_type_decoder_f S1AP_ProSeUEtoNetworkRelaying_decode_aper; +per_type_encoder_f S1AP_ProSeUEtoNetworkRelaying_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProSeUEtoNetworkRelaying_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProcedureCode.c b/lib/s1ap3/asn1c/S1AP_ProcedureCode.c new file mode 100644 index 0000000000..2c86427fbd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProcedureCode.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProcedureCode.h" + +int +S1AP_ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ProcedureCode_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ProcedureCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProcedureCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProcedureCode = { + "ProcedureCode", + "ProcedureCode", + &asn_OP_NativeInteger, + asn_DEF_S1AP_ProcedureCode_tags_1, + sizeof(asn_DEF_S1AP_ProcedureCode_tags_1) + /sizeof(asn_DEF_S1AP_ProcedureCode_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProcedureCode_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProcedureCode_tags_1) + /sizeof(asn_DEF_S1AP_ProcedureCode_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ProcedureCode_constr_1, &asn_PER_type_S1AP_ProcedureCode_constr_1, S1AP_ProcedureCode_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProcedureCode.h b/lib/s1ap3/asn1c/S1AP_ProcedureCode.h new file mode 100644 index 0000000000..a38296c01a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProcedureCode.h @@ -0,0 +1,108 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProcedureCode_H_ +#define _S1AP_ProcedureCode_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ProcedureCode */ +typedef long S1AP_ProcedureCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ProcedureCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProcedureCode; +asn_struct_free_f S1AP_ProcedureCode_free; +asn_struct_print_f S1AP_ProcedureCode_print; +asn_constr_check_f S1AP_ProcedureCode_constraint; +ber_type_decoder_f S1AP_ProcedureCode_decode_ber; +der_type_encoder_f S1AP_ProcedureCode_encode_der; +xer_type_decoder_f S1AP_ProcedureCode_decode_xer; +xer_type_encoder_f S1AP_ProcedureCode_encode_xer; +oer_type_decoder_f S1AP_ProcedureCode_decode_oer; +oer_type_encoder_f S1AP_ProcedureCode_encode_oer; +per_type_decoder_f S1AP_ProcedureCode_decode_uper; +per_type_encoder_f S1AP_ProcedureCode_encode_uper; +per_type_decoder_f S1AP_ProcedureCode_decode_aper; +per_type_encoder_f S1AP_ProcedureCode_encode_aper; +#define S1AP_ProcedureCode_S1AP_id_HandoverPreparation ((S1AP_ProcedureCode_t)0) +#define S1AP_ProcedureCode_S1AP_id_HandoverResourceAllocation ((S1AP_ProcedureCode_t)1) +#define S1AP_ProcedureCode_S1AP_id_HandoverNotification ((S1AP_ProcedureCode_t)2) +#define S1AP_ProcedureCode_S1AP_id_PathSwitchRequest ((S1AP_ProcedureCode_t)3) +#define S1AP_ProcedureCode_S1AP_id_HandoverCancel ((S1AP_ProcedureCode_t)4) +#define S1AP_ProcedureCode_S1AP_id_E_RABSetup ((S1AP_ProcedureCode_t)5) +#define S1AP_ProcedureCode_S1AP_id_E_RABModify ((S1AP_ProcedureCode_t)6) +#define S1AP_ProcedureCode_S1AP_id_E_RABRelease ((S1AP_ProcedureCode_t)7) +#define S1AP_ProcedureCode_S1AP_id_E_RABReleaseIndication ((S1AP_ProcedureCode_t)8) +#define S1AP_ProcedureCode_S1AP_id_InitialContextSetup ((S1AP_ProcedureCode_t)9) +#define S1AP_ProcedureCode_S1AP_id_Paging ((S1AP_ProcedureCode_t)10) +#define S1AP_ProcedureCode_S1AP_id_downlinkNASTransport ((S1AP_ProcedureCode_t)11) +#define S1AP_ProcedureCode_S1AP_id_initialUEMessage ((S1AP_ProcedureCode_t)12) +#define S1AP_ProcedureCode_S1AP_id_uplinkNASTransport ((S1AP_ProcedureCode_t)13) +#define S1AP_ProcedureCode_S1AP_id_Reset ((S1AP_ProcedureCode_t)14) +#define S1AP_ProcedureCode_S1AP_id_ErrorIndication ((S1AP_ProcedureCode_t)15) +#define S1AP_ProcedureCode_S1AP_id_NASNonDeliveryIndication ((S1AP_ProcedureCode_t)16) +#define S1AP_ProcedureCode_S1AP_id_S1Setup ((S1AP_ProcedureCode_t)17) +#define S1AP_ProcedureCode_S1AP_id_UEContextReleaseRequest ((S1AP_ProcedureCode_t)18) +#define S1AP_ProcedureCode_S1AP_id_DownlinkS1cdma2000tunnelling ((S1AP_ProcedureCode_t)19) +#define S1AP_ProcedureCode_S1AP_id_UplinkS1cdma2000tunnelling ((S1AP_ProcedureCode_t)20) +#define S1AP_ProcedureCode_S1AP_id_UEContextModification ((S1AP_ProcedureCode_t)21) +#define S1AP_ProcedureCode_S1AP_id_UECapabilityInfoIndication ((S1AP_ProcedureCode_t)22) +#define S1AP_ProcedureCode_S1AP_id_UEContextRelease ((S1AP_ProcedureCode_t)23) +#define S1AP_ProcedureCode_S1AP_id_eNBStatusTransfer ((S1AP_ProcedureCode_t)24) +#define S1AP_ProcedureCode_S1AP_id_MMEStatusTransfer ((S1AP_ProcedureCode_t)25) +#define S1AP_ProcedureCode_S1AP_id_DeactivateTrace ((S1AP_ProcedureCode_t)26) +#define S1AP_ProcedureCode_S1AP_id_TraceStart ((S1AP_ProcedureCode_t)27) +#define S1AP_ProcedureCode_S1AP_id_TraceFailureIndication ((S1AP_ProcedureCode_t)28) +#define S1AP_ProcedureCode_S1AP_id_ENBConfigurationUpdate ((S1AP_ProcedureCode_t)29) +#define S1AP_ProcedureCode_S1AP_id_MMEConfigurationUpdate ((S1AP_ProcedureCode_t)30) +#define S1AP_ProcedureCode_S1AP_id_LocationReportingControl ((S1AP_ProcedureCode_t)31) +#define S1AP_ProcedureCode_S1AP_id_LocationReportingFailureIndication ((S1AP_ProcedureCode_t)32) +#define S1AP_ProcedureCode_S1AP_id_LocationReport ((S1AP_ProcedureCode_t)33) +#define S1AP_ProcedureCode_S1AP_id_OverloadStart ((S1AP_ProcedureCode_t)34) +#define S1AP_ProcedureCode_S1AP_id_OverloadStop ((S1AP_ProcedureCode_t)35) +#define S1AP_ProcedureCode_S1AP_id_WriteReplaceWarning ((S1AP_ProcedureCode_t)36) +#define S1AP_ProcedureCode_S1AP_id_eNBDirectInformationTransfer ((S1AP_ProcedureCode_t)37) +#define S1AP_ProcedureCode_S1AP_id_MMEDirectInformationTransfer ((S1AP_ProcedureCode_t)38) +#define S1AP_ProcedureCode_S1AP_id_PrivateMessage ((S1AP_ProcedureCode_t)39) +#define S1AP_ProcedureCode_S1AP_id_eNBConfigurationTransfer ((S1AP_ProcedureCode_t)40) +#define S1AP_ProcedureCode_S1AP_id_MMEConfigurationTransfer ((S1AP_ProcedureCode_t)41) +#define S1AP_ProcedureCode_S1AP_id_CellTrafficTrace ((S1AP_ProcedureCode_t)42) +#define S1AP_ProcedureCode_S1AP_id_Kill ((S1AP_ProcedureCode_t)43) +#define S1AP_ProcedureCode_S1AP_id_downlinkUEAssociatedLPPaTransport ((S1AP_ProcedureCode_t)44) +#define S1AP_ProcedureCode_S1AP_id_uplinkUEAssociatedLPPaTransport ((S1AP_ProcedureCode_t)45) +#define S1AP_ProcedureCode_S1AP_id_downlinkNonUEAssociatedLPPaTransport ((S1AP_ProcedureCode_t)46) +#define S1AP_ProcedureCode_S1AP_id_uplinkNonUEAssociatedLPPaTransport ((S1AP_ProcedureCode_t)47) +#define S1AP_ProcedureCode_S1AP_id_UERadioCapabilityMatch ((S1AP_ProcedureCode_t)48) +#define S1AP_ProcedureCode_S1AP_id_PWSRestartIndication ((S1AP_ProcedureCode_t)49) +#define S1AP_ProcedureCode_S1AP_id_E_RABModificationIndication ((S1AP_ProcedureCode_t)50) +#define S1AP_ProcedureCode_S1AP_id_PWSFailureIndication ((S1AP_ProcedureCode_t)51) +#define S1AP_ProcedureCode_S1AP_id_RerouteNASRequest ((S1AP_ProcedureCode_t)52) +#define S1AP_ProcedureCode_S1AP_id_UEContextModificationIndication ((S1AP_ProcedureCode_t)53) +#define S1AP_ProcedureCode_S1AP_id_ConnectionEstablishmentIndication ((S1AP_ProcedureCode_t)54) +#define S1AP_ProcedureCode_S1AP_id_UEContextSuspend ((S1AP_ProcedureCode_t)55) +#define S1AP_ProcedureCode_S1AP_id_UEContextResume ((S1AP_ProcedureCode_t)56) +#define S1AP_ProcedureCode_S1AP_id_NASDeliveryIndication ((S1AP_ProcedureCode_t)57) +#define S1AP_ProcedureCode_S1AP_id_RetrieveUEInformation ((S1AP_ProcedureCode_t)58) +#define S1AP_ProcedureCode_S1AP_id_UEInformationTransfer ((S1AP_ProcedureCode_t)59) +#define S1AP_ProcedureCode_S1AP_id_eNBCPRelocationIndication ((S1AP_ProcedureCode_t)60) +#define S1AP_ProcedureCode_S1AP_id_MMECPRelocationIndication ((S1AP_ProcedureCode_t)61) + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProcedureCode_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolError-IE-ContainerList.h b/lib/s1ap3/asn1c/S1AP_ProtocolError-IE-ContainerList.h new file mode 100644 index 0000000000..14fbd3b03f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolError-IE-ContainerList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolError_IE_ContainerList_H_ +#define _S1AP_ProtocolError_IE_ContainerList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolError_IE_ContainerList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolExtensionContainer.c b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionContainer.c new file mode 100644 index 0000000000..c2e1520a76 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionContainer.c @@ -0,0 +1,5127 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProtocolExtensionContainer.h" + +#include "S1AP_ProtocolExtensionField.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P0_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P1_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P2_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P3_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P4_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P5_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P6_constr_13 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P7_constr_15 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P8_constr_17 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P9_constr_19 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P10_constr_21 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P10_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P11_constr_23 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P11_constr_23 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P12_constr_25 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P12_constr_25 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P13_constr_27 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P13_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P14_constr_29 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P14_constr_29 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P15_constr_31 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P15_constr_31 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P16_constr_33 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P16_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P17_constr_35 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P17_constr_35 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P18_constr_37 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P18_constr_37 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P19_constr_39 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P19_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P20_constr_41 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P20_constr_41 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P21_constr_43 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P21_constr_43 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P22_constr_45 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P22_constr_45 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P23_constr_47 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P23_constr_47 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P24_constr_49 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P24_constr_49 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P25_constr_51 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P25_constr_51 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P26_constr_53 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P26_constr_53 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P27_constr_55 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P27_constr_55 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P28_constr_57 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P28_constr_57 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P29_constr_59 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P29_constr_59 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P30_constr_61 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P30_constr_61 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P31_constr_63 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P31_constr_63 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P32_constr_65 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P32_constr_65 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P33_constr_67 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P33_constr_67 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P34_constr_69 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P34_constr_69 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P35_constr_71 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P35_constr_71 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P36_constr_73 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P36_constr_73 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P37_constr_75 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P37_constr_75 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P38_constr_77 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P38_constr_77 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P39_constr_79 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P39_constr_79 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P40_constr_81 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P40_constr_81 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P41_constr_83 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P41_constr_83 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P42_constr_85 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P42_constr_85 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P43_constr_87 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P43_constr_87 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P44_constr_89 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P44_constr_89 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P45_constr_91 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P45_constr_91 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P46_constr_93 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P46_constr_93 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P47_constr_95 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P47_constr_95 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P48_constr_97 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P48_constr_97 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P49_constr_99 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P49_constr_99 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P50_constr_101 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P50_constr_101 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P51_constr_103 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P51_constr_103 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P52_constr_105 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P52_constr_105 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P53_constr_107 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P53_constr_107 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P54_constr_109 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P54_constr_109 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P55_constr_111 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P55_constr_111 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P56_constr_113 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P56_constr_113 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P57_constr_115 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P57_constr_115 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P58_constr_117 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P58_constr_117 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P59_constr_119 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P59_constr_119 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P60_constr_121 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P60_constr_121 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P61_constr_123 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P61_constr_123 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P62_constr_125 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P62_constr_125 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P63_constr_127 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P63_constr_127 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P64_constr_129 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P64_constr_129 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P65_constr_131 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P65_constr_131 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P66_constr_133 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P66_constr_133 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P67_constr_135 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P67_constr_135 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P68_constr_137 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P68_constr_137 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P69_constr_139 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P69_constr_139 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P70_constr_141 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P70_constr_141 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P71_constr_143 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P71_constr_143 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P72_constr_145 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P72_constr_145 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P73_constr_147 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P73_constr_147 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P74_constr_149 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P74_constr_149 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P75_constr_151 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P75_constr_151 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P76_constr_153 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P76_constr_153 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P77_constr_155 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P77_constr_155 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P78_constr_157 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P78_constr_157 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P79_constr_159 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P79_constr_159 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P80_constr_161 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P80_constr_161 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P81_constr_163 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P81_constr_163 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P82_constr_165 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P82_constr_165 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P83_constr_167 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P83_constr_167 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P84_constr_169 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P84_constr_169 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P85_constr_171 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P85_constr_171 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P86_constr_173 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P86_constr_173 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P87_constr_175 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P87_constr_175 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P88_constr_177 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P88_constr_177 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P89_constr_179 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P89_constr_179 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P90_constr_181 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P90_constr_181 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P91_constr_183 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P91_constr_183 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P92_constr_185 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P92_constr_185 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P93_constr_187 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P93_constr_187 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P94_constr_189 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P94_constr_189 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P95_constr_191 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P95_constr_191 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P96_constr_193 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P96_constr_193 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P97_constr_195 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P97_constr_195 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P98_constr_197 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P98_constr_197 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P99_constr_199 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P99_constr_199 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P100_constr_201 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P100_constr_201 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P101_constr_203 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P101_constr_203 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P102_constr_205 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P102_constr_205 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P103_constr_207 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P103_constr_207 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P104_constr_209 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P104_constr_209 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P105_constr_211 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P105_constr_211 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P106_constr_213 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P106_constr_213 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P107_constr_215 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P107_constr_215 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P108_constr_217 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P108_constr_217 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P109_constr_219 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P109_constr_219 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P110_constr_221 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P110_constr_221 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P111_constr_223 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P111_constr_223 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P112_constr_225 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P112_constr_225 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P113_constr_227 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P113_constr_227 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P114_constr_229 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P114_constr_229 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P115_constr_231 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P115_constr_231 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P116_constr_233 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P116_constr_233 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P117_constr_235 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P117_constr_235 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionContainer_6602P118_constr_237 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P118_constr_237 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P0_specs_1 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P0), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P0 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P0_tags_1, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P0_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P0_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P0_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P0_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P0_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P0_constr_1, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P0_1, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P1_specs_3 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P1), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P1 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P1_tags_3, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P1_tags_3) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P1_tags_3[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P1_tags_3, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P1_tags_3) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P1_tags_3[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P1_constr_3, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P1_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P1_3, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P2_specs_5 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P2), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P2 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P2_tags_5, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P2_tags_5) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P2_tags_5[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P2_tags_5, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P2_tags_5) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P2_tags_5[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P2_constr_5, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P2_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P2_5, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P3_specs_7 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P3), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P3 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P3_tags_7, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P3_tags_7) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P3_tags_7[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P3_tags_7, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P3_tags_7) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P3_tags_7[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P3_constr_7, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P3_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P3_7, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P4_specs_9 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P4), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P4 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P4_tags_9, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P4_tags_9) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P4_tags_9[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P4_tags_9, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P4_tags_9) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P4_tags_9[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P4_constr_9, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P4_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P4_9, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P5_specs_11 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P5), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P5 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P5_tags_11, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P5_tags_11) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P5_tags_11[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P5_tags_11, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P5_tags_11) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P5_tags_11[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P5_constr_11, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P5_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P5_11, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P6_specs_13 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P6), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P6 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P6_tags_13, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P6_tags_13) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P6_tags_13[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P6_tags_13, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P6_tags_13) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P6_tags_13[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P6_constr_13, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P6_constr_13, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P6_13, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P7_specs_15 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P7), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P7 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P7_tags_15, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P7_tags_15) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P7_tags_15[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P7_tags_15, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P7_tags_15) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P7_tags_15[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P7_constr_15, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P7_constr_15, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P7_15, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P8_specs_17 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P8), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P8 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P8_tags_17, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P8_tags_17) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P8_tags_17[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P8_tags_17, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P8_tags_17) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P8_tags_17[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P8_constr_17, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P8_constr_17, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P8_17, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P9_specs_19 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P9), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P9 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P9_tags_19, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P9_tags_19) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P9_tags_19[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P9_tags_19, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P9_tags_19) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P9_tags_19[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P9_constr_19, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P9_constr_19, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P9_19, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P9_specs_19 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P10_specs_21 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P10), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P10 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P10_tags_21, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P10_tags_21) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P10_tags_21[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P10_tags_21, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P10_tags_21) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P10_tags_21[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P10_constr_21, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P10_constr_21, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P10_21, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P10_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P11_specs_23 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P11), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P11 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P11_tags_23, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P11_tags_23) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P11_tags_23[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P11_tags_23, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P11_tags_23) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P11_tags_23[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P11_constr_23, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P11_constr_23, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P11_23, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P11_specs_23 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P12_specs_25 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P12), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P12 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P12_tags_25, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P12_tags_25) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P12_tags_25[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P12_tags_25, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P12_tags_25) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P12_tags_25[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P12_constr_25, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P12_constr_25, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P12_25, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P12_specs_25 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAIItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P13_specs_27 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P13), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P13 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P13_tags_27, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P13_tags_27) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P13_tags_27[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P13_tags_27, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P13_tags_27) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P13_tags_27[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P13_constr_27, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P13_constr_27, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P13_27, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P13_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P14_specs_29 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P14), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P14 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P14_tags_29, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P14_tags_29) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P14_tags_29[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P14_tags_29, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P14_tags_29) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P14_tags_29[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P14_constr_29, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P14_constr_29, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P14_29, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P14_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P15_specs_31 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P15), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P15 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P15_tags_31, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P15_tags_31) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P15_tags_31[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P15_tags_31, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P15_tags_31) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P15_tags_31[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P15_constr_31, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P15_constr_31, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P15_31, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P15_specs_31 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P16_specs_33 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P16), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P16 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P16_tags_33, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P16_tags_33) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P16_tags_33[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P16_tags_33, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P16_tags_33) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P16_tags_33[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P16_constr_33, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P16_constr_33, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P16_33, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P16_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P17_specs_35 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P17), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P17 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P17_tags_35, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P17_tags_35) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P17_tags_35[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P17_tags_35, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P17_tags_35) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P17_tags_35[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P17_constr_35, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P17_constr_35, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P17_35, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P17_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P18_specs_37 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P18), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P18 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P18_tags_37, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P18_tags_37) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P18_tags_37[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P18_tags_37, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P18_tags_37) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P18_tags_37[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P18_constr_37, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P18_constr_37, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P18_37, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P18_specs_37 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P19_specs_39 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P19), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P19 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P19_tags_39, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P19_tags_39) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P19_tags_39[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P19_tags_39, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P19_tags_39) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P19_tags_39[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P19_constr_39, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P19_constr_39, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P19_39, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P19_specs_39 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P20_41[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Additional_GUTI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P20_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P20_specs_41 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P20), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P20, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P20 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P20_tags_41, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P20_tags_41) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P20_tags_41[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P20_tags_41, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P20_tags_41) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P20_tags_41[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P20_constr_41, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P20_constr_41, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P20_41, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P20_specs_41 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P21_43[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P21_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P21_specs_43 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P21), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P21, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P21 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P21_tags_43, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P21_tags_43) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P21_tags_43[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P21_tags_43, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P21_tags_43) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P21_tags_43[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P21_constr_43, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P21_constr_43, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P21_43, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P21_specs_43 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P22_45[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P22_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P22_specs_45 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P22), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P22, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P22 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P22_tags_45, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P22_tags_45) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P22_tags_45[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P22_tags_45, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P22_tags_45) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P22_tags_45[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P22_constr_45, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P22_constr_45, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P22_45, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P22_specs_45 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P23_47[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P23_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P23_specs_47 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P23), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P23, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P23 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P23_tags_47, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P23_tags_47) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P23_tags_47[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P23_tags_47, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P23_tags_47) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P23_tags_47[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P23_constr_47, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P23_constr_47, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P23_47, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P23_specs_47 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P24_49[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P24_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P24_specs_49 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P24), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P24, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P24 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P24_tags_49, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P24_tags_49) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P24_tags_49[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P24_tags_49, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P24_tags_49) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P24_tags_49[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P24_constr_49, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P24_constr_49, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P24_49, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P24_specs_49 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P25_51[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P25_tags_51[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P25_specs_51 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P25), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P25, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P25 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P25_tags_51, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P25_tags_51) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P25_tags_51[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P25_tags_51, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P25_tags_51) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P25_tags_51[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P25_constr_51, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P25_constr_51, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P25_51, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P25_specs_51 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P26_53[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P26_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P26_specs_53 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P26), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P26, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P26 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P26_tags_53, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P26_tags_53) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P26_tags_53[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P26_tags_53, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P26_tags_53) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P26_tags_53[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P26_constr_53, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P26_constr_53, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P26_53, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P26_specs_53 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P27_55[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P27_tags_55[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P27_specs_55 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P27), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P27, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P27 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P27_tags_55, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P27_tags_55) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P27_tags_55[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P27_tags_55, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P27_tags_55) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P27_tags_55[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P27_constr_55, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P27_constr_55, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P27_55, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P27_specs_55 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P28_57[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P28_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P28_specs_57 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P28), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P28, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P28 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P28_tags_57, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P28_tags_57) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P28_tags_57[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P28_tags_57, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P28_tags_57) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P28_tags_57[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P28_constr_57, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P28_constr_57, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P28_57, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P28_specs_57 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P29_59[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P29_tags_59[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P29_specs_59 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P29), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P29, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P29 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P29_tags_59, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P29_tags_59) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P29_tags_59[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P29_tags_59, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P29_tags_59) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P29_tags_59[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P29_constr_59, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P29_constr_59, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P29_59, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P29_specs_59 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P30_61[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P30_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P30_specs_61 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P30), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P30, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P30 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P30_tags_61, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P30_tags_61) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P30_tags_61[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P30_tags_61, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P30_tags_61) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P30_tags_61[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P30_constr_61, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P30_constr_61, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P30_61, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P30_specs_61 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P31_63[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellBasedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P31_tags_63[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P31_specs_63 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P31), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P31, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P31 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P31_tags_63, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P31_tags_63) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P31_tags_63[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P31_tags_63, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P31_tags_63) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P31_tags_63[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P31_constr_63, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P31_constr_63, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P31_63, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P31_specs_63 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P32_65[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P32_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P32_specs_65 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P32), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P32, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P32 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P32_tags_65, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P32_tags_65) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P32_tags_65[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P32_tags_65, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P32_tags_65) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P32_tags_65[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P32_constr_65, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P32_constr_65, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P32_65, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P32_specs_65 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P33_67[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellType_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P33_tags_67[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P33_specs_67 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P33), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P33, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P33 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P33_tags_67, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P33_tags_67) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P33_tags_67[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P33_tags_67, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P33_tags_67) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P33_tags_67[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P33_constr_67, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P33_constr_67, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P33_67, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P33_specs_67 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P34_69[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CGI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P34_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P34_specs_69 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P34), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P34, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P34 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P34_tags_69, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P34_tags_69) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P34_tags_69[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P34_tags_69, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P34_tags_69) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P34_tags_69[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P34_constr_69, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P34_constr_69, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P34_69, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P34_specs_69 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P35_71[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CSG_IdList_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P35_tags_71[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P35_specs_71 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P35), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P35, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P35 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P35_tags_71, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P35_tags_71) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P35_tags_71[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P35_tags_71, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P35_tags_71) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P35_tags_71[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P35_constr_71, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P35_constr_71, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P35_71, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P35_specs_71 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P36_73[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_COUNTvalue_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P36_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P36_specs_73 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P36), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P36, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P36 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P36_tags_73, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P36_tags_73) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P36_tags_73[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P36_tags_73, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P36_tags_73) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P36_tags_73[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P36_constr_73, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P36_constr_73, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P36_73, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P36_specs_73 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P37_75[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_COUNTValueExtended_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P37_tags_75[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P37_specs_75 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P37), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P37, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P37 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P37_tags_75, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P37_tags_75) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P37_tags_75[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P37_tags_75, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P37_tags_75) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P37_tags_75[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P37_constr_75, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P37_constr_75, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P37_75, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P37_specs_75 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P38_77[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P38_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P38_specs_77 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P38), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P38, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P38 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P38_tags_77, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P38_tags_77) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P38_tags_77[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P38_tags_77, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P38_tags_77) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P38_tags_77[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P38_constr_77, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P38_constr_77, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P38_77, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P38_specs_77 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P39_79[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P39_tags_79[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P39_specs_79 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P39), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P39, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P39 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P39_tags_79, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P39_tags_79) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P39_tags_79[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P39_tags_79, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P39_tags_79) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P39_tags_79[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P39_constr_79, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P39_constr_79, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P39_79, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P39_specs_79 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P40_81[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P40_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P40_specs_81 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P40), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P40, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P40 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P40_tags_81, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P40_tags_81) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P40_tags_81[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P40_tags_81, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P40_tags_81) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P40_tags_81[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P40_constr_81, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P40_constr_81, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P40_81, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P40_specs_81 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P41_83[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ServedDCNsItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P41_tags_83[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P41_specs_83 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P41), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P41, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P41 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P41_tags_83, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P41_tags_83) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P41_tags_83[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P41_tags_83, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P41_tags_83) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P41_tags_83[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P41_constr_83, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P41_constr_83, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P41_83, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P41_specs_83 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P42_85[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P42_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P42_specs_85 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P42), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P42, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P42 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P42_tags_85, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P42_tags_85) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P42_tags_85[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P42_tags_85, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P42_tags_85) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P42_tags_85[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P42_constr_85, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P42_constr_85, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P42_85, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P42_specs_85 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P43_87[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P43_tags_87[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P43_specs_87 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P43), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P43, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P43 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P43_tags_87, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P43_tags_87) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P43_tags_87[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P43_tags_87, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P43_tags_87) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P43_tags_87[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P43_constr_87, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P43_constr_87, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P43_87, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P43_specs_87 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P44_89[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P44_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P44_specs_89 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P44), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P44, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P44 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P44_tags_89, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P44_tags_89) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P44_tags_89[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P44_tags_89, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P44_tags_89) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P44_tags_89[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P44_constr_89, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P44_constr_89, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P44_89, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P44_specs_89 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P45_91[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P45_tags_91[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P45_specs_91 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P45), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P45, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P45 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P45_tags_91, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P45_tags_91) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P45_tags_91[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P45_tags_91, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P45_tags_91) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P45_tags_91[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P45_constr_91, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P45_constr_91, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P45_91, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P45_specs_91 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P46_93[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P46_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P46_specs_93 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P46), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P46, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P46 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P46_tags_93, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P46_tags_93) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P46_tags_93[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P46_tags_93, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P46_tags_93) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P46_tags_93[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P46_constr_93, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P46_constr_93, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P46_93, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P46_specs_93 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P47_95[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GlobalENB_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P47_tags_95[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P47_specs_95 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P47), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P47, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P47 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P47_tags_95, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P47_tags_95) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P47_tags_95[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P47_tags_95, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P47_tags_95) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P47_tags_95[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P47_constr_95, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P47_constr_95, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P47_95, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P47_specs_95 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P48_97[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P48_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P48_specs_97 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P48), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P48, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P48 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P48_tags_97, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P48_tags_97) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P48_tags_97[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P48_tags_97, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P48_tags_97) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P48_tags_97[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P48_constr_97, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P48_constr_97, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P48_97, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P48_specs_97 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P49_99[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABInformationListItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P49_tags_99[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P49_specs_99 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P49), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P49, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P49 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P49_tags_99, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P49_tags_99) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P49_tags_99[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P49_tags_99, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P49_tags_99) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P49_tags_99[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P49_constr_99, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P49_constr_99, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P49_99, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P49_specs_99 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P50_101[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P50_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P50_specs_101 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P50), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P50, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P50 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P50_tags_101, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P50_tags_101) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P50_tags_101[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P50_tags_101, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P50_tags_101) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P50_tags_101[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P50_constr_101, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P50_constr_101, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P50_101, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P50_specs_101 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P51_103[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABQoSParameters_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P51_tags_103[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P51_specs_103 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P51), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P51, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P51 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P51_tags_103, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P51_tags_103) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P51_tags_103[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P51_tags_103, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P51_tags_103) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P51_tags_103[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P51_constr_103, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P51_constr_103, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P51_103, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P51_specs_103 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P52_105[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P52_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P52_specs_105 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P52), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P52, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P52 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P52_tags_105, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P52_tags_105) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P52_tags_105[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P52_tags_105, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P52_tags_105) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P52_tags_105[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P52_constr_105, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P52_constr_105, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P52_105, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P52_specs_105 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P53_107[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P53_tags_107[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P53_specs_107 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P53), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P53, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P53 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P53_tags_107, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P53_tags_107) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P53_tags_107[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P53_tags_107, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P53_tags_107) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P53_tags_107[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P53_constr_107, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P53_constr_107, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P53_107, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P53_specs_107 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P54_109[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P54_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P54_specs_109 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P54), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P54, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P54 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P54_tags_109, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P54_tags_109) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P54_tags_109[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P54_tags_109, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P54_tags_109) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P54_tags_109[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P54_constr_109, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P54_constr_109, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P54_109, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P54_specs_109 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P55_111[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P55_tags_111[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P55_specs_111 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P55), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P55, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P55 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P55_tags_111, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P55_tags_111) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P55_tags_111[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P55_tags_111, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P55_tags_111) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P55_tags_111[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P55_constr_111, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P55_constr_111, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P55_111, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P55_specs_111 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P56_113[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P56_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P56_specs_113 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P56), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P56, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P56 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P56_tags_113, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P56_tags_113) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P56_tags_113[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P56_tags_113, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P56_tags_113) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P56_tags_113[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P56_constr_113, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P56_constr_113, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P56_113, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P56_specs_113 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P57_115[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GBR_QosInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P57_tags_115[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P57_specs_115 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P57), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P57, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P57 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P57_tags_115, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P57_tags_115) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P57_tags_115[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P57_tags_115, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P57_tags_115) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P57_tags_115[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P57_constr_115, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P57_constr_115, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P57_115, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P57_specs_115 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P58_117[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GUMMEI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P58_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P58_specs_117 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P58), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P58, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P58 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P58_tags_117, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P58_tags_117) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P58_tags_117[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P58_tags_117, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P58_tags_117) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P58_tags_117[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P58_constr_117, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P58_constr_117, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P58_117, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P58_specs_117 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P59_119[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRestrictionList_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P59_tags_119[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P59_specs_119 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P59), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P59, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P59 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P59_tags_119, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P59_tags_119) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P59_tags_119[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P59_tags_119, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P59_tags_119) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P59_tags_119[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P59_constr_119, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P59_constr_119, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P59_119, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P59_specs_119 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P60_121[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ImmediateMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P60_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P60_specs_121 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P60), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P60, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P60 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P60_tags_121, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P60_tags_121) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P60_tags_121[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P60_tags_121, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P60_tags_121) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P60_tags_121[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P60_constr_121, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P60_constr_121, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P60_121, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P60_specs_121 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P61_123[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P61_tags_123[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P61_specs_123 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P61), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P61, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P61 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P61_tags_123, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P61_tags_123) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P61_tags_123[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P61_tags_123, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P61_tags_123) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P61_tags_123[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P61_constr_123, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P61_constr_123, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P61_123, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P61_specs_123 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P62_125[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LAI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P62_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P62_specs_125 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P62), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P62, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P62 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P62_tags_125, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P62_tags_125) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P62_tags_125[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P62_tags_125, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P62_tags_125) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P62_tags_125[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P62_constr_125, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P62_constr_125, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P62_125, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P62_specs_125 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P63_127[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P63_tags_127[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P63_specs_127 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P63), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P63, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P63 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P63_tags_127, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P63_tags_127) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P63_tags_127[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P63_tags_127, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P63_tags_127) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P63_tags_127[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P63_constr_127, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P63_constr_127, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P63_127, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P63_specs_127 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P64_129[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ListeningSubframePattern_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P64_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P64_specs_129 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P64), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P64, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P64 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P64_tags_129, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P64_tags_129) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P64_tags_129[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P64_tags_129, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P64_tags_129) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P64_tags_129[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P64_constr_129, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P64_constr_129, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P64_129, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P64_specs_129 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P65_131[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LoggedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P65_tags_131[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P65_specs_131 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P65), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P65, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P65 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P65_tags_131, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P65_tags_131) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P65_tags_131[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P65_tags_131, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P65_tags_131) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P65_tags_131[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P65_constr_131, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P65_constr_131, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P65_131, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P65_specs_131 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P66_133[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P66_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P66_specs_133 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P66), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P66, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P66 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P66_tags_133, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P66_tags_133) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P66_tags_133[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P66_tags_133, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P66_tags_133) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P66_tags_133[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P66_constr_133, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P66_constr_133, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P66_133, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P66_specs_133 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P67_135[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M3Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P67_tags_135[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P67_specs_135 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P67), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P67, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P67 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P67_tags_135, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P67_tags_135) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P67_tags_135[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P67_tags_135, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P67_tags_135) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P67_tags_135[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P67_constr_135, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P67_constr_135, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P67_135, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P67_specs_135 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P68_137[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M4Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P68_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P68_specs_137 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P68), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P68, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P68 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P68_tags_137, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P68_tags_137) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P68_tags_137[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P68_tags_137, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P68_tags_137) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P68_tags_137[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P68_constr_137, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P68_constr_137, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P68_137, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P68_specs_137 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P69_139[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M5Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P69_tags_139[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P69_specs_139 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P69), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P69, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P69 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P69_tags_139, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P69_tags_139) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P69_tags_139[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P69_tags_139, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P69_tags_139) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P69_tags_139[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P69_constr_139, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P69_constr_139, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P69_139, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P69_specs_139 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P70_141[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M6Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P70_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P70_specs_141 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P70), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P70, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P70 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P70_tags_141, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P70_tags_141) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P70_tags_141[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P70_tags_141, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P70_tags_141) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P70_tags_141[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P70_constr_141, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P70_constr_141, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P70_141, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P70_specs_141 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P71_143[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M7Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P71_tags_143[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P71_specs_143 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P71), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P71, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P71 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P71_tags_143, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P71_tags_143) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P71_tags_143[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P71_tags_143, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P71_tags_143) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P71_tags_143[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P71_constr_143, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P71_constr_143, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P71_143, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P71_specs_143 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P72_145[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MDT_Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P72_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P72_specs_145 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P72), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P72, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P72 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P72_tags_145, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P72_tags_145) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P72_tags_145[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P72_tags_145, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P72_tags_145) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P72_tags_145[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P72_constr_145, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P72_constr_145, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P72_145, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P72_specs_145 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P73_147[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P73_tags_147[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P73_specs_147 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P73), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P73, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P73 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P73_tags_147, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P73_tags_147) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P73_tags_147[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P73_tags_147, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P73_tags_147) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P73_tags_147[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P73_constr_147, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P73_constr_147, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P73_147, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P73_specs_147 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P74_149[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MutingPatternInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P74_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P74_specs_149 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P74), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P74, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P74 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P74_tags_149, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P74_tags_149) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P74_tags_149[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P74_tags_149, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P74_tags_149) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P74_tags_149[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P74_constr_149, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P74_constr_149, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P74_149, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P74_specs_149 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P75_151[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P75_tags_151[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P75_specs_151 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P75), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P75, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P75 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P75_tags_151, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P75_tags_151) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P75_tags_151[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P75_tags_151, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P75_tags_151) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P75_tags_151[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P75_constr_151, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P75_constr_151, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P75_151, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P75_specs_151 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P76_153[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PagingAttemptInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P76_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P76_specs_153 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P76), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P76, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P76 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P76_tags_153, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P76_tags_153) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P76_tags_153[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P76_tags_153, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P76_tags_153) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P76_tags_153[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P76_constr_153, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P76_constr_153, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P76_153, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P76_specs_153 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P77_155[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P77_tags_155[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P77_specs_155 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P77), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P77, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P77 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P77_tags_155, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P77_tags_155) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P77_tags_155[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P77_tags_155, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P77_tags_155) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P77_tags_155[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P77_constr_155, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P77_constr_155, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P77_155, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P77_specs_155 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P78_157[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M1PeriodicReporting_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P78_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P78_specs_157 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P78), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P78, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P78 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P78_tags_157, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P78_tags_157) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P78_tags_157[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P78_tags_157, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P78_tags_157) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P78_tags_157[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P78_constr_157, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P78_constr_157, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P78_157, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P78_specs_157 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P79_159[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProSeAuthorized_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P79_tags_159[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P79_specs_159 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P79), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P79, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P79 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P79_tags_159, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P79_tags_159) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P79_tags_159[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P79_tags_159, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P79_tags_159) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P79_tags_159[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P79_constr_159, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P79_constr_159, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P79_159, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P79_specs_159 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P80_161[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P80_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P80_specs_161 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P80), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P80, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P80 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P80_tags_161, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P80_tags_161) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P80_tags_161[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P80_tags_161, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P80_tags_161) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P80_tags_161[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P80_constr_161, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P80_constr_161, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P80_161, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P80_specs_161 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P81_163[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P81_tags_163[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P81_specs_163 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P81), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P81, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P81 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P81_tags_163, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P81_tags_163) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P81_tags_163[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P81_tags_163, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P81_tags_163) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P81_tags_163[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P81_constr_163, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P81_constr_163, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P81_163, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P81_specs_163 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P82_165[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P82_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P82_specs_165 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P82), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P82, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P82 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P82_tags_165, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P82_tags_165) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P82_tags_165[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P82_tags_165, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P82_tags_165) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P82_tags_165[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P82_constr_165, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P82_constr_165, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P82_165, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P82_specs_165 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P83_167[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RecommendedENBItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P83_tags_167[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P83_specs_167 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P83), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P83, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P83 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P83_tags_167, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P83_tags_167) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P83_tags_167[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P83_tags_167, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P83_tags_167) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P83_tags_167[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P83_constr_167, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P83_constr_167, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P83_167, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P83_specs_167 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P84_169[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RequestType_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P84_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P84_specs_169 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P84), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P84, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P84 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P84_tags_169, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P84_tags_169) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P84_tags_169[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P84_tags_169, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P84_tags_169) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P84_tags_169[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P84_constr_169, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P84_constr_169, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P84_169, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P84_specs_169 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P85_171[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RIMTransfer_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P85_tags_171[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P85_specs_171 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P85), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P85, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P85 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P85_tags_171, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P85_tags_171) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P85_tags_171[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P85_tags_171, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P85_tags_171) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P85_tags_171[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P85_constr_171, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P85_constr_171, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P85_171, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P85_specs_171 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P86_173[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RLFReportInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P86_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P86_specs_173 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P86), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P86, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P86 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P86_tags_173, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P86_tags_173) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P86_tags_173[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P86_tags_173, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P86_tags_173) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P86_tags_173[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P86_constr_173, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P86_constr_173, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P86_173, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P86_specs_173 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P87_175[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SecurityContext_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P87_tags_175[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P87_specs_175 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P87), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P87, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P87 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P87_tags_175, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P87_tags_175) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P87_tags_175[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P87_tags_175, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P87_tags_175) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P87_tags_175[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P87_constr_175, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P87_constr_175, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P87_175, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P87_specs_175 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P88_177[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SONInformationReply_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P88_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P88_specs_177 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P88), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P88, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P88 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P88_tags_177, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P88_tags_177) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P88_tags_177[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P88_tags_177, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P88_tags_177) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P88_tags_177[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P88_constr_177, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P88_constr_177, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P88_177, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P88_specs_177 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P89_179[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P89_tags_179[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P89_specs_179 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P89), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P89, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P89 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P89_tags_179, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P89_tags_179) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P89_tags_179[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P89_tags_179, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P89_tags_179) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P89_tags_179[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P89_constr_179, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P89_constr_179, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P89_179, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P89_specs_179 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P90_181[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SynchronisationInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P90_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P90_specs_181 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P90), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P90, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P90 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P90_tags_181, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P90_tags_181) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P90_tags_181[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P90_tags_181, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P90_tags_181) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P90_tags_181[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P90_constr_181, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P90_constr_181, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P90_181, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P90_specs_181 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P91_183[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SourceeNB_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P91_tags_183[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P91_specs_183 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P91), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P91, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P91 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P91_tags_183, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P91_tags_183) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P91_tags_183[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P91_tags_183, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P91_tags_183) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P91_tags_183[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P91_constr_183, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P91_constr_183, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P91_183, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P91_specs_183 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P92_185[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P92_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P92_specs_185 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P92), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P92, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P92 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P92_tags_185, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P92_tags_185) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P92_tags_185[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P92_tags_185, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P92_tags_185) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P92_tags_185[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P92_constr_185, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P92_constr_185, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P92_185, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P92_specs_185 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P93_187[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P93_tags_187[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P93_specs_187 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P93), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P93, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P93 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P93_tags_187, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P93_tags_187) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P93_tags_187[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P93_tags_187, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P93_tags_187) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P93_tags_187[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P93_constr_187, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P93_constr_187, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P93_187, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P93_specs_187 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P94_189[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SupportedTAs_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P94_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P94_specs_189 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P94), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P94, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P94 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P94_tags_189, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P94_tags_189) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P94_tags_189[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P94_tags_189, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P94_tags_189) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P94_tags_189[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P94_constr_189, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P94_constr_189, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P94_189, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P94_specs_189 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P95_191[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P95_tags_191[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P95_specs_191 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P95), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P95, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P95 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P95_tags_191, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P95_tags_191) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P95_tags_191[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P95_tags_191, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P95_tags_191) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P95_tags_191[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P95_constr_191, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P95_constr_191, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P95_191, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P95_specs_191 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P96_193[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S_TMSI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P96_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P96_specs_193 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P96), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P96, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P96 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P96_tags_193, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P96_tags_193) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P96_tags_193[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P96_tags_193, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P96_tags_193) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P96_tags_193[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P96_constr_193, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P96_constr_193, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P96_193, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P96_specs_193 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P97_195[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAIBasedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P97_tags_195[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P97_specs_195 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P97), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P97, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P97 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P97_tags_195, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P97_tags_195) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P97_tags_195[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P97_tags_195, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P97_tags_195) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P97_tags_195[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P97_constr_195, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P97_constr_195, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P97_195, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P97_specs_195 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P98_197[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P98_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P98_specs_197 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P98), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P98, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P98 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P98_tags_197, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P98_tags_197) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P98_tags_197[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P98_tags_197, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P98_tags_197) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P98_tags_197[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P98_constr_197, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P98_constr_197, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P98_197, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P98_specs_197 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P99_199[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P99_tags_199[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P99_specs_199 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P99), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P99, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P99 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P99_tags_199, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P99_tags_199) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P99_tags_199[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P99_tags_199, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P99_tags_199) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P99_tags_199[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P99_constr_199, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P99_constr_199, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P99_199, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P99_specs_199 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P100_201[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P100_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P100_specs_201 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P100), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P100, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P100 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P100_tags_201, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P100_tags_201) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P100_tags_201[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P100_tags_201, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P100_tags_201) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P100_tags_201[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P100_constr_201, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P100_constr_201, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P100_201, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P100_specs_201 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P101_203[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TABasedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P101_tags_203[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P101_specs_203 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P101), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P101, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P101 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P101_tags_203, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P101_tags_203) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P101_tags_203[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P101_tags_203, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P101_tags_203) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P101_tags_203[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P101_constr_203, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P101_constr_203, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P101_203, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P101_specs_203 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P102_205[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P102_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P102_specs_205 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P102), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P102, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P102 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P102_tags_205, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P102_tags_205) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P102_tags_205[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P102_tags_205, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P102_tags_205) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P102_tags_205[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P102_constr_205, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P102_constr_205, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P102_205, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P102_specs_205 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P103_207[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TargeteNB_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P103_tags_207[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P103_specs_207 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P103), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P103, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P103 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P103_tags_207, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P103_tags_207) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P103_tags_207[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P103_tags_207, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P103_tags_207) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P103_tags_207[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P103_constr_207, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P103_constr_207, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P103_207, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P103_specs_207 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P104_209[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TargetRNC_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P104_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P104_specs_209 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P104), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P104, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P104 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P104_tags_209, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P104_tags_209) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P104_tags_209[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P104_tags_209, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P104_tags_209) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P104_tags_209[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P104_constr_209, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P104_constr_209, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P104_209, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P104_specs_209 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P105_211[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P105_tags_211[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P105_specs_211 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P105), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P105, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P105 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P105_tags_211, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P105_tags_211) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P105_tags_211[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P105_tags_211, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P105_tags_211) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P105_tags_211[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P105_constr_211, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P105_constr_211, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P105_211, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P105_specs_211 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P106_213[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P106_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P106_specs_213 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P106), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P106, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P106 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P106_tags_213, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P106_tags_213) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P106_tags_213[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P106_tags_213, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P106_tags_213) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P106_tags_213[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P106_constr_213, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P106_constr_213, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P106_213, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P106_specs_213 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P107_215[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TraceActivation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P107_tags_215[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P107_specs_215 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P107), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P107, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P107 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P107_tags_215, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P107_tags_215) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P107_tags_215[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P107_tags_215, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P107_tags_215) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P107_tags_215[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P107_constr_215, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P107_constr_215, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P107_215, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P107_specs_215 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P108_217[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Tunnel_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P108_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P108_specs_217 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P108), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P108, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P108 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P108_tags_217, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P108_tags_217) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P108_tags_217[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P108_tags_217, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P108_tags_217) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P108_tags_217[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P108_constr_217, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P108_constr_217, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P108_217, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P108_specs_217 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P109_219[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P109_tags_219[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P109_specs_219 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P109), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P109, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P109 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P109_tags_219, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P109_tags_219) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P109_tags_219[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P109_tags_219, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P109_tags_219) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P109_tags_219[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P109_constr_219, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P109_constr_219, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P109_219, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P109_specs_219 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P110_221[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P110_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P110_specs_221 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P110), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P110, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P110 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P110_tags_221, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P110_tags_221) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P110_tags_221[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P110_tags_221, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P110_tags_221) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P110_tags_221[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P110_constr_221, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P110_constr_221, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P110_221, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P110_specs_221 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P111_223[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P111_tags_223[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P111_specs_223 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P111), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P111, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P111 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P111_tags_223, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P111_tags_223) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P111_tags_223[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P111_tags_223, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P111_tags_223) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P111_tags_223[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P111_constr_223, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P111_constr_223, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P111_223, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P111_specs_223 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P112_225[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UESecurityCapabilities_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P112_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P112_specs_225 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P112), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P112, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P112 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P112_tags_225, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P112_tags_225) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P112_tags_225[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P112_tags_225, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P112_tags_225) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P112_tags_225[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P112_constr_225, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P112_constr_225, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P112_225, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P112_specs_225 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P113_227[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P113_tags_227[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P113_specs_227 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P113), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P113, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P113 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P113_tags_227, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P113_tags_227) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P113_tags_227[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P113_tags_227, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P113_tags_227) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P113_tags_227[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P113_constr_227, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P113_constr_227, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P113_227, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P113_specs_227 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P114_229[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P114_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P114_specs_229 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P114), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P114, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P114 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P114_tags_229, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P114_tags_229) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P114_tags_229[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P114_tags_229, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P114_tags_229) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P114_tags_229[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P114_constr_229, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P114_constr_229, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P114_229, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P114_specs_229 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P115_231[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UserLocationInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P115_tags_231[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P115_specs_231 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P115), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P115, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P115 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P115_tags_231, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P115_tags_231) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P115_tags_231[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P115_tags_231, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P115_tags_231) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P115_tags_231[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P115_constr_231, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P115_constr_231, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P115_231, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P115_specs_231 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P116_233[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P116_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P116_specs_233 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P116), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P116, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P116 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P116_tags_233, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P116_tags_233) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P116_tags_233[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P116_tags_233, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P116_tags_233) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P116_tags_233[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P116_constr_233, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P116_constr_233, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P116_233, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P116_specs_233 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P117_235[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P117_tags_235[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P117_specs_235 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P117), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P117, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P117 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P117_tags_235, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P117_tags_235) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P117_tags_235[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P117_tags_235, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P117_tags_235) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P117_tags_235[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P117_constr_235, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P117_constr_235, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P117_235, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P117_specs_235 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P118_237[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P118_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P118_specs_237 = { + sizeof(struct S1AP_ProtocolExtensionContainer_6602P118), + offsetof(struct S1AP_ProtocolExtensionContainer_6602P118, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P118 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolExtensionContainer_6602P118_tags_237, + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P118_tags_237) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P118_tags_237[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionContainer_6602P118_tags_237, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P118_tags_237) + /sizeof(asn_DEF_S1AP_ProtocolExtensionContainer_6602P118_tags_237[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionContainer_6602P118_constr_237, &asn_PER_type_S1AP_ProtocolExtensionContainer_6602P118_constr_237, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolExtensionContainer_6602P118_237, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolExtensionContainer_6602P118_specs_237 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolExtensionContainer.h b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionContainer.h new file mode 100644 index 0000000000..8c1858e8ba --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionContainer.h @@ -0,0 +1,1342 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolExtensionContainer_H_ +#define _S1AP_ProtocolExtensionContainer_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_E_RABDataForwardingItem_ExtIEs; +struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs; +struct S1AP_E_RABAdmittedItem_ExtIEs; +struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs; +struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs; +struct S1AP_E_RABToBeSwitchedULItem_ExtIEs; +struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs; +struct S1AP_E_RABSetupItemBearerSUResExtIEs; +struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs; +struct S1AP_E_RABModifyItemBearerModResExtIEs; +struct S1AP_E_RABReleaseItemBearerRelCompExtIEs; +struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs; +struct S1AP_E_RABSetupItemCtxtSUResExtIEs; +struct S1AP_TAIItemExtIEs; +struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs; +struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs; +struct S1AP_CSGMembershipInfo_ExtIEs; +struct S1AP_E_RABModifyItemBearerModConfExtIEs; +struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs; +struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs; +struct S1AP_Additional_GUTI_ExtIEs; +struct S1AP_AllocationAndRetentionPriority_ExtIEs; +struct S1AP_InformationForCECapableUEs_ExtIEs; +struct S1AP_AssistanceDataForPaging_ExtIEs; +struct S1AP_AssistanceDataForRecommendedCells_ExtIEs; +struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs; +struct S1AP_CancelledCellinEAI_Item_ExtIEs; +struct S1AP_CancelledCellinTAI_Item_ExtIEs; +struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs; +struct S1AP_CellID_Broadcast_Item_ExtIEs; +struct S1AP_CellID_Cancelled_Item_ExtIEs; +struct S1AP_CellBasedMDT_ExtIEs; +struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs; +struct S1AP_CellType_ExtIEs; +struct S1AP_CGI_ExtIEs; +struct S1AP_CSG_IdList_Item_ExtIEs; +struct S1AP_COUNTvalue_ExtIEs; +struct S1AP_COUNTValueExtended_ExtIEs; +struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs; +struct S1AP_CriticalityDiagnostics_ExtIEs; +struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs; +struct S1AP_ServedDCNsItem_ExtIEs; +struct S1AP_DL_CP_SecurityInformation_ExtIEs; +struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs; +struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs; +struct S1AP_CompletedCellinEAI_Item_ExtIEs; +struct S1AP_GERAN_Cell_ID_ExtIEs; +struct S1AP_GlobalENB_ID_ExtIEs; +struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs; +struct S1AP_E_RABInformationListItem_ExtIEs; +struct S1AP_E_RABItem_ExtIEs; +struct S1AP_E_RABQoSParameters_ExtIEs; +struct S1AP_EUTRAN_CGI_ExtIEs; +struct S1AP_ExpectedUEBehaviour_ExtIEs; +struct S1AP_ExpectedUEActivityBehaviour_ExtIEs; +struct S1AP_ForbiddenTAs_Item_ExtIEs; +struct S1AP_ForbiddenLAs_Item_ExtIEs; +struct S1AP_GBR_QosInformation_ExtIEs; +struct S1AP_GUMMEI_ExtIEs; +struct S1AP_HandoverRestrictionList_ExtIEs; +struct S1AP_ImmediateMDT_ExtIEs; +struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs; +struct S1AP_LAI_ExtIEs; +struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs; +struct S1AP_ListeningSubframePattern_ExtIEs; +struct S1AP_LoggedMDT_ExtIEs; +struct S1AP_LoggedMBSFNMDT_ExtIEs; +struct S1AP_M3Configuration_ExtIEs; +struct S1AP_M4Configuration_ExtIEs; +struct S1AP_M5Configuration_ExtIEs; +struct S1AP_M6Configuration_ExtIEs; +struct S1AP_M7Configuration_ExtIEs; +struct S1AP_MDT_Configuration_ExtIEs; +struct S1AP_MBSFN_ResultToLogInfo_ExtIEs; +struct S1AP_MutingPatternInformation_ExtIEs; +struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs; +struct S1AP_PagingAttemptInformation_ExtIEs; +struct S1AP_Paging_eDRXInformation_ExtIEs; +struct S1AP_M1PeriodicReporting_ExtIEs; +struct S1AP_ProSeAuthorized_ExtIEs; +struct S1AP_RecommendedCellsForPaging_ExtIEs; +struct S1AP_RecommendedCellsForPagingItem_ExtIEs; +struct S1AP_RecommendedENBsForPaging_ExtIEs; +struct S1AP_RecommendedENBItem_ExtIEs; +struct S1AP_RequestType_ExtIEs; +struct S1AP_RIMTransfer_ExtIEs; +struct S1AP_RLFReportInformation_ExtIEs; +struct S1AP_SecurityContext_ExtIEs; +struct S1AP_SONInformationReply_ExtIEs; +struct S1AP_SONConfigurationTransfer_ExtIEs; +struct S1AP_SynchronisationInformation_ExtIEs; +struct S1AP_SourceeNB_ID_ExtIEs; +struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs; +struct S1AP_ServedGUMMEIsItem_ExtIEs; +struct S1AP_SupportedTAs_Item_ExtIEs; +struct S1AP_TimeSynchronisationInfo_ExtIEs; +struct S1AP_S_TMSI_ExtIEs; +struct S1AP_TAIBasedMDT_ExtIEs; +struct S1AP_TAI_ExtIEs; +struct S1AP_TAI_Broadcast_Item_ExtIEs; +struct S1AP_TAI_Cancelled_Item_ExtIEs; +struct S1AP_TABasedMDT_ExtIEs; +struct S1AP_CompletedCellinTAI_Item_ExtIEs; +struct S1AP_TargeteNB_ID_ExtIEs; +struct S1AP_TargetRNC_ID_ExtIEs; +struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs; +struct S1AP_M1ThresholdEventA2_ExtIEs; +struct S1AP_TraceActivation_ExtIEs; +struct S1AP_Tunnel_Information_ExtIEs; +struct S1AP_UEAggregate_MaximumBitrates_ExtIEs; +struct S1AP_UE_S1AP_ID_pair_ExtIEs; +struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs; +struct S1AP_UESecurityCapabilities_ExtIEs; +struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs; +struct S1AP_UL_CP_SecurityInformation_ExtIEs; +struct S1AP_UserLocationInformation_ExtIEs; +struct S1AP_V2XServicesAuthorized_ExtIEs; +struct S1AP_X2TNLConfigurationInfo_ExtIEs; +struct S1AP_ENBX2ExtTLA_ExtIEs; + +/* S1AP_ProtocolExtensionContainer */ +typedef struct S1AP_ProtocolExtensionContainer_6602P0 { + A_SEQUENCE_OF(struct S1AP_E_RABDataForwardingItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P0_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P1 { + A_SEQUENCE_OF(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P1_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P2 { + A_SEQUENCE_OF(struct S1AP_E_RABAdmittedItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P2_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P3 { + A_SEQUENCE_OF(struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P3_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P4 { + A_SEQUENCE_OF(struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P4_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P5 { + A_SEQUENCE_OF(struct S1AP_E_RABToBeSwitchedULItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P5_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P6 { + A_SEQUENCE_OF(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P6_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P7 { + A_SEQUENCE_OF(struct S1AP_E_RABSetupItemBearerSUResExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P7_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P8 { + A_SEQUENCE_OF(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P8_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P9 { + A_SEQUENCE_OF(struct S1AP_E_RABModifyItemBearerModResExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P9_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P10 { + A_SEQUENCE_OF(struct S1AP_E_RABReleaseItemBearerRelCompExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P10_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P11 { + A_SEQUENCE_OF(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P11_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P12 { + A_SEQUENCE_OF(struct S1AP_E_RABSetupItemCtxtSUResExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P12_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P13 { + A_SEQUENCE_OF(struct S1AP_TAIItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P13_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P14 { + A_SEQUENCE_OF(struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P14_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P15 { + A_SEQUENCE_OF(struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P15_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P16 { + A_SEQUENCE_OF(struct S1AP_CSGMembershipInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P16_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P17 { + A_SEQUENCE_OF(struct S1AP_E_RABModifyItemBearerModConfExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P17_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P18 { + A_SEQUENCE_OF(struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P18_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P19 { + A_SEQUENCE_OF(struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P19_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P20 { + A_SEQUENCE_OF(struct S1AP_Additional_GUTI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P20_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P21 { + A_SEQUENCE_OF(struct S1AP_AllocationAndRetentionPriority_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P21_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P22 { + A_SEQUENCE_OF(struct S1AP_InformationForCECapableUEs_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P22_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P23 { + A_SEQUENCE_OF(struct S1AP_AssistanceDataForPaging_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P23_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P24 { + A_SEQUENCE_OF(struct S1AP_AssistanceDataForRecommendedCells_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P24_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P25 { + A_SEQUENCE_OF(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P25_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P26 { + A_SEQUENCE_OF(struct S1AP_CancelledCellinEAI_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P26_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P27 { + A_SEQUENCE_OF(struct S1AP_CancelledCellinTAI_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P27_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P28 { + A_SEQUENCE_OF(struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P28_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P29 { + A_SEQUENCE_OF(struct S1AP_CellID_Broadcast_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P29_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P30 { + A_SEQUENCE_OF(struct S1AP_CellID_Cancelled_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P30_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P31 { + A_SEQUENCE_OF(struct S1AP_CellBasedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P31_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P32 { + A_SEQUENCE_OF(struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P32_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P33 { + A_SEQUENCE_OF(struct S1AP_CellType_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P33_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P34 { + A_SEQUENCE_OF(struct S1AP_CGI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P34_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P35 { + A_SEQUENCE_OF(struct S1AP_CSG_IdList_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P35_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P36 { + A_SEQUENCE_OF(struct S1AP_COUNTvalue_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P36_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P37 { + A_SEQUENCE_OF(struct S1AP_COUNTValueExtended_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P37_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P38 { + A_SEQUENCE_OF(struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P38_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P39 { + A_SEQUENCE_OF(struct S1AP_CriticalityDiagnostics_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P39_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P40 { + A_SEQUENCE_OF(struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P40_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P41 { + A_SEQUENCE_OF(struct S1AP_ServedDCNsItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P41_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P42 { + A_SEQUENCE_OF(struct S1AP_DL_CP_SecurityInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P42_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P43 { + A_SEQUENCE_OF(struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P43_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P44 { + A_SEQUENCE_OF(struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P44_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P45 { + A_SEQUENCE_OF(struct S1AP_CompletedCellinEAI_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P45_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P46 { + A_SEQUENCE_OF(struct S1AP_GERAN_Cell_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P46_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P47 { + A_SEQUENCE_OF(struct S1AP_GlobalENB_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P47_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P48 { + A_SEQUENCE_OF(struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P48_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P49 { + A_SEQUENCE_OF(struct S1AP_E_RABInformationListItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P49_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P50 { + A_SEQUENCE_OF(struct S1AP_E_RABItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P50_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P51 { + A_SEQUENCE_OF(struct S1AP_E_RABQoSParameters_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P51_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P52 { + A_SEQUENCE_OF(struct S1AP_EUTRAN_CGI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P52_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P53 { + A_SEQUENCE_OF(struct S1AP_ExpectedUEBehaviour_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P53_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P54 { + A_SEQUENCE_OF(struct S1AP_ExpectedUEActivityBehaviour_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P54_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P55 { + A_SEQUENCE_OF(struct S1AP_ForbiddenTAs_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P55_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P56 { + A_SEQUENCE_OF(struct S1AP_ForbiddenLAs_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P56_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P57 { + A_SEQUENCE_OF(struct S1AP_GBR_QosInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P57_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P58 { + A_SEQUENCE_OF(struct S1AP_GUMMEI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P58_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P59 { + A_SEQUENCE_OF(struct S1AP_HandoverRestrictionList_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P59_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P60 { + A_SEQUENCE_OF(struct S1AP_ImmediateMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P60_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P61 { + A_SEQUENCE_OF(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P61_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P62 { + A_SEQUENCE_OF(struct S1AP_LAI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P62_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P63 { + A_SEQUENCE_OF(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P63_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P64 { + A_SEQUENCE_OF(struct S1AP_ListeningSubframePattern_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P64_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P65 { + A_SEQUENCE_OF(struct S1AP_LoggedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P65_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P66 { + A_SEQUENCE_OF(struct S1AP_LoggedMBSFNMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P66_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P67 { + A_SEQUENCE_OF(struct S1AP_M3Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P67_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P68 { + A_SEQUENCE_OF(struct S1AP_M4Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P68_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P69 { + A_SEQUENCE_OF(struct S1AP_M5Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P69_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P70 { + A_SEQUENCE_OF(struct S1AP_M6Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P70_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P71 { + A_SEQUENCE_OF(struct S1AP_M7Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P71_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P72 { + A_SEQUENCE_OF(struct S1AP_MDT_Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P72_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P73 { + A_SEQUENCE_OF(struct S1AP_MBSFN_ResultToLogInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P73_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P74 { + A_SEQUENCE_OF(struct S1AP_MutingPatternInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P74_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P75 { + A_SEQUENCE_OF(struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P75_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P76 { + A_SEQUENCE_OF(struct S1AP_PagingAttemptInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P76_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P77 { + A_SEQUENCE_OF(struct S1AP_Paging_eDRXInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P77_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P78 { + A_SEQUENCE_OF(struct S1AP_M1PeriodicReporting_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P78_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P79 { + A_SEQUENCE_OF(struct S1AP_ProSeAuthorized_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P79_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P80 { + A_SEQUENCE_OF(struct S1AP_RecommendedCellsForPaging_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P80_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P81 { + A_SEQUENCE_OF(struct S1AP_RecommendedCellsForPagingItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P81_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P82 { + A_SEQUENCE_OF(struct S1AP_RecommendedENBsForPaging_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P82_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P83 { + A_SEQUENCE_OF(struct S1AP_RecommendedENBItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P83_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P84 { + A_SEQUENCE_OF(struct S1AP_RequestType_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P84_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P85 { + A_SEQUENCE_OF(struct S1AP_RIMTransfer_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P85_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P86 { + A_SEQUENCE_OF(struct S1AP_RLFReportInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P86_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P87 { + A_SEQUENCE_OF(struct S1AP_SecurityContext_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P87_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P88 { + A_SEQUENCE_OF(struct S1AP_SONInformationReply_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P88_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P89 { + A_SEQUENCE_OF(struct S1AP_SONConfigurationTransfer_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P89_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P90 { + A_SEQUENCE_OF(struct S1AP_SynchronisationInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P90_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P91 { + A_SEQUENCE_OF(struct S1AP_SourceeNB_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P91_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P92 { + A_SEQUENCE_OF(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P92_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P93 { + A_SEQUENCE_OF(struct S1AP_ServedGUMMEIsItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P93_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P94 { + A_SEQUENCE_OF(struct S1AP_SupportedTAs_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P94_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P95 { + A_SEQUENCE_OF(struct S1AP_TimeSynchronisationInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P95_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P96 { + A_SEQUENCE_OF(struct S1AP_S_TMSI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P96_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P97 { + A_SEQUENCE_OF(struct S1AP_TAIBasedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P97_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P98 { + A_SEQUENCE_OF(struct S1AP_TAI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P98_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P99 { + A_SEQUENCE_OF(struct S1AP_TAI_Broadcast_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P99_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P100 { + A_SEQUENCE_OF(struct S1AP_TAI_Cancelled_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P100_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P101 { + A_SEQUENCE_OF(struct S1AP_TABasedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P101_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P102 { + A_SEQUENCE_OF(struct S1AP_CompletedCellinTAI_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P102_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P103 { + A_SEQUENCE_OF(struct S1AP_TargeteNB_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P103_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P104 { + A_SEQUENCE_OF(struct S1AP_TargetRNC_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P104_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P105 { + A_SEQUENCE_OF(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P105_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P106 { + A_SEQUENCE_OF(struct S1AP_M1ThresholdEventA2_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P106_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P107 { + A_SEQUENCE_OF(struct S1AP_TraceActivation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P107_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P108 { + A_SEQUENCE_OF(struct S1AP_Tunnel_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P108_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P109 { + A_SEQUENCE_OF(struct S1AP_UEAggregate_MaximumBitrates_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P109_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P110 { + A_SEQUENCE_OF(struct S1AP_UE_S1AP_ID_pair_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P110_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P111 { + A_SEQUENCE_OF(struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P111_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P112 { + A_SEQUENCE_OF(struct S1AP_UESecurityCapabilities_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P112_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P113 { + A_SEQUENCE_OF(struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P113_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P114 { + A_SEQUENCE_OF(struct S1AP_UL_CP_SecurityInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P114_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P115 { + A_SEQUENCE_OF(struct S1AP_UserLocationInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P115_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P116 { + A_SEQUENCE_OF(struct S1AP_V2XServicesAuthorized_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P116_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P117 { + A_SEQUENCE_OF(struct S1AP_X2TNLConfigurationInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P117_t; +typedef struct S1AP_ProtocolExtensionContainer_6602P118 { + A_SEQUENCE_OF(struct S1AP_ENBX2ExtTLA_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolExtensionContainer_6602P118_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P0; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P0_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P0_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P1; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P1_specs_3; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P1_3[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P2; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P2_specs_5; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P2_5[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P3; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P3_specs_7; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P3_7[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P4; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P4_specs_9; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P4_9[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P5; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P5_specs_11; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P5_11[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P6; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P6_specs_13; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P6_13[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P7; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P7_specs_15; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P7_15[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P8; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P8_specs_17; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P8_17[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P9; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P9_specs_19; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P9_19[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P9_constr_19; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P10; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P10_specs_21; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P10_21[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P10_constr_21; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P11; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P11_specs_23; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P11_23[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P11_constr_23; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P12; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P12_specs_25; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P12_25[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P12_constr_25; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P13; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P13_specs_27; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P13_27[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P13_constr_27; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P14; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P14_specs_29; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P14_29[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P14_constr_29; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P15; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P15_specs_31; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P15_31[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P15_constr_31; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P16; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P16_specs_33; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P16_33[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P16_constr_33; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P17; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P17_specs_35; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P17_35[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P17_constr_35; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P18; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P18_specs_37; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P18_37[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P18_constr_37; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P19; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P19_specs_39; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P19_39[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P19_constr_39; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P20; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P20_specs_41; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P20_41[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P20_constr_41; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P21; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P21_specs_43; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P21_43[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P21_constr_43; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P22; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P22_specs_45; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P22_45[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P22_constr_45; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P23; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P23_specs_47; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P23_47[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P23_constr_47; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P24; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P24_specs_49; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P24_49[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P24_constr_49; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P25; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P25_specs_51; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P25_51[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P25_constr_51; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P26; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P26_specs_53; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P26_53[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P26_constr_53; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P27; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P27_specs_55; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P27_55[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P27_constr_55; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P28; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P28_specs_57; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P28_57[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P28_constr_57; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P29; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P29_specs_59; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P29_59[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P29_constr_59; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P30; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P30_specs_61; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P30_61[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P30_constr_61; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P31; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P31_specs_63; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P31_63[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P31_constr_63; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P32; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P32_specs_65; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P32_65[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P32_constr_65; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P33; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P33_specs_67; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P33_67[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P33_constr_67; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P34; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P34_specs_69; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P34_69[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P34_constr_69; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P35; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P35_specs_71; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P35_71[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P35_constr_71; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P36; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P36_specs_73; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P36_73[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P36_constr_73; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P37; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P37_specs_75; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P37_75[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P37_constr_75; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P38; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P38_specs_77; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P38_77[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P38_constr_77; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P39; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P39_specs_79; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P39_79[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P39_constr_79; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P40; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P40_specs_81; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P40_81[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P40_constr_81; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P41; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P41_specs_83; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P41_83[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P41_constr_83; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P42; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P42_specs_85; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P42_85[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P42_constr_85; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P43; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P43_specs_87; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P43_87[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P43_constr_87; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P44; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P44_specs_89; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P44_89[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P44_constr_89; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P45; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P45_specs_91; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P45_91[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P45_constr_91; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P46; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P46_specs_93; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P46_93[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P46_constr_93; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P47; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P47_specs_95; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P47_95[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P47_constr_95; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P48; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P48_specs_97; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P48_97[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P48_constr_97; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P49; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P49_specs_99; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P49_99[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P49_constr_99; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P50; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P50_specs_101; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P50_101[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P50_constr_101; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P51; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P51_specs_103; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P51_103[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P51_constr_103; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P52; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P52_specs_105; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P52_105[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P52_constr_105; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P53; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P53_specs_107; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P53_107[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P53_constr_107; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P54; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P54_specs_109; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P54_109[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P54_constr_109; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P55; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P55_specs_111; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P55_111[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P55_constr_111; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P56; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P56_specs_113; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P56_113[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P56_constr_113; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P57; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P57_specs_115; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P57_115[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P57_constr_115; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P58; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P58_specs_117; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P58_117[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P58_constr_117; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P59; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P59_specs_119; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P59_119[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P59_constr_119; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P60; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P60_specs_121; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P60_121[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P60_constr_121; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P61; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P61_specs_123; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P61_123[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P61_constr_123; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P62; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P62_specs_125; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P62_125[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P62_constr_125; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P63; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P63_specs_127; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P63_127[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P63_constr_127; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P64; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P64_specs_129; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P64_129[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P64_constr_129; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P65; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P65_specs_131; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P65_131[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P65_constr_131; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P66; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P66_specs_133; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P66_133[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P66_constr_133; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P67; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P67_specs_135; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P67_135[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P67_constr_135; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P68; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P68_specs_137; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P68_137[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P68_constr_137; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P69; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P69_specs_139; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P69_139[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P69_constr_139; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P70; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P70_specs_141; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P70_141[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P70_constr_141; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P71; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P71_specs_143; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P71_143[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P71_constr_143; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P72; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P72_specs_145; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P72_145[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P72_constr_145; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P73; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P73_specs_147; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P73_147[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P73_constr_147; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P74; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P74_specs_149; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P74_149[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P74_constr_149; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P75; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P75_specs_151; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P75_151[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P75_constr_151; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P76; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P76_specs_153; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P76_153[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P76_constr_153; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P77; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P77_specs_155; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P77_155[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P77_constr_155; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P78; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P78_specs_157; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P78_157[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P78_constr_157; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P79; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P79_specs_159; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P79_159[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P79_constr_159; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P80; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P80_specs_161; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P80_161[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P80_constr_161; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P81; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P81_specs_163; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P81_163[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P81_constr_163; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P82; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P82_specs_165; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P82_165[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P82_constr_165; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P83; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P83_specs_167; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P83_167[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P83_constr_167; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P84; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P84_specs_169; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P84_169[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P84_constr_169; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P85; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P85_specs_171; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P85_171[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P85_constr_171; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P86; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P86_specs_173; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P86_173[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P86_constr_173; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P87; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P87_specs_175; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P87_175[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P87_constr_175; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P88; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P88_specs_177; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P88_177[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P88_constr_177; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P89; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P89_specs_179; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P89_179[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P89_constr_179; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P90; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P90_specs_181; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P90_181[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P90_constr_181; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P91; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P91_specs_183; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P91_183[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P91_constr_183; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P92; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P92_specs_185; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P92_185[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P92_constr_185; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P93; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P93_specs_187; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P93_187[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P93_constr_187; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P94; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P94_specs_189; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P94_189[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P94_constr_189; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P95; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P95_specs_191; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P95_191[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P95_constr_191; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P96; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P96_specs_193; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P96_193[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P96_constr_193; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P97; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P97_specs_195; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P97_195[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P97_constr_195; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P98; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P98_specs_197; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P98_197[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P98_constr_197; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P99; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P99_specs_199; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P99_199[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P99_constr_199; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P100; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P100_specs_201; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P100_201[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P100_constr_201; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P101; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P101_specs_203; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P101_203[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P101_constr_203; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P102; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P102_specs_205; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P102_205[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P102_constr_205; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P103; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P103_specs_207; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P103_207[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P103_constr_207; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P104; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P104_specs_209; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P104_209[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P104_constr_209; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P105; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P105_specs_211; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P105_211[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P105_constr_211; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P106; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P106_specs_213; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P106_213[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P106_constr_213; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P107; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P107_specs_215; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P107_215[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P107_constr_215; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P108; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P108_specs_217; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P108_217[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P108_constr_217; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P109; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P109_specs_219; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P109_219[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P109_constr_219; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P110; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P110_specs_221; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P110_221[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P110_constr_221; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P111; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P111_specs_223; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P111_223[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P111_constr_223; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P112; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P112_specs_225; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P112_225[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P112_constr_225; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P113; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P113_specs_227; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P113_227[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P113_constr_227; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P114; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P114_specs_229; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P114_229[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P114_constr_229; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P115; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P115_specs_231; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P115_231[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P115_constr_231; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P116; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P116_specs_233; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P116_233[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P116_constr_233; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P117; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P117_specs_235; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P117_235[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P117_constr_235; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionContainer_6602P118; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolExtensionContainer_6602P118_specs_237; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolExtensionContainer_6602P118_237[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionContainer_6602P118_constr_237; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolExtensionContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.c b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.c new file mode 100644 index 0000000000..5183ec0078 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.c @@ -0,0 +1,22083 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProtocolExtensionField.h" + +static const long asn_VAL_1_S1AP_id_Data_Forwarding_Not_Possible = 143; +static const long asn_VAL_1_S1AP_ignore = 1; +static const long asn_VAL_1_S1AP_optional = 0; +static const long asn_VAL_2_S1AP_id_BearerType = 233; +static const long asn_VAL_2_S1AP_reject = 0; +static const long asn_VAL_2_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_1_S1AP_id_Data_Forwarding_Not_Possible }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_1_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_Data_Forwarding_Not_Possible }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_1_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_2_S1AP_id_BearerType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_2_S1AP_reject }, + { "&Extension", aioc__type, &asn_DEF_S1AP_BearerType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_2_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_1[] = { + { 2, 4, asn_IOS_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_1_rows } +}; +static const long asn_VAL_3_S1AP_id_Correlation_ID = 156; +static const long asn_VAL_3_S1AP_ignore = 1; +static const long asn_VAL_3_S1AP_optional = 0; +static const long asn_VAL_4_S1AP_id_SIPTO_Correlation_ID = 183; +static const long asn_VAL_4_S1AP_ignore = 1; +static const long asn_VAL_4_S1AP_optional = 0; +static const long asn_VAL_5_S1AP_id_BearerType = 233; +static const long asn_VAL_5_S1AP_reject = 0; +static const long asn_VAL_5_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_3_S1AP_id_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_3_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_3_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_4_S1AP_id_SIPTO_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_4_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_4_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_5_S1AP_id_BearerType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_5_S1AP_reject }, + { "&Extension", aioc__type, &asn_DEF_S1AP_BearerType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_5_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_1[] = { + { 3, 4, asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_1_rows } +}; +static const long asn_VAL_6_S1AP_id_TransportInformation = 185; +static const long asn_VAL_6_S1AP_reject = 0; +static const long asn_VAL_6_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_6_S1AP_id_TransportInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_6_S1AP_reject }, + { "&Extension", aioc__type, &asn_DEF_S1AP_TransportInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_6_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_1_rows } +}; +static const long asn_VAL_7_S1AP_id_Correlation_ID = 156; +static const long asn_VAL_7_S1AP_ignore = 1; +static const long asn_VAL_7_S1AP_optional = 0; +static const long asn_VAL_8_S1AP_id_SIPTO_Correlation_ID = 183; +static const long asn_VAL_8_S1AP_ignore = 1; +static const long asn_VAL_8_S1AP_optional = 0; +static const long asn_VAL_9_S1AP_id_BearerType = 233; +static const long asn_VAL_9_S1AP_reject = 0; +static const long asn_VAL_9_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_7_S1AP_id_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_7_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_7_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_8_S1AP_id_SIPTO_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_8_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_8_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_9_S1AP_id_BearerType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_9_S1AP_reject }, + { "&Extension", aioc__type, &asn_DEF_S1AP_BearerType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_9_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_1[] = { + { 3, 4, asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_1_rows } +}; +static const long asn_VAL_10_S1AP_id_ULCOUNTValueExtended = 179; +static const long asn_VAL_10_S1AP_ignore = 1; +static const long asn_VAL_10_S1AP_optional = 0; +static const long asn_VAL_11_S1AP_id_DLCOUNTValueExtended = 180; +static const long asn_VAL_11_S1AP_ignore = 1; +static const long asn_VAL_11_S1AP_optional = 0; +static const long asn_VAL_12_S1AP_id_ReceiveStatusOfULPDCPSDUsExtended = 181; +static const long asn_VAL_12_S1AP_ignore = 1; +static const long asn_VAL_12_S1AP_optional = 0; +static const long asn_VAL_13_S1AP_id_ULCOUNTValuePDCP_SNlength18 = 217; +static const long asn_VAL_13_S1AP_ignore = 1; +static const long asn_VAL_13_S1AP_optional = 0; +static const long asn_VAL_14_S1AP_id_DLCOUNTValuePDCP_SNlength18 = 218; +static const long asn_VAL_14_S1AP_ignore = 1; +static const long asn_VAL_14_S1AP_optional = 0; +static const long asn_VAL_15_S1AP_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 = 219; +static const long asn_VAL_15_S1AP_ignore = 1; +static const long asn_VAL_15_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_10_S1AP_id_ULCOUNTValueExtended }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_10_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_COUNTValueExtended }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_10_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_11_S1AP_id_DLCOUNTValueExtended }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_11_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_COUNTValueExtended }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_11_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_12_S1AP_id_ReceiveStatusOfULPDCPSDUsExtended }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_12_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_12_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_13_S1AP_id_ULCOUNTValuePDCP_SNlength18 }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_13_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_COUNTvaluePDCP_SNlength18 }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_13_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_14_S1AP_id_DLCOUNTValuePDCP_SNlength18 }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_14_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_COUNTvaluePDCP_SNlength18 }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_14_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_15_S1AP_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_15_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_15_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_1[] = { + { 6, 4, asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_1_rows } +}; +static const long asn_VAL_16_S1AP_id_M3Configuration = 171; +static const long asn_VAL_16_S1AP_ignore = 1; +static const long asn_VAL_16_S1AP_conditional = 1; +static const long asn_VAL_17_S1AP_id_M4Configuration = 172; +static const long asn_VAL_17_S1AP_ignore = 1; +static const long asn_VAL_17_S1AP_conditional = 1; +static const long asn_VAL_18_S1AP_id_M5Configuration = 173; +static const long asn_VAL_18_S1AP_ignore = 1; +static const long asn_VAL_18_S1AP_conditional = 1; +static const long asn_VAL_19_S1AP_id_MDT_Location_Info = 174; +static const long asn_VAL_19_S1AP_ignore = 1; +static const long asn_VAL_19_S1AP_optional = 0; +static const long asn_VAL_20_S1AP_id_M6Configuration = 220; +static const long asn_VAL_20_S1AP_ignore = 1; +static const long asn_VAL_20_S1AP_conditional = 1; +static const long asn_VAL_21_S1AP_id_M7Configuration = 221; +static const long asn_VAL_21_S1AP_ignore = 1; +static const long asn_VAL_21_S1AP_conditional = 1; +static const asn_ioc_cell_t asn_IOS_S1AP_ImmediateMDT_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_16_S1AP_id_M3Configuration }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_16_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_M3Configuration }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_16_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_17_S1AP_id_M4Configuration }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_17_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_M4Configuration }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_17_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_18_S1AP_id_M5Configuration }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_18_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_M5Configuration }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_18_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_19_S1AP_id_MDT_Location_Info }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_19_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_MDT_Location_Info }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_19_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_20_S1AP_id_M6Configuration }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_20_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_M6Configuration }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_20_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_21_S1AP_id_M7Configuration }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_21_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_M7Configuration }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_21_S1AP_conditional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ImmediateMDT_ExtIEs_1[] = { + { 6, 4, asn_IOS_S1AP_ImmediateMDT_ExtIEs_1_rows } +}; +static const long asn_VAL_22_S1AP_id_Time_UE_StayedInCell_EnhancedGranularity = 167; +static const long asn_VAL_22_S1AP_ignore = 1; +static const long asn_VAL_22_S1AP_optional = 0; +static const long asn_VAL_23_S1AP_id_HO_Cause = 168; +static const long asn_VAL_23_S1AP_ignore = 1; +static const long asn_VAL_23_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_22_S1AP_id_Time_UE_StayedInCell_EnhancedGranularity }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_22_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_22_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_23_S1AP_id_HO_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_23_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_23_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_1[] = { + { 2, 4, asn_IOS_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_1_rows } +}; +static const long asn_VAL_24_S1AP_id_SignallingBasedMDTPLMNList = 178; +static const long asn_VAL_24_S1AP_ignore = 1; +static const long asn_VAL_24_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_MDT_Configuration_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_24_S1AP_id_SignallingBasedMDTPLMNList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_24_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_MDTPLMNList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_24_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_MDT_Configuration_ExtIEs_1[] = { + { 1, 4, asn_IOS_S1AP_MDT_Configuration_ExtIEs_1_rows } +}; +static const long asn_VAL_25_S1AP_id_ProSeUEtoNetworkRelaying = 216; +static const long asn_VAL_25_S1AP_ignore = 1; +static const long asn_VAL_25_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_ProSeAuthorized_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_25_S1AP_id_ProSeUEtoNetworkRelaying }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_25_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_ProSeUEtoNetworkRelaying }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_25_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ProSeAuthorized_ExtIEs_1[] = { + { 1, 4, asn_IOS_S1AP_ProSeAuthorized_ExtIEs_1_rows } +}; +static const long asn_VAL_26_S1AP_id_Time_Synchronisation_Info = 149; +static const long asn_VAL_26_S1AP_ignore = 1; +static const long asn_VAL_26_S1AP_optional = 0; +static const long asn_VAL_27_S1AP_id_Muting_Pattern_Information = 208; +static const long asn_VAL_27_S1AP_ignore = 1; +static const long asn_VAL_27_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_SONInformationReply_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_26_S1AP_id_Time_Synchronisation_Info }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_26_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_TimeSynchronisationInfo }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_26_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_27_S1AP_id_Muting_Pattern_Information }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_27_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_MutingPatternInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_27_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_SONInformationReply_ExtIEs_1[] = { + { 2, 4, asn_IOS_S1AP_SONInformationReply_ExtIEs_1_rows } +}; +static const long asn_VAL_28_S1AP_id_x2TNLConfigurationInfo = 152; +static const long asn_VAL_28_S1AP_ignore = 1; +static const long asn_VAL_28_S1AP_conditional = 1; +static const long asn_VAL_29_S1AP_id_Synchronisation_Information = 209; +static const long asn_VAL_29_S1AP_ignore = 1; +static const long asn_VAL_29_S1AP_conditional = 1; +static const asn_ioc_cell_t asn_IOS_S1AP_SONConfigurationTransfer_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_28_S1AP_id_x2TNLConfigurationInfo }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_28_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_X2TNLConfigurationInfo }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_28_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_29_S1AP_id_Synchronisation_Information }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_29_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_SynchronisationInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_29_S1AP_conditional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_SONConfigurationTransfer_ExtIEs_1[] = { + { 2, 4, asn_IOS_S1AP_SONConfigurationTransfer_ExtIEs_1_rows } +}; +static const long asn_VAL_30_S1AP_id_MobilityInformation = 175; +static const long asn_VAL_30_S1AP_ignore = 1; +static const long asn_VAL_30_S1AP_optional = 0; +static const long asn_VAL_31_S1AP_id_uE_HistoryInformationFromTheUE = 194; +static const long asn_VAL_31_S1AP_ignore = 1; +static const long asn_VAL_31_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_30_S1AP_id_MobilityInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_30_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_MobilityInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_30_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_31_S1AP_id_uE_HistoryInformationFromTheUE }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_31_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_UE_HistoryInformationFromTheUE }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_31_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_1[] = { + { 2, 4, asn_IOS_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_1_rows } +}; +static const long asn_VAL_32_S1AP_id_RAT_Type = 232; +static const long asn_VAL_32_S1AP_reject = 0; +static const long asn_VAL_32_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_SupportedTAs_Item_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_32_S1AP_id_RAT_Type }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_32_S1AP_reject }, + { "&Extension", aioc__type, &asn_DEF_S1AP_RAT_Type }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_32_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_SupportedTAs_Item_ExtIEs_1[] = { + { 1, 4, asn_IOS_S1AP_SupportedTAs_Item_ExtIEs_1_rows } +}; +static const long asn_VAL_33_S1AP_id_Muting_Availability_Indication = 207; +static const long asn_VAL_33_S1AP_ignore = 1; +static const long asn_VAL_33_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_TimeSynchronisationInfo_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_33_S1AP_id_Muting_Availability_Indication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_33_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_MutingAvailabilityIndication }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_33_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_TimeSynchronisationInfo_ExtIEs_1[] = { + { 1, 4, asn_IOS_S1AP_TimeSynchronisationInfo_ExtIEs_1_rows } +}; +static const long asn_VAL_34_S1AP_id_MDTConfiguration = 162; +static const long asn_VAL_34_S1AP_ignore = 1; +static const long asn_VAL_34_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_TraceActivation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_34_S1AP_id_MDTConfiguration }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_34_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_MDT_Configuration }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_34_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_TraceActivation_ExtIEs_1[] = { + { 1, 4, asn_IOS_S1AP_TraceActivation_ExtIEs_1_rows } +}; +static const long asn_VAL_35_S1AP_id_eNBX2ExtendedTransportLayerAddresses = 153; +static const long asn_VAL_35_S1AP_ignore = 1; +static const long asn_VAL_35_S1AP_optional = 0; +static const long asn_VAL_36_S1AP_id_eNBIndirectX2TransportLayerAddresses = 193; +static const long asn_VAL_36_S1AP_ignore = 1; +static const long asn_VAL_36_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_X2TNLConfigurationInfo_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_35_S1AP_id_eNBX2ExtendedTransportLayerAddresses }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_35_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_ENBX2ExtTLAs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_35_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolExtensionID, &asn_VAL_36_S1AP_id_eNBIndirectX2TransportLayerAddresses }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_36_S1AP_ignore }, + { "&Extension", aioc__type, &asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_36_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_X2TNLConfigurationInfo_ExtIEs_1[] = { + { 2, 4, asn_IOS_S1AP_X2TNLConfigurationInfo_ExtIEs_1_rows } +}; +static int +memb_S1AP_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemHOReq_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemHOReq_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemBearerSUReqExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemBearerSUReqExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeModifyItemBearerModReqExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeModifyItemBearerModReqExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemCtxtSUReqExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemCtxtSUReqExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Bearers_SubjectToStatusTransfer_ItemExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_Bearers_SubjectToStatusTransfer_ItemExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ImmediateMDT_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ImmediateMDT_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ImmediateMDT_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ImmediateMDT_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ImmediateMDT_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ImmediateMDT_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_LastVisitedEUTRANCellInformation_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_LastVisitedEUTRANCellInformation_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MDT_Configuration_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MDT_Configuration_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MDT_Configuration_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MDT_Configuration_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MDT_Configuration_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MDT_Configuration_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ProSeAuthorized_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ProSeAuthorized_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ProSeAuthorized_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ProSeAuthorized_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ProSeAuthorized_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ProSeAuthorized_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SONInformationReply_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SONInformationReply_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SONInformationReply_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SONInformationReply_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SONInformationReply_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SONInformationReply_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SONConfigurationTransfer_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SONConfigurationTransfer_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SONConfigurationTransfer_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SONConfigurationTransfer_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SupportedTAs_Item_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SupportedTAs_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SupportedTAs_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SupportedTAs_Item_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SupportedTAs_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SupportedTAs_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_TimeSynchronisationInfo_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TimeSynchronisationInfo_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TimeSynchronisationInfo_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_TimeSynchronisationInfo_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TimeSynchronisationInfo_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TimeSynchronisationInfo_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_TraceActivation_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TraceActivation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TraceActivation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_TraceActivation_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TraceActivation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TraceActivation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2TNLConfigurationInfo_ExtIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_X2TNLConfigurationInfo_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2TNLConfigurationInfo_ExtIEs_S1AP_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_X2TNLConfigurationInfo_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_extensionValue_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_extensionValue_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_2 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_6 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_10 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_14 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_15 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_16 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_16 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_18 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_19 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_20 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_20 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_22 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_23 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_24 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_26 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_27 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_28 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_28 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_30 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_31 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_31 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_32 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_32 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_34 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_35 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_36 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_38 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_39 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_40 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_40 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_42 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_43 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_44 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_44 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_46 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_46 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_47 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_48 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_50 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_51 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_51 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_52 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_52 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_54 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_54 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_55 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_55 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_56 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_56 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_58 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_58 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_59 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_60 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_62 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_63 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_63 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_64 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_64 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_66 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_66 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_67 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_67 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_68 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_68 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_70 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_70 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_71 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_72 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_74 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_75 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_75 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_76 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_76 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_78 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_78 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_79 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_79 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_80 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_80 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_82 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_82 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_83 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_84 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_86 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_87 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_87 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_88 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_88 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_90 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_90 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_91 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_91 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_92 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_92 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_94 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_94 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_95 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_96 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_98 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_99 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_99 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_100 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_100 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_102 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_102 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_103 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_103 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_104 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_104 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_106 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_106 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_107 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_107 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_108 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_108 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_110 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_110 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_111 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_111 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_112 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_112 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_114 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_114 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_115 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_115 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_116 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_116 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_118 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_118 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_119 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_119 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_120 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_120 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_122 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_122 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_123 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_123 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_124 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_124 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_126 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_126 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_127 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_127 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_128 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_128 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_130 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_130 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_131 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_131 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_132 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_132 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_134 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_134 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_135 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_135 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_136 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_136 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_138 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_138 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_139 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_139 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_140 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_140 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_142 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_142 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_143 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_143 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_144 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_144 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_146 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_146 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_147 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_147 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_148 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_148 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_150 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_150 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_151 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_151 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_152 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_152 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_154 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_154 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_155 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_155 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_156 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_156 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_158 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_158 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_159 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_159 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_160 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_160 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_162 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_162 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_163 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_163 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_164 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_164 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_166 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_166 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_167 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_167 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_168 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_168 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_170 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_170 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_171 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_171 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_172 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_172 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_174 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_174 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_175 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_175 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_176 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_176 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_178 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_178 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_179 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_179 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_180 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_180 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_182 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_182 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_183 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_183 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_184 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_184 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_186 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_186 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_187 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_187 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_188 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_188 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_190 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_190 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_191 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_191 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_192 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_192 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_194 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_194 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_195 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_195 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_196 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_196 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_198 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_198 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_199 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_199 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_200 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_200 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_202 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_202 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_203 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_203 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_204 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_204 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_206 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_206 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_207 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_207 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_208 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_208 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_210 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_210 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_211 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_211 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_212 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_212 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_214 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_214 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_215 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_215 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_216 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_216 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_218 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_218 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_219 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_219 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_220 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_220 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_222 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_222 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_223 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_223 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_224 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_224 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_226 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_226 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_227 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_227 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_228 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_228 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_230 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_230 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_231 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_231 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_232 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_232 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_234 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_234 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_235 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_235 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_236 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_236 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_238 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_238 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_239 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_239 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_240 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_240 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_242 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_242 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_243 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_243 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_244 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_244 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_246 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_246 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_247 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_247 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_248 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_248 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_250 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_250 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_251 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_251 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_252 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_252 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_254 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_254 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_255 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_255 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_256 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_256 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_258 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_258 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_259 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_259 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_260 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_260 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_262 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_262 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_263 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_263 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_264 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_264 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_266 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_266 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_267 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_267 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_268 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_268 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_270 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_270 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_271 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_271 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_272 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_272 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_274 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_274 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_275 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_275 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_276 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_276 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_278 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_278 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_279 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_279 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_280 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_280 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_282 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_282 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_283 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_283 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_284 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_284 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_286 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_286 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_287 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_287 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_288 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_288 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_290 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_290 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_291 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_291 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_292 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_292 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_294 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_294 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_295 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_295 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_296 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_296 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_298 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_298 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_299 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_299 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_300 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_300 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_302 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_302 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_303 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_303 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_304 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_304 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_306 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_306 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_307 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_307 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_308 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_308 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_310 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_310 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_311 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_311 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_312 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_312 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_314 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_314 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_315 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_315 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_316 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_316 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_318 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_318 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_319 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_319 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_320 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_320 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_322 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_322 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_323 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_323 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_324 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_324 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_326 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_326 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_327 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_327 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_328 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_328 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_330 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_330 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_331 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_331 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_332 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_332 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_334 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_334 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_335 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_335 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_336 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_336 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_338 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_338 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_339 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_339 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_340 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_340 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_342 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_342 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_343 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_343 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_344 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_344 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_346 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_346 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_347 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_347 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_348 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_348 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_350 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_350 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_351 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_351 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_352 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_352 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_354 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_354 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_355 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_355 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_356 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_356 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_358 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_358 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_359 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_359 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_360 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_360 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_362 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_362 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_363 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_363 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_364 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_364 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_366 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_366 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_367 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_367 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_368 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_368 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_370 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_370 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_371 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_371 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_372 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_372 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_374 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_374 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_375 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_375 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_376 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_376 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_378 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_378 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_379 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_379 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_380 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_380 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_382 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_382 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_383 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_383 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_384 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_384 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_386 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_386 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_387 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_387 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_388 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_388 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_390 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_390 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_391 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_391 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_392 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_392 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_394 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_394 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_395 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_395 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_396 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_396 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_398 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_398 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_399 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_399 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_400 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_400 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_402 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_402 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_403 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_403 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_404 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_404 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_406 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_406 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_407 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_407 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_408 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_408 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_410 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_410 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_411 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_411 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_412 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_412 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_414 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_414 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_415 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_415 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_416 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_416 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_418 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_418 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_419 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_419 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_420 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_420 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_422 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_422 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_423 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_423 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_424 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_424 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_426 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_426 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_427 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_427 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_428 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_428 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_430 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_430 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_431 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_431 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_432 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_432 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_434 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_434 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_435 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_435 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_436 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_436 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_438 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_438 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_439 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_439 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_440 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_440 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_442 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_442 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_443 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_443 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_444 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_444 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_446 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_446 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_447 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_447 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_448 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_448 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_450 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_450 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_451 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_451 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_452 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_452 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_454 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_454 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_455 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_455 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_456 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_456 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_458 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_458 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_459 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_459 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_460 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_460 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_462 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_462 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_463 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_463 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_464 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_464 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_466 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_466 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_467 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_467 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_468 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_468 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_470 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_470 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_471 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_471 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_472 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_472 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_474 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_474 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_475 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_475 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_extensionValue_constr_476 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_extensionValue_constr_476 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_4 = { + sizeof(struct S1AP_E_RABDataForwardingItem_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABDataForwardingItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABDataForwardingItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABDataForwardingItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_4 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABDataForwardingItem_ExtIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABDataForwardingItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_2, &asn_PER_memb_S1AP_id_constr_2, memb_S1AP_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABDataForwardingItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_3, &asn_PER_memb_S1AP_criticality_constr_3, memb_S1AP_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABDataForwardingItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_4, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_4, &asn_PER_memb_S1AP_extensionValue_constr_4, memb_S1AP_extensionValue_constraint_1 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABDataForwardingItem_ExtIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABDataForwardingItem_ExtIEs_specs_1 = { + sizeof(struct S1AP_E_RABDataForwardingItem_ExtIEs), + offsetof(struct S1AP_E_RABDataForwardingItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABDataForwardingItem_ExtIEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs = { + "E-RABDataForwardingItem-ExtIEs", + "E-RABDataForwardingItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs_tags_1, + sizeof(asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs_tags_1) + /sizeof(asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs_tags_1) + /sizeof(asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABDataForwardingItem_ExtIEs_1, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABDataForwardingItem_ExtIEs_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue, choice.Data_Forwarding_Not_Possible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Data_Forwarding_Not_Possible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Data-Forwarding-Not-Possible" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue, choice.BearerType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_BearerType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BearerType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_8[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 1 }, /* Data-Forwarding-Not-Possible */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, -1, 0 } /* BearerType */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_8 = { + sizeof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_8, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_8 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_8, + 2, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_6, &asn_PER_memb_S1AP_id_constr_6, memb_S1AP_id_constraint_5 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABToBeSetupItemHOReq_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_7, &asn_PER_memb_S1AP_criticality_constr_7, memb_S1AP_criticality_constraint_5 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_8, + select_E_RABToBeSetupItemHOReq_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_8, &asn_PER_memb_S1AP_extensionValue_constr_8, memb_S1AP_extensionValue_constraint_5 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_specs_5 = { + sizeof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs), + offsetof(struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs = { + "E-RABToBeSetupItemHOReq-ExtIEs", + "E-RABToBeSetupItemHOReq-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_tags_5, + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_tags_5) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_tags_5[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_tags_5, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_tags_5) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_5, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_specs_5 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_12 = { + sizeof(struct S1AP_E_RABAdmittedItem_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABAdmittedItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABAdmittedItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABAdmittedItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_12 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABAdmittedItem_ExtIEs_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_10, &asn_PER_memb_S1AP_id_constr_10, memb_S1AP_id_constraint_9 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_11, &asn_PER_memb_S1AP_criticality_constr_11, memb_S1AP_criticality_constraint_9 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_12, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_12, &asn_PER_memb_S1AP_extensionValue_constr_12, memb_S1AP_extensionValue_constraint_9 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABAdmittedItem_ExtIEs_tag2el_9[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABAdmittedItem_ExtIEs_specs_9 = { + sizeof(struct S1AP_E_RABAdmittedItem_ExtIEs), + offsetof(struct S1AP_E_RABAdmittedItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABAdmittedItem_ExtIEs_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs = { + "E-RABAdmittedItem-ExtIEs", + "E-RABAdmittedItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs_tags_9, + sizeof(asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs_tags_9) + /sizeof(asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs_tags_9[0]), /* 1 */ + asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs_tags_9, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs_tags_9) + /sizeof(asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABAdmittedItem_ExtIEs_9, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABAdmittedItem_ExtIEs_specs_9 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_16 = { + sizeof(struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue), + offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_16 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_14, &asn_PER_memb_S1AP_id_constr_14, memb_S1AP_id_constraint_13 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_15, &asn_PER_memb_S1AP_criticality_constr_15, memb_S1AP_criticality_constraint_13 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_16, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_16, &asn_PER_memb_S1AP_extensionValue_constr_16, memb_S1AP_extensionValue_constraint_13 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_tag2el_13[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_specs_13 = { + sizeof(struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs), + offsetof(struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_tag2el_13, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs = { + "E-RABFailedToSetupItemHOReqAckExtIEs", + "E-RABFailedToSetupItemHOReqAckExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_tags_13, + sizeof(asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_tags_13) + /sizeof(asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_tags_13[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_tags_13, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_tags_13) + /sizeof(asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_13, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_specs_13 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_20 = { + sizeof(struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_20 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_20 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_18, &asn_PER_memb_S1AP_id_constr_18, memb_S1AP_id_constraint_17 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_19, &asn_PER_memb_S1AP_criticality_constr_19, memb_S1AP_criticality_constraint_17 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_20, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_20, &asn_PER_memb_S1AP_extensionValue_constr_20, memb_S1AP_extensionValue_constraint_17 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_tag2el_17[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_specs_17 = { + sizeof(struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs), + offsetof(struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_tag2el_17, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs = { + "E-RABToBeSwitchedDLItem-ExtIEs", + "E-RABToBeSwitchedDLItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_tags_17, + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_tags_17) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_tags_17[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_tags_17, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_tags_17) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_17, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_specs_17 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_24 = { + sizeof(struct S1AP_E_RABToBeSwitchedULItem_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABToBeSwitchedULItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSwitchedULItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABToBeSwitchedULItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_24 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedULItem_ExtIEs_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_22, &asn_PER_memb_S1AP_id_constr_22, memb_S1AP_id_constraint_21 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_23, &asn_PER_memb_S1AP_criticality_constr_23, memb_S1AP_criticality_constraint_21 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_24, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_24, &asn_PER_memb_S1AP_extensionValue_constr_24, memb_S1AP_extensionValue_constraint_21 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSwitchedULItem_ExtIEs_tag2el_21[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedULItem_ExtIEs_specs_21 = { + sizeof(struct S1AP_E_RABToBeSwitchedULItem_ExtIEs), + offsetof(struct S1AP_E_RABToBeSwitchedULItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSwitchedULItem_ExtIEs_tag2el_21, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs = { + "E-RABToBeSwitchedULItem-ExtIEs", + "E-RABToBeSwitchedULItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs_tags_21, + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs_tags_21) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs_tags_21[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs_tags_21, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs_tags_21) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSwitchedULItem_ExtIEs_21, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSwitchedULItem_ExtIEs_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue, choice.Correlation_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Correlation_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Correlation-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue, choice.BearerType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_BearerType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BearerType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_28[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, 0, 0 }, /* Correlation-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* BearerType */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_28 = { + sizeof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue), + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_28, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_28 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_28, + 2, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_28 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_26, &asn_PER_memb_S1AP_id_constr_26, memb_S1AP_id_constraint_25 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABToBeSetupItemBearerSUReqExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_27, &asn_PER_memb_S1AP_criticality_constr_27, memb_S1AP_criticality_constraint_25 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_28, + select_E_RABToBeSetupItemBearerSUReqExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_28, &asn_PER_memb_S1AP_extensionValue_constr_28, memb_S1AP_extensionValue_constraint_25 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_tag2el_25[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_specs_25 = { + sizeof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs), + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_tag2el_25, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs = { + "E-RABToBeSetupItemBearerSUReqExtIEs", + "E-RABToBeSetupItemBearerSUReqExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_tags_25, + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_tags_25) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_tags_25[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_tags_25, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_tags_25) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_25, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_specs_25 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_32 = { + sizeof(struct S1AP_E_RABSetupItemBearerSUResExtIEs__extensionValue), + offsetof(struct S1AP_E_RABSetupItemBearerSUResExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABSetupItemBearerSUResExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABSetupItemBearerSUResExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_32 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_32 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemBearerSUResExtIEs_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSUResExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_30, &asn_PER_memb_S1AP_id_constr_30, memb_S1AP_id_constraint_29 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSUResExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_31, &asn_PER_memb_S1AP_criticality_constr_31, memb_S1AP_criticality_constraint_29 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSUResExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_32, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_32, &asn_PER_memb_S1AP_extensionValue_constr_32, memb_S1AP_extensionValue_constraint_29 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupItemBearerSUResExtIEs_tag2el_29[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemBearerSUResExtIEs_specs_29 = { + sizeof(struct S1AP_E_RABSetupItemBearerSUResExtIEs), + offsetof(struct S1AP_E_RABSetupItemBearerSUResExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABSetupItemBearerSUResExtIEs_tag2el_29, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs = { + "E-RABSetupItemBearerSUResExtIEs", + "E-RABSetupItemBearerSUResExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs_tags_29, + sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs_tags_29) + /sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs_tags_29[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs_tags_29, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs_tags_29) + /sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupItemBearerSUResExtIEs_29, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupItemBearerSUResExtIEs_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_36[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs__extensionValue, choice.TransportInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TransportInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TransportInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_36[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* TransportInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_36 = { + sizeof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs__extensionValue), + offsetof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_36, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_36 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_36, + 1, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_34, &asn_PER_memb_S1AP_id_constr_34, memb_S1AP_id_constraint_33 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABToBeModifyItemBearerModReqExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_35, &asn_PER_memb_S1AP_criticality_constr_35, memb_S1AP_criticality_constraint_33 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_36, + select_E_RABToBeModifyItemBearerModReqExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_36, &asn_PER_memb_S1AP_extensionValue_constr_36, memb_S1AP_extensionValue_constraint_33 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_tag2el_33[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_specs_33 = { + sizeof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs), + offsetof(struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_tag2el_33, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs = { + "E-RABToBeModifyItemBearerModReqExtIEs", + "E-RABToBeModifyItemBearerModReqExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_tags_33, + sizeof(asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_tags_33) + /sizeof(asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_tags_33[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_tags_33, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_tags_33) + /sizeof(asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_33, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_specs_33 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_40 = { + sizeof(struct S1AP_E_RABModifyItemBearerModResExtIEs__extensionValue), + offsetof(struct S1AP_E_RABModifyItemBearerModResExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABModifyItemBearerModResExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABModifyItemBearerModResExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_40 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_40 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModResExtIEs_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModResExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_38, &asn_PER_memb_S1AP_id_constr_38, memb_S1AP_id_constraint_37 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModResExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_39, &asn_PER_memb_S1AP_criticality_constr_39, memb_S1AP_criticality_constraint_37 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModResExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_40, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_40, &asn_PER_memb_S1AP_extensionValue_constr_40, memb_S1AP_extensionValue_constraint_37 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyItemBearerModResExtIEs_tag2el_37[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModResExtIEs_specs_37 = { + sizeof(struct S1AP_E_RABModifyItemBearerModResExtIEs), + offsetof(struct S1AP_E_RABModifyItemBearerModResExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABModifyItemBearerModResExtIEs_tag2el_37, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs = { + "E-RABModifyItemBearerModResExtIEs", + "E-RABModifyItemBearerModResExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs_tags_37, + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs_tags_37) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs_tags_37[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs_tags_37, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs_tags_37) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyItemBearerModResExtIEs_37, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyItemBearerModResExtIEs_specs_37 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_44 = { + sizeof(struct S1AP_E_RABReleaseItemBearerRelCompExtIEs__extensionValue), + offsetof(struct S1AP_E_RABReleaseItemBearerRelCompExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABReleaseItemBearerRelCompExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABReleaseItemBearerRelCompExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_44 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_44 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseItemBearerRelCompExtIEs_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseItemBearerRelCompExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_42, &asn_PER_memb_S1AP_id_constr_42, memb_S1AP_id_constraint_41 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseItemBearerRelCompExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_43, &asn_PER_memb_S1AP_criticality_constr_43, memb_S1AP_criticality_constraint_41 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseItemBearerRelCompExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_44, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_44, &asn_PER_memb_S1AP_extensionValue_constr_44, memb_S1AP_extensionValue_constraint_41 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABReleaseItemBearerRelCompExtIEs_tag2el_41[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseItemBearerRelCompExtIEs_specs_41 = { + sizeof(struct S1AP_E_RABReleaseItemBearerRelCompExtIEs), + offsetof(struct S1AP_E_RABReleaseItemBearerRelCompExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABReleaseItemBearerRelCompExtIEs_tag2el_41, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs = { + "E-RABReleaseItemBearerRelCompExtIEs", + "E-RABReleaseItemBearerRelCompExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs_tags_41, + sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs_tags_41) + /sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs_tags_41[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs_tags_41, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs_tags_41) + /sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseItemBearerRelCompExtIEs_41, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseItemBearerRelCompExtIEs_specs_41 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_48[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue, choice.Correlation_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Correlation_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Correlation-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue, choice.BearerType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_BearerType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BearerType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_48[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, 0, 0 }, /* Correlation-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* BearerType */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_48 = { + sizeof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue), + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_48, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_48 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_48, + 2, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_46, &asn_PER_memb_S1AP_id_constr_46, memb_S1AP_id_constraint_45 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABToBeSetupItemCtxtSUReqExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_47, &asn_PER_memb_S1AP_criticality_constr_47, memb_S1AP_criticality_constraint_45 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_48, + select_E_RABToBeSetupItemCtxtSUReqExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_48, &asn_PER_memb_S1AP_extensionValue_constr_48, memb_S1AP_extensionValue_constraint_45 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_tag2el_45[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_specs_45 = { + sizeof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs), + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_tag2el_45, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs = { + "E-RABToBeSetupItemCtxtSUReqExtIEs", + "E-RABToBeSetupItemCtxtSUReqExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_tags_45, + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_tags_45) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_tags_45[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_tags_45, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_tags_45) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_45, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_specs_45 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_52 = { + sizeof(struct S1AP_E_RABSetupItemCtxtSUResExtIEs__extensionValue), + offsetof(struct S1AP_E_RABSetupItemCtxtSUResExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABSetupItemCtxtSUResExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABSetupItemCtxtSUResExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_52 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_52 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemCtxtSUResExtIEs_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSUResExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_50, &asn_PER_memb_S1AP_id_constr_50, memb_S1AP_id_constraint_49 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSUResExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_51, &asn_PER_memb_S1AP_criticality_constr_51, memb_S1AP_criticality_constraint_49 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSUResExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_52, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_52, &asn_PER_memb_S1AP_extensionValue_constr_52, memb_S1AP_extensionValue_constraint_49 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupItemCtxtSUResExtIEs_tag2el_49[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemCtxtSUResExtIEs_specs_49 = { + sizeof(struct S1AP_E_RABSetupItemCtxtSUResExtIEs), + offsetof(struct S1AP_E_RABSetupItemCtxtSUResExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABSetupItemCtxtSUResExtIEs_tag2el_49, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs = { + "E-RABSetupItemCtxtSUResExtIEs", + "E-RABSetupItemCtxtSUResExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs_tags_49, + sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs_tags_49) + /sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs_tags_49[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs_tags_49, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs_tags_49) + /sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupItemCtxtSUResExtIEs_49, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupItemCtxtSUResExtIEs_specs_49 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_56 = { + sizeof(struct S1AP_TAIItemExtIEs__extensionValue), + offsetof(struct S1AP_TAIItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TAIItemExtIEs__extensionValue, present), + sizeof(((struct S1AP_TAIItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_56 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_56 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TAIItemExtIEs_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_54, &asn_PER_memb_S1AP_id_constr_54, memb_S1AP_id_constraint_53 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_55, &asn_PER_memb_S1AP_criticality_constr_55, memb_S1AP_criticality_constraint_53 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_56, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_56, &asn_PER_memb_S1AP_extensionValue_constr_56, memb_S1AP_extensionValue_constraint_53 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAIItemExtIEs_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAIItemExtIEs_tag2el_53[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAIItemExtIEs_specs_53 = { + sizeof(struct S1AP_TAIItemExtIEs), + offsetof(struct S1AP_TAIItemExtIEs, _asn_ctx), + asn_MAP_S1AP_TAIItemExtIEs_tag2el_53, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAIItemExtIEs = { + "TAIItemExtIEs", + "TAIItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAIItemExtIEs_tags_53, + sizeof(asn_DEF_S1AP_TAIItemExtIEs_tags_53) + /sizeof(asn_DEF_S1AP_TAIItemExtIEs_tags_53[0]), /* 1 */ + asn_DEF_S1AP_TAIItemExtIEs_tags_53, /* Same as above */ + sizeof(asn_DEF_S1AP_TAIItemExtIEs_tags_53) + /sizeof(asn_DEF_S1AP_TAIItemExtIEs_tags_53[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAIItemExtIEs_53, + 3, /* Elements count */ + &asn_SPC_S1AP_TAIItemExtIEs_specs_53 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_60 = { + sizeof(struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_60 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_58, &asn_PER_memb_S1AP_id_constr_58, memb_S1AP_id_constraint_57 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_59, &asn_PER_memb_S1AP_criticality_constr_59, memb_S1AP_criticality_constraint_57 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_60, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_60, &asn_PER_memb_S1AP_extensionValue_constr_60, memb_S1AP_extensionValue_constraint_57 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_tag2el_57[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_specs_57 = { + sizeof(struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_tag2el_57, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs = { + "E-RABToBeModifiedItemBearerModInd-ExtIEs", + "E-RABToBeModifiedItemBearerModInd-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_tags_57, + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_tags_57) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_tags_57[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_tags_57, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_tags_57) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_tags_57[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_57, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_specs_57 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_64 = { + sizeof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_64 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_64 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_62, &asn_PER_memb_S1AP_id_constr_62, memb_S1AP_id_constraint_61 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_63, &asn_PER_memb_S1AP_criticality_constr_63, memb_S1AP_criticality_constraint_61 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_64, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_64, &asn_PER_memb_S1AP_extensionValue_constr_64, memb_S1AP_extensionValue_constraint_61 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_tag2el_61[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_specs_61 = { + sizeof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs), + offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_tag2el_61, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs = { + "E-RABNotToBeModifiedItemBearerModInd-ExtIEs", + "E-RABNotToBeModifiedItemBearerModInd-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_tags_61, + sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_tags_61) + /sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_tags_61[0]), /* 1 */ + asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_tags_61, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_tags_61) + /sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_tags_61[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_61, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_specs_61 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_68 = { + sizeof(struct S1AP_CSGMembershipInfo_ExtIEs__extensionValue), + offsetof(struct S1AP_CSGMembershipInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CSGMembershipInfo_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CSGMembershipInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_68 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_68 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CSGMembershipInfo_ExtIEs_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CSGMembershipInfo_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_66, &asn_PER_memb_S1AP_id_constr_66, memb_S1AP_id_constraint_65 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CSGMembershipInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_67, &asn_PER_memb_S1AP_criticality_constr_67, memb_S1AP_criticality_constraint_65 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CSGMembershipInfo_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_68, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_68, &asn_PER_memb_S1AP_extensionValue_constr_68, memb_S1AP_extensionValue_constraint_65 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CSGMembershipInfo_ExtIEs_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CSGMembershipInfo_ExtIEs_tag2el_65[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CSGMembershipInfo_ExtIEs_specs_65 = { + sizeof(struct S1AP_CSGMembershipInfo_ExtIEs), + offsetof(struct S1AP_CSGMembershipInfo_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CSGMembershipInfo_ExtIEs_tag2el_65, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CSGMembershipInfo_ExtIEs = { + "CSGMembershipInfo-ExtIEs", + "CSGMembershipInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CSGMembershipInfo_ExtIEs_tags_65, + sizeof(asn_DEF_S1AP_CSGMembershipInfo_ExtIEs_tags_65) + /sizeof(asn_DEF_S1AP_CSGMembershipInfo_ExtIEs_tags_65[0]), /* 1 */ + asn_DEF_S1AP_CSGMembershipInfo_ExtIEs_tags_65, /* Same as above */ + sizeof(asn_DEF_S1AP_CSGMembershipInfo_ExtIEs_tags_65) + /sizeof(asn_DEF_S1AP_CSGMembershipInfo_ExtIEs_tags_65[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CSGMembershipInfo_ExtIEs_65, + 3, /* Elements count */ + &asn_SPC_S1AP_CSGMembershipInfo_ExtIEs_specs_65 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_72 = { + sizeof(struct S1AP_E_RABModifyItemBearerModConfExtIEs__extensionValue), + offsetof(struct S1AP_E_RABModifyItemBearerModConfExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABModifyItemBearerModConfExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABModifyItemBearerModConfExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_72 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModConfExtIEs_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModConfExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_70, &asn_PER_memb_S1AP_id_constr_70, memb_S1AP_id_constraint_69 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModConfExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_71, &asn_PER_memb_S1AP_criticality_constr_71, memb_S1AP_criticality_constraint_69 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModConfExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_72, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_72, &asn_PER_memb_S1AP_extensionValue_constr_72, memb_S1AP_extensionValue_constraint_69 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyItemBearerModConfExtIEs_tag2el_69[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModConfExtIEs_specs_69 = { + sizeof(struct S1AP_E_RABModifyItemBearerModConfExtIEs), + offsetof(struct S1AP_E_RABModifyItemBearerModConfExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABModifyItemBearerModConfExtIEs_tag2el_69, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs = { + "E-RABModifyItemBearerModConfExtIEs", + "E-RABModifyItemBearerModConfExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs_tags_69, + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs_tags_69) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs_tags_69[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs_tags_69, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs_tags_69) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs_tags_69[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyItemBearerModConfExtIEs_69, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyItemBearerModConfExtIEs_specs_69 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_76 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_76 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_76 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_74, &asn_PER_memb_S1AP_id_constr_74, memb_S1AP_id_constraint_73 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_75, &asn_PER_memb_S1AP_criticality_constr_75, memb_S1AP_criticality_constraint_73 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_76, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_76, &asn_PER_memb_S1AP_extensionValue_constr_76, memb_S1AP_extensionValue_constraint_73 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_tag2el_73[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_specs_73 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_tag2el_73, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs = { + "E-RABFailedToResumeItemResumeReq-ExtIEs", + "E-RABFailedToResumeItemResumeReq-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_tags_73, + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_tags_73) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_tags_73[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_tags_73, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_tags_73) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_tags_73[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_73, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_specs_73 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_80 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_80 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_80 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_78, &asn_PER_memb_S1AP_id_constr_78, memb_S1AP_id_constraint_77 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_79, &asn_PER_memb_S1AP_criticality_constr_79, memb_S1AP_criticality_constraint_77 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_80, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_80, &asn_PER_memb_S1AP_extensionValue_constr_80, memb_S1AP_extensionValue_constraint_77 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_tag2el_77[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_specs_77 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_tag2el_77, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs = { + "E-RABFailedToResumeItemResumeRes-ExtIEs", + "E-RABFailedToResumeItemResumeRes-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_tags_77, + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_tags_77) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_tags_77[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_tags_77, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_tags_77) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_tags_77[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_77, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_specs_77 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_84 = { + sizeof(struct S1AP_Additional_GUTI_ExtIEs__extensionValue), + offsetof(struct S1AP_Additional_GUTI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_Additional_GUTI_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_Additional_GUTI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_84 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_Additional_GUTI_ExtIEs_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Additional_GUTI_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_82, &asn_PER_memb_S1AP_id_constr_82, memb_S1AP_id_constraint_81 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Additional_GUTI_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_83, &asn_PER_memb_S1AP_criticality_constr_83, memb_S1AP_criticality_constraint_81 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_Additional_GUTI_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_84, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_84, &asn_PER_memb_S1AP_extensionValue_constr_84, memb_S1AP_extensionValue_constraint_81 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Additional_GUTI_ExtIEs_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Additional_GUTI_ExtIEs_tag2el_81[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_Additional_GUTI_ExtIEs_specs_81 = { + sizeof(struct S1AP_Additional_GUTI_ExtIEs), + offsetof(struct S1AP_Additional_GUTI_ExtIEs, _asn_ctx), + asn_MAP_S1AP_Additional_GUTI_ExtIEs_tag2el_81, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Additional_GUTI_ExtIEs = { + "Additional-GUTI-ExtIEs", + "Additional-GUTI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Additional_GUTI_ExtIEs_tags_81, + sizeof(asn_DEF_S1AP_Additional_GUTI_ExtIEs_tags_81) + /sizeof(asn_DEF_S1AP_Additional_GUTI_ExtIEs_tags_81[0]), /* 1 */ + asn_DEF_S1AP_Additional_GUTI_ExtIEs_tags_81, /* Same as above */ + sizeof(asn_DEF_S1AP_Additional_GUTI_ExtIEs_tags_81) + /sizeof(asn_DEF_S1AP_Additional_GUTI_ExtIEs_tags_81[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Additional_GUTI_ExtIEs_81, + 3, /* Elements count */ + &asn_SPC_S1AP_Additional_GUTI_ExtIEs_specs_81 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_88 = { + sizeof(struct S1AP_AllocationAndRetentionPriority_ExtIEs__extensionValue), + offsetof(struct S1AP_AllocationAndRetentionPriority_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_AllocationAndRetentionPriority_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_AllocationAndRetentionPriority_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_88 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_88 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_AllocationAndRetentionPriority_ExtIEs_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AllocationAndRetentionPriority_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_86, &asn_PER_memb_S1AP_id_constr_86, memb_S1AP_id_constraint_85 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AllocationAndRetentionPriority_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_87, &asn_PER_memb_S1AP_criticality_constr_87, memb_S1AP_criticality_constraint_85 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_AllocationAndRetentionPriority_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_88, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_88, &asn_PER_memb_S1AP_extensionValue_constr_88, memb_S1AP_extensionValue_constraint_85 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_AllocationAndRetentionPriority_ExtIEs_tag2el_85[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_AllocationAndRetentionPriority_ExtIEs_specs_85 = { + sizeof(struct S1AP_AllocationAndRetentionPriority_ExtIEs), + offsetof(struct S1AP_AllocationAndRetentionPriority_ExtIEs, _asn_ctx), + asn_MAP_S1AP_AllocationAndRetentionPriority_ExtIEs_tag2el_85, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs = { + "AllocationAndRetentionPriority-ExtIEs", + "AllocationAndRetentionPriority-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs_tags_85, + sizeof(asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs_tags_85) + /sizeof(asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs_tags_85[0]), /* 1 */ + asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs_tags_85, /* Same as above */ + sizeof(asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs_tags_85) + /sizeof(asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs_tags_85[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_AllocationAndRetentionPriority_ExtIEs_85, + 3, /* Elements count */ + &asn_SPC_S1AP_AllocationAndRetentionPriority_ExtIEs_specs_85 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_92 = { + sizeof(struct S1AP_InformationForCECapableUEs_ExtIEs__extensionValue), + offsetof(struct S1AP_InformationForCECapableUEs_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_InformationForCECapableUEs_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_InformationForCECapableUEs_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_92 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_92 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_InformationForCECapableUEs_ExtIEs_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InformationForCECapableUEs_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_90, &asn_PER_memb_S1AP_id_constr_90, memb_S1AP_id_constraint_89 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InformationForCECapableUEs_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_91, &asn_PER_memb_S1AP_criticality_constr_91, memb_S1AP_criticality_constraint_89 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_InformationForCECapableUEs_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_92, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_92, &asn_PER_memb_S1AP_extensionValue_constr_92, memb_S1AP_extensionValue_constraint_89 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InformationForCECapableUEs_ExtIEs_tag2el_89[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InformationForCECapableUEs_ExtIEs_specs_89 = { + sizeof(struct S1AP_InformationForCECapableUEs_ExtIEs), + offsetof(struct S1AP_InformationForCECapableUEs_ExtIEs, _asn_ctx), + asn_MAP_S1AP_InformationForCECapableUEs_ExtIEs_tag2el_89, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs = { + "InformationForCECapableUEs-ExtIEs", + "InformationForCECapableUEs-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs_tags_89, + sizeof(asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs_tags_89) + /sizeof(asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs_tags_89[0]), /* 1 */ + asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs_tags_89, /* Same as above */ + sizeof(asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs_tags_89) + /sizeof(asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs_tags_89[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InformationForCECapableUEs_ExtIEs_89, + 3, /* Elements count */ + &asn_SPC_S1AP_InformationForCECapableUEs_ExtIEs_specs_89 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_96 = { + sizeof(struct S1AP_AssistanceDataForPaging_ExtIEs__extensionValue), + offsetof(struct S1AP_AssistanceDataForPaging_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_AssistanceDataForPaging_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_AssistanceDataForPaging_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_96 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_AssistanceDataForPaging_ExtIEs_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AssistanceDataForPaging_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_94, &asn_PER_memb_S1AP_id_constr_94, memb_S1AP_id_constraint_93 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AssistanceDataForPaging_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_95, &asn_PER_memb_S1AP_criticality_constr_95, memb_S1AP_criticality_constraint_93 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_AssistanceDataForPaging_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_96, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_96, &asn_PER_memb_S1AP_extensionValue_constr_96, memb_S1AP_extensionValue_constraint_93 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_AssistanceDataForPaging_ExtIEs_tag2el_93[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_AssistanceDataForPaging_ExtIEs_specs_93 = { + sizeof(struct S1AP_AssistanceDataForPaging_ExtIEs), + offsetof(struct S1AP_AssistanceDataForPaging_ExtIEs, _asn_ctx), + asn_MAP_S1AP_AssistanceDataForPaging_ExtIEs_tag2el_93, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs = { + "AssistanceDataForPaging-ExtIEs", + "AssistanceDataForPaging-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs_tags_93, + sizeof(asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs_tags_93) + /sizeof(asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs_tags_93[0]), /* 1 */ + asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs_tags_93, /* Same as above */ + sizeof(asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs_tags_93) + /sizeof(asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs_tags_93[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_AssistanceDataForPaging_ExtIEs_93, + 3, /* Elements count */ + &asn_SPC_S1AP_AssistanceDataForPaging_ExtIEs_specs_93 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_100 = { + sizeof(struct S1AP_AssistanceDataForRecommendedCells_ExtIEs__extensionValue), + offsetof(struct S1AP_AssistanceDataForRecommendedCells_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_AssistanceDataForRecommendedCells_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_AssistanceDataForRecommendedCells_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_100 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_100 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_AssistanceDataForRecommendedCells_ExtIEs_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AssistanceDataForRecommendedCells_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_98, &asn_PER_memb_S1AP_id_constr_98, memb_S1AP_id_constraint_97 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_AssistanceDataForRecommendedCells_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_99, &asn_PER_memb_S1AP_criticality_constr_99, memb_S1AP_criticality_constraint_97 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_AssistanceDataForRecommendedCells_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_100, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_100, &asn_PER_memb_S1AP_extensionValue_constr_100, memb_S1AP_extensionValue_constraint_97 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_AssistanceDataForRecommendedCells_ExtIEs_tag2el_97[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_AssistanceDataForRecommendedCells_ExtIEs_specs_97 = { + sizeof(struct S1AP_AssistanceDataForRecommendedCells_ExtIEs), + offsetof(struct S1AP_AssistanceDataForRecommendedCells_ExtIEs, _asn_ctx), + asn_MAP_S1AP_AssistanceDataForRecommendedCells_ExtIEs_tag2el_97, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs = { + "AssistanceDataForRecommendedCells-ExtIEs", + "AssistanceDataForRecommendedCells-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs_tags_97, + sizeof(asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs_tags_97) + /sizeof(asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs_tags_97[0]), /* 1 */ + asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs_tags_97, /* Same as above */ + sizeof(asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs_tags_97) + /sizeof(asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs_tags_97[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_AssistanceDataForRecommendedCells_ExtIEs_97, + 3, /* Elements count */ + &asn_SPC_S1AP_AssistanceDataForRecommendedCells_ExtIEs_specs_97 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_104[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.COUNTValueExtended), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_COUNTValueExtended, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "COUNTValueExtended" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.ReceiveStatusOfULPDCPSDUsExtended), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReceiveStatusOfULPDCPSDUsExtended" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.COUNTvaluePDCP_SNlength18), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_COUNTvaluePDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "COUNTvaluePDCP-SNlength18" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.ReceiveStatusOfULPDCPSDUsPDCP_SNlength18), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18" + }, +}; +static const unsigned asn_MAP_S1AP_extensionValue_to_canonical_104[] = { 1, 3, 0, 2 }; +static const unsigned asn_MAP_S1AP_extensionValue_from_canonical_104[] = { 2, 0, 3, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_104[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 1, 0, 1 }, /* ReceiveStatusOfULPDCPSDUsExtended */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, -1, 0 }, /* ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* COUNTValueExtended */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* COUNTvaluePDCP-SNlength18 */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_104 = { + sizeof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue), + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue, present), + sizeof(((struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_104, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_extensionValue_to_canonical_104, + asn_MAP_S1AP_extensionValue_from_canonical_104, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_104 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_104, + 4, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_104 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_102, &asn_PER_memb_S1AP_id_constr_102, memb_S1AP_id_constraint_101 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_Bearers_SubjectToStatusTransfer_ItemExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_103, &asn_PER_memb_S1AP_criticality_constr_103, memb_S1AP_criticality_constraint_101 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_104, + select_Bearers_SubjectToStatusTransfer_ItemExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_104, &asn_PER_memb_S1AP_extensionValue_constr_104, memb_S1AP_extensionValue_constraint_101 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_tag2el_101[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_specs_101 = { + sizeof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs), + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs, _asn_ctx), + asn_MAP_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_tag2el_101, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs = { + "Bearers-SubjectToStatusTransfer-ItemExtIEs", + "Bearers-SubjectToStatusTransfer-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_tags_101, + sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_tags_101) + /sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_tags_101[0]), /* 1 */ + asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_tags_101, /* Same as above */ + sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_tags_101) + /sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_tags_101[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_101, + 3, /* Elements count */ + &asn_SPC_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_specs_101 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_108 = { + sizeof(struct S1AP_CancelledCellinEAI_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_CancelledCellinEAI_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CancelledCellinEAI_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CancelledCellinEAI_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_108 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_108 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinEAI_Item_ExtIEs_105[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinEAI_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_106, &asn_PER_memb_S1AP_id_constr_106, memb_S1AP_id_constraint_105 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinEAI_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_107, &asn_PER_memb_S1AP_criticality_constr_107, memb_S1AP_criticality_constraint_105 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinEAI_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_108, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_108, &asn_PER_memb_S1AP_extensionValue_constr_108, memb_S1AP_extensionValue_constraint_105 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CancelledCellinEAI_Item_ExtIEs_tag2el_105[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CancelledCellinEAI_Item_ExtIEs_specs_105 = { + sizeof(struct S1AP_CancelledCellinEAI_Item_ExtIEs), + offsetof(struct S1AP_CancelledCellinEAI_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CancelledCellinEAI_Item_ExtIEs_tag2el_105, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs = { + "CancelledCellinEAI-Item-ExtIEs", + "CancelledCellinEAI-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs_tags_105, + sizeof(asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs_tags_105) + /sizeof(asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs_tags_105[0]), /* 1 */ + asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs_tags_105, /* Same as above */ + sizeof(asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs_tags_105) + /sizeof(asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs_tags_105[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CancelledCellinEAI_Item_ExtIEs_105, + 3, /* Elements count */ + &asn_SPC_S1AP_CancelledCellinEAI_Item_ExtIEs_specs_105 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_112 = { + sizeof(struct S1AP_CancelledCellinTAI_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_CancelledCellinTAI_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CancelledCellinTAI_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CancelledCellinTAI_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_112 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_112 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinTAI_Item_ExtIEs_109[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinTAI_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_110, &asn_PER_memb_S1AP_id_constr_110, memb_S1AP_id_constraint_109 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinTAI_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_111, &asn_PER_memb_S1AP_criticality_constr_111, memb_S1AP_criticality_constraint_109 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CancelledCellinTAI_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_112, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_112, &asn_PER_memb_S1AP_extensionValue_constr_112, memb_S1AP_extensionValue_constraint_109 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CancelledCellinTAI_Item_ExtIEs_tag2el_109[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CancelledCellinTAI_Item_ExtIEs_specs_109 = { + sizeof(struct S1AP_CancelledCellinTAI_Item_ExtIEs), + offsetof(struct S1AP_CancelledCellinTAI_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CancelledCellinTAI_Item_ExtIEs_tag2el_109, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs = { + "CancelledCellinTAI-Item-ExtIEs", + "CancelledCellinTAI-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs_tags_109, + sizeof(asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs_tags_109) + /sizeof(asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs_tags_109[0]), /* 1 */ + asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs_tags_109, /* Same as above */ + sizeof(asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs_tags_109) + /sizeof(asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs_tags_109[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CancelledCellinTAI_Item_ExtIEs_109, + 3, /* Elements count */ + &asn_SPC_S1AP_CancelledCellinTAI_Item_ExtIEs_specs_109 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_116 = { + sizeof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue), + offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_116 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_116 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_113[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_114, &asn_PER_memb_S1AP_id_constr_114, memb_S1AP_id_constraint_113 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_115, &asn_PER_memb_S1AP_criticality_constr_115, memb_S1AP_criticality_constraint_113 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_116, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_116, &asn_PER_memb_S1AP_extensionValue_constr_116, memb_S1AP_extensionValue_constraint_113 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_tag2el_113[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_specs_113 = { + sizeof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs), + offsetof(struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_tag2el_113, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs = { + "CellIdentifierAndCELevelForCECapableUEs-ExtIEs", + "CellIdentifierAndCELevelForCECapableUEs-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_tags_113, + sizeof(asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_tags_113) + /sizeof(asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_tags_113[0]), /* 1 */ + asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_tags_113, /* Same as above */ + sizeof(asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_tags_113) + /sizeof(asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_tags_113[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_113, + 3, /* Elements count */ + &asn_SPC_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_specs_113 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_120 = { + sizeof(struct S1AP_CellID_Broadcast_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_CellID_Broadcast_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CellID_Broadcast_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CellID_Broadcast_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_120 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_120 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CellID_Broadcast_Item_ExtIEs_117[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellID_Broadcast_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_118, &asn_PER_memb_S1AP_id_constr_118, memb_S1AP_id_constraint_117 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellID_Broadcast_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_119, &asn_PER_memb_S1AP_criticality_constr_119, memb_S1AP_criticality_constraint_117 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CellID_Broadcast_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_120, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_120, &asn_PER_memb_S1AP_extensionValue_constr_120, memb_S1AP_extensionValue_constraint_117 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellID_Broadcast_Item_ExtIEs_tag2el_117[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellID_Broadcast_Item_ExtIEs_specs_117 = { + sizeof(struct S1AP_CellID_Broadcast_Item_ExtIEs), + offsetof(struct S1AP_CellID_Broadcast_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CellID_Broadcast_Item_ExtIEs_tag2el_117, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs = { + "CellID-Broadcast-Item-ExtIEs", + "CellID-Broadcast-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs_tags_117, + sizeof(asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs_tags_117) + /sizeof(asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs_tags_117[0]), /* 1 */ + asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs_tags_117, /* Same as above */ + sizeof(asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs_tags_117) + /sizeof(asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs_tags_117[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellID_Broadcast_Item_ExtIEs_117, + 3, /* Elements count */ + &asn_SPC_S1AP_CellID_Broadcast_Item_ExtIEs_specs_117 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_124 = { + sizeof(struct S1AP_CellID_Cancelled_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_CellID_Cancelled_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CellID_Cancelled_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CellID_Cancelled_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_124 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_124 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CellID_Cancelled_Item_ExtIEs_121[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellID_Cancelled_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_122, &asn_PER_memb_S1AP_id_constr_122, memb_S1AP_id_constraint_121 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellID_Cancelled_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_123, &asn_PER_memb_S1AP_criticality_constr_123, memb_S1AP_criticality_constraint_121 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CellID_Cancelled_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_124, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_124, &asn_PER_memb_S1AP_extensionValue_constr_124, memb_S1AP_extensionValue_constraint_121 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellID_Cancelled_Item_ExtIEs_tag2el_121[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellID_Cancelled_Item_ExtIEs_specs_121 = { + sizeof(struct S1AP_CellID_Cancelled_Item_ExtIEs), + offsetof(struct S1AP_CellID_Cancelled_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CellID_Cancelled_Item_ExtIEs_tag2el_121, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs = { + "CellID-Cancelled-Item-ExtIEs", + "CellID-Cancelled-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs_tags_121, + sizeof(asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs_tags_121) + /sizeof(asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs_tags_121[0]), /* 1 */ + asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs_tags_121, /* Same as above */ + sizeof(asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs_tags_121) + /sizeof(asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs_tags_121[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellID_Cancelled_Item_ExtIEs_121, + 3, /* Elements count */ + &asn_SPC_S1AP_CellID_Cancelled_Item_ExtIEs_specs_121 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_128 = { + sizeof(struct S1AP_CellBasedMDT_ExtIEs__extensionValue), + offsetof(struct S1AP_CellBasedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CellBasedMDT_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CellBasedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_128 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_128 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CellBasedMDT_ExtIEs_125[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellBasedMDT_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_126, &asn_PER_memb_S1AP_id_constr_126, memb_S1AP_id_constraint_125 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellBasedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_127, &asn_PER_memb_S1AP_criticality_constr_127, memb_S1AP_criticality_constraint_125 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CellBasedMDT_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_128, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_128, &asn_PER_memb_S1AP_extensionValue_constr_128, memb_S1AP_extensionValue_constraint_125 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellBasedMDT_ExtIEs_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellBasedMDT_ExtIEs_tag2el_125[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellBasedMDT_ExtIEs_specs_125 = { + sizeof(struct S1AP_CellBasedMDT_ExtIEs), + offsetof(struct S1AP_CellBasedMDT_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CellBasedMDT_ExtIEs_tag2el_125, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellBasedMDT_ExtIEs = { + "CellBasedMDT-ExtIEs", + "CellBasedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellBasedMDT_ExtIEs_tags_125, + sizeof(asn_DEF_S1AP_CellBasedMDT_ExtIEs_tags_125) + /sizeof(asn_DEF_S1AP_CellBasedMDT_ExtIEs_tags_125[0]), /* 1 */ + asn_DEF_S1AP_CellBasedMDT_ExtIEs_tags_125, /* Same as above */ + sizeof(asn_DEF_S1AP_CellBasedMDT_ExtIEs_tags_125) + /sizeof(asn_DEF_S1AP_CellBasedMDT_ExtIEs_tags_125[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellBasedMDT_ExtIEs_125, + 3, /* Elements count */ + &asn_SPC_S1AP_CellBasedMDT_ExtIEs_specs_125 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_132 = { + sizeof(struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue), + offsetof(struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_132 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_132 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_129[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_130, &asn_PER_memb_S1AP_id_constr_130, memb_S1AP_id_constraint_129 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_131, &asn_PER_memb_S1AP_criticality_constr_131, memb_S1AP_criticality_constraint_129 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_132, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_132, &asn_PER_memb_S1AP_extensionValue_constr_132, memb_S1AP_extensionValue_constraint_129 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_tag2el_129[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_specs_129 = { + sizeof(struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs), + offsetof(struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs, _asn_ctx), + asn_MAP_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_tag2el_129, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs = { + "Cdma2000OneXSRVCCInfo-ExtIEs", + "Cdma2000OneXSRVCCInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_tags_129, + sizeof(asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_tags_129) + /sizeof(asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_tags_129[0]), /* 1 */ + asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_tags_129, /* Same as above */ + sizeof(asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_tags_129) + /sizeof(asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_tags_129[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_129, + 3, /* Elements count */ + &asn_SPC_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_specs_129 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_136 = { + sizeof(struct S1AP_CellType_ExtIEs__extensionValue), + offsetof(struct S1AP_CellType_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CellType_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CellType_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_136 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_136 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CellType_ExtIEs_133[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellType_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_134, &asn_PER_memb_S1AP_id_constr_134, memb_S1AP_id_constraint_133 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellType_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_135, &asn_PER_memb_S1AP_criticality_constr_135, memb_S1AP_criticality_constraint_133 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CellType_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_136, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_136, &asn_PER_memb_S1AP_extensionValue_constr_136, memb_S1AP_extensionValue_constraint_133 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellType_ExtIEs_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellType_ExtIEs_tag2el_133[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellType_ExtIEs_specs_133 = { + sizeof(struct S1AP_CellType_ExtIEs), + offsetof(struct S1AP_CellType_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CellType_ExtIEs_tag2el_133, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellType_ExtIEs = { + "CellType-ExtIEs", + "CellType-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellType_ExtIEs_tags_133, + sizeof(asn_DEF_S1AP_CellType_ExtIEs_tags_133) + /sizeof(asn_DEF_S1AP_CellType_ExtIEs_tags_133[0]), /* 1 */ + asn_DEF_S1AP_CellType_ExtIEs_tags_133, /* Same as above */ + sizeof(asn_DEF_S1AP_CellType_ExtIEs_tags_133) + /sizeof(asn_DEF_S1AP_CellType_ExtIEs_tags_133[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellType_ExtIEs_133, + 3, /* Elements count */ + &asn_SPC_S1AP_CellType_ExtIEs_specs_133 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_140 = { + sizeof(struct S1AP_CGI_ExtIEs__extensionValue), + offsetof(struct S1AP_CGI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CGI_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CGI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_140 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_140 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CGI_ExtIEs_137[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CGI_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_138, &asn_PER_memb_S1AP_id_constr_138, memb_S1AP_id_constraint_137 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CGI_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_139, &asn_PER_memb_S1AP_criticality_constr_139, memb_S1AP_criticality_constraint_137 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CGI_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_140, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_140, &asn_PER_memb_S1AP_extensionValue_constr_140, memb_S1AP_extensionValue_constraint_137 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CGI_ExtIEs_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CGI_ExtIEs_tag2el_137[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CGI_ExtIEs_specs_137 = { + sizeof(struct S1AP_CGI_ExtIEs), + offsetof(struct S1AP_CGI_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CGI_ExtIEs_tag2el_137, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CGI_ExtIEs = { + "CGI-ExtIEs", + "CGI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CGI_ExtIEs_tags_137, + sizeof(asn_DEF_S1AP_CGI_ExtIEs_tags_137) + /sizeof(asn_DEF_S1AP_CGI_ExtIEs_tags_137[0]), /* 1 */ + asn_DEF_S1AP_CGI_ExtIEs_tags_137, /* Same as above */ + sizeof(asn_DEF_S1AP_CGI_ExtIEs_tags_137) + /sizeof(asn_DEF_S1AP_CGI_ExtIEs_tags_137[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CGI_ExtIEs_137, + 3, /* Elements count */ + &asn_SPC_S1AP_CGI_ExtIEs_specs_137 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_144 = { + sizeof(struct S1AP_CSG_IdList_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_CSG_IdList_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CSG_IdList_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CSG_IdList_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_144 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_144 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CSG_IdList_Item_ExtIEs_141[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CSG_IdList_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_142, &asn_PER_memb_S1AP_id_constr_142, memb_S1AP_id_constraint_141 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CSG_IdList_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_143, &asn_PER_memb_S1AP_criticality_constr_143, memb_S1AP_criticality_constraint_141 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CSG_IdList_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_144, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_144, &asn_PER_memb_S1AP_extensionValue_constr_144, memb_S1AP_extensionValue_constraint_141 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CSG_IdList_Item_ExtIEs_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CSG_IdList_Item_ExtIEs_tag2el_141[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CSG_IdList_Item_ExtIEs_specs_141 = { + sizeof(struct S1AP_CSG_IdList_Item_ExtIEs), + offsetof(struct S1AP_CSG_IdList_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CSG_IdList_Item_ExtIEs_tag2el_141, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CSG_IdList_Item_ExtIEs = { + "CSG-IdList-Item-ExtIEs", + "CSG-IdList-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CSG_IdList_Item_ExtIEs_tags_141, + sizeof(asn_DEF_S1AP_CSG_IdList_Item_ExtIEs_tags_141) + /sizeof(asn_DEF_S1AP_CSG_IdList_Item_ExtIEs_tags_141[0]), /* 1 */ + asn_DEF_S1AP_CSG_IdList_Item_ExtIEs_tags_141, /* Same as above */ + sizeof(asn_DEF_S1AP_CSG_IdList_Item_ExtIEs_tags_141) + /sizeof(asn_DEF_S1AP_CSG_IdList_Item_ExtIEs_tags_141[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CSG_IdList_Item_ExtIEs_141, + 3, /* Elements count */ + &asn_SPC_S1AP_CSG_IdList_Item_ExtIEs_specs_141 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_148 = { + sizeof(struct S1AP_COUNTvalue_ExtIEs__extensionValue), + offsetof(struct S1AP_COUNTvalue_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_COUNTvalue_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_COUNTvalue_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_148 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_148 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_COUNTvalue_ExtIEs_145[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvalue_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_146, &asn_PER_memb_S1AP_id_constr_146, memb_S1AP_id_constraint_145 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvalue_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_147, &asn_PER_memb_S1AP_criticality_constr_147, memb_S1AP_criticality_constraint_145 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvalue_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_148, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_148, &asn_PER_memb_S1AP_extensionValue_constr_148, memb_S1AP_extensionValue_constraint_145 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_COUNTvalue_ExtIEs_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_COUNTvalue_ExtIEs_tag2el_145[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTvalue_ExtIEs_specs_145 = { + sizeof(struct S1AP_COUNTvalue_ExtIEs), + offsetof(struct S1AP_COUNTvalue_ExtIEs, _asn_ctx), + asn_MAP_S1AP_COUNTvalue_ExtIEs_tag2el_145, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTvalue_ExtIEs = { + "COUNTvalue-ExtIEs", + "COUNTvalue-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_COUNTvalue_ExtIEs_tags_145, + sizeof(asn_DEF_S1AP_COUNTvalue_ExtIEs_tags_145) + /sizeof(asn_DEF_S1AP_COUNTvalue_ExtIEs_tags_145[0]), /* 1 */ + asn_DEF_S1AP_COUNTvalue_ExtIEs_tags_145, /* Same as above */ + sizeof(asn_DEF_S1AP_COUNTvalue_ExtIEs_tags_145) + /sizeof(asn_DEF_S1AP_COUNTvalue_ExtIEs_tags_145[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_COUNTvalue_ExtIEs_145, + 3, /* Elements count */ + &asn_SPC_S1AP_COUNTvalue_ExtIEs_specs_145 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_152 = { + sizeof(struct S1AP_COUNTValueExtended_ExtIEs__extensionValue), + offsetof(struct S1AP_COUNTValueExtended_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_COUNTValueExtended_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_COUNTValueExtended_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_152 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_152 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_COUNTValueExtended_ExtIEs_149[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTValueExtended_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_150, &asn_PER_memb_S1AP_id_constr_150, memb_S1AP_id_constraint_149 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTValueExtended_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_151, &asn_PER_memb_S1AP_criticality_constr_151, memb_S1AP_criticality_constraint_149 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTValueExtended_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_152, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_152, &asn_PER_memb_S1AP_extensionValue_constr_152, memb_S1AP_extensionValue_constraint_149 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_COUNTValueExtended_ExtIEs_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_COUNTValueExtended_ExtIEs_tag2el_149[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTValueExtended_ExtIEs_specs_149 = { + sizeof(struct S1AP_COUNTValueExtended_ExtIEs), + offsetof(struct S1AP_COUNTValueExtended_ExtIEs, _asn_ctx), + asn_MAP_S1AP_COUNTValueExtended_ExtIEs_tag2el_149, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTValueExtended_ExtIEs = { + "COUNTValueExtended-ExtIEs", + "COUNTValueExtended-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_COUNTValueExtended_ExtIEs_tags_149, + sizeof(asn_DEF_S1AP_COUNTValueExtended_ExtIEs_tags_149) + /sizeof(asn_DEF_S1AP_COUNTValueExtended_ExtIEs_tags_149[0]), /* 1 */ + asn_DEF_S1AP_COUNTValueExtended_ExtIEs_tags_149, /* Same as above */ + sizeof(asn_DEF_S1AP_COUNTValueExtended_ExtIEs_tags_149) + /sizeof(asn_DEF_S1AP_COUNTValueExtended_ExtIEs_tags_149[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_COUNTValueExtended_ExtIEs_149, + 3, /* Elements count */ + &asn_SPC_S1AP_COUNTValueExtended_ExtIEs_specs_149 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_156 = { + sizeof(struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue), + offsetof(struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_156 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_156 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_153[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_154, &asn_PER_memb_S1AP_id_constr_154, memb_S1AP_id_constraint_153 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_155, &asn_PER_memb_S1AP_criticality_constr_155, memb_S1AP_criticality_constraint_153 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_156, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_156, &asn_PER_memb_S1AP_extensionValue_constr_156, memb_S1AP_extensionValue_constraint_153 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_tag2el_153[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_specs_153 = { + sizeof(struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs), + offsetof(struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs, _asn_ctx), + asn_MAP_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_tag2el_153, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs = { + "COUNTvaluePDCP-SNlength18-ExtIEs", + "COUNTvaluePDCP-SNlength18-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_tags_153, + sizeof(asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_tags_153) + /sizeof(asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_tags_153[0]), /* 1 */ + asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_tags_153, /* Same as above */ + sizeof(asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_tags_153) + /sizeof(asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_tags_153[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_153, + 3, /* Elements count */ + &asn_SPC_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_specs_153 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_160 = { + sizeof(struct S1AP_CriticalityDiagnostics_ExtIEs__extensionValue), + offsetof(struct S1AP_CriticalityDiagnostics_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CriticalityDiagnostics_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CriticalityDiagnostics_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_160 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_160 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CriticalityDiagnostics_ExtIEs_157[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CriticalityDiagnostics_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_158, &asn_PER_memb_S1AP_id_constr_158, memb_S1AP_id_constraint_157 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CriticalityDiagnostics_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_159, &asn_PER_memb_S1AP_criticality_constr_159, memb_S1AP_criticality_constraint_157 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CriticalityDiagnostics_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_160, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_160, &asn_PER_memb_S1AP_extensionValue_constr_160, memb_S1AP_extensionValue_constraint_157 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CriticalityDiagnostics_ExtIEs_tag2el_157[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CriticalityDiagnostics_ExtIEs_specs_157 = { + sizeof(struct S1AP_CriticalityDiagnostics_ExtIEs), + offsetof(struct S1AP_CriticalityDiagnostics_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CriticalityDiagnostics_ExtIEs_tag2el_157, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs = { + "CriticalityDiagnostics-ExtIEs", + "CriticalityDiagnostics-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs_tags_157, + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs_tags_157) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs_tags_157[0]), /* 1 */ + asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs_tags_157, /* Same as above */ + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs_tags_157) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs_tags_157[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CriticalityDiagnostics_ExtIEs_157, + 3, /* Elements count */ + &asn_SPC_S1AP_CriticalityDiagnostics_ExtIEs_specs_157 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_164 = { + sizeof(struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_164 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_164 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_161[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_162, &asn_PER_memb_S1AP_id_constr_162, memb_S1AP_id_constraint_161 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_163, &asn_PER_memb_S1AP_criticality_constr_163, memb_S1AP_criticality_constraint_161 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_164, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_164, &asn_PER_memb_S1AP_extensionValue_constr_164, memb_S1AP_extensionValue_constraint_161 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_tag2el_161[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_specs_161 = { + sizeof(struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs), + offsetof(struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_tag2el_161, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs = { + "CriticalityDiagnostics-IE-Item-ExtIEs", + "CriticalityDiagnostics-IE-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_tags_161, + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_tags_161) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_tags_161[0]), /* 1 */ + asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_tags_161, /* Same as above */ + sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_tags_161) + /sizeof(asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_tags_161[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_161, + 3, /* Elements count */ + &asn_SPC_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_specs_161 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_168 = { + sizeof(struct S1AP_ServedDCNsItem_ExtIEs__extensionValue), + offsetof(struct S1AP_ServedDCNsItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ServedDCNsItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ServedDCNsItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_168 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_168 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ServedDCNsItem_ExtIEs_165[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedDCNsItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_166, &asn_PER_memb_S1AP_id_constr_166, memb_S1AP_id_constraint_165 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedDCNsItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_167, &asn_PER_memb_S1AP_criticality_constr_167, memb_S1AP_criticality_constraint_165 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedDCNsItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_168, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_168, &asn_PER_memb_S1AP_extensionValue_constr_168, memb_S1AP_extensionValue_constraint_165 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ServedDCNsItem_ExtIEs_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ServedDCNsItem_ExtIEs_tag2el_165[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ServedDCNsItem_ExtIEs_specs_165 = { + sizeof(struct S1AP_ServedDCNsItem_ExtIEs), + offsetof(struct S1AP_ServedDCNsItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ServedDCNsItem_ExtIEs_tag2el_165, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ServedDCNsItem_ExtIEs = { + "ServedDCNsItem-ExtIEs", + "ServedDCNsItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ServedDCNsItem_ExtIEs_tags_165, + sizeof(asn_DEF_S1AP_ServedDCNsItem_ExtIEs_tags_165) + /sizeof(asn_DEF_S1AP_ServedDCNsItem_ExtIEs_tags_165[0]), /* 1 */ + asn_DEF_S1AP_ServedDCNsItem_ExtIEs_tags_165, /* Same as above */ + sizeof(asn_DEF_S1AP_ServedDCNsItem_ExtIEs_tags_165) + /sizeof(asn_DEF_S1AP_ServedDCNsItem_ExtIEs_tags_165[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ServedDCNsItem_ExtIEs_165, + 3, /* Elements count */ + &asn_SPC_S1AP_ServedDCNsItem_ExtIEs_specs_165 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_172 = { + sizeof(struct S1AP_DL_CP_SecurityInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_DL_CP_SecurityInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_DL_CP_SecurityInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_DL_CP_SecurityInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_172 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_172 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_DL_CP_SecurityInformation_ExtIEs_169[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DL_CP_SecurityInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_170, &asn_PER_memb_S1AP_id_constr_170, memb_S1AP_id_constraint_169 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DL_CP_SecurityInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_171, &asn_PER_memb_S1AP_criticality_constr_171, memb_S1AP_criticality_constraint_169 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_DL_CP_SecurityInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_172, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_172, &asn_PER_memb_S1AP_extensionValue_constr_172, memb_S1AP_extensionValue_constraint_169 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DL_CP_SecurityInformation_ExtIEs_tag2el_169[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DL_CP_SecurityInformation_ExtIEs_specs_169 = { + sizeof(struct S1AP_DL_CP_SecurityInformation_ExtIEs), + offsetof(struct S1AP_DL_CP_SecurityInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_DL_CP_SecurityInformation_ExtIEs_tag2el_169, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs = { + "DL-CP-SecurityInformation-ExtIEs", + "DL-CP-SecurityInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs_tags_169, + sizeof(asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs_tags_169) + /sizeof(asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs_tags_169[0]), /* 1 */ + asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs_tags_169, /* Same as above */ + sizeof(asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs_tags_169) + /sizeof(asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs_tags_169[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DL_CP_SecurityInformation_ExtIEs_169, + 3, /* Elements count */ + &asn_SPC_S1AP_DL_CP_SecurityInformation_ExtIEs_specs_169 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_176 = { + sizeof(struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_176 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_176 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_173[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_174, &asn_PER_memb_S1AP_id_constr_174, memb_S1AP_id_constraint_173 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_175, &asn_PER_memb_S1AP_criticality_constr_175, memb_S1AP_criticality_constraint_173 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_176, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_176, &asn_PER_memb_S1AP_extensionValue_constr_176, memb_S1AP_extensionValue_constraint_173 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_tag2el_173[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_specs_173 = { + sizeof(struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs), + offsetof(struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_tag2el_173, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs = { + "EmergencyAreaID-Broadcast-Item-ExtIEs", + "EmergencyAreaID-Broadcast-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_tags_173, + sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_tags_173) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_tags_173[0]), /* 1 */ + asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_tags_173, /* Same as above */ + sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_tags_173) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_tags_173[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_173, + 3, /* Elements count */ + &asn_SPC_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_specs_173 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_180 = { + sizeof(struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_180 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_180 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_177[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_178, &asn_PER_memb_S1AP_id_constr_178, memb_S1AP_id_constraint_177 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_179, &asn_PER_memb_S1AP_criticality_constr_179, memb_S1AP_criticality_constraint_177 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_180, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_180, &asn_PER_memb_S1AP_extensionValue_constr_180, memb_S1AP_extensionValue_constraint_177 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_tag2el_177[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_specs_177 = { + sizeof(struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs), + offsetof(struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_tag2el_177, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs = { + "EmergencyAreaID-Cancelled-Item-ExtIEs", + "EmergencyAreaID-Cancelled-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_tags_177, + sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_tags_177) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_tags_177[0]), /* 1 */ + asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_tags_177, /* Same as above */ + sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_tags_177) + /sizeof(asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_tags_177[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_177, + 3, /* Elements count */ + &asn_SPC_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_specs_177 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_184 = { + sizeof(struct S1AP_CompletedCellinEAI_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_CompletedCellinEAI_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CompletedCellinEAI_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CompletedCellinEAI_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_184 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_184 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinEAI_Item_ExtIEs_181[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CompletedCellinEAI_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_182, &asn_PER_memb_S1AP_id_constr_182, memb_S1AP_id_constraint_181 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CompletedCellinEAI_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_183, &asn_PER_memb_S1AP_criticality_constr_183, memb_S1AP_criticality_constraint_181 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CompletedCellinEAI_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_184, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_184, &asn_PER_memb_S1AP_extensionValue_constr_184, memb_S1AP_extensionValue_constraint_181 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CompletedCellinEAI_Item_ExtIEs_tag2el_181[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CompletedCellinEAI_Item_ExtIEs_specs_181 = { + sizeof(struct S1AP_CompletedCellinEAI_Item_ExtIEs), + offsetof(struct S1AP_CompletedCellinEAI_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CompletedCellinEAI_Item_ExtIEs_tag2el_181, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs = { + "CompletedCellinEAI-Item-ExtIEs", + "CompletedCellinEAI-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs_tags_181, + sizeof(asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs_tags_181) + /sizeof(asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs_tags_181[0]), /* 1 */ + asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs_tags_181, /* Same as above */ + sizeof(asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs_tags_181) + /sizeof(asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs_tags_181[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CompletedCellinEAI_Item_ExtIEs_181, + 3, /* Elements count */ + &asn_SPC_S1AP_CompletedCellinEAI_Item_ExtIEs_specs_181 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_188 = { + sizeof(struct S1AP_GERAN_Cell_ID_ExtIEs__extensionValue), + offsetof(struct S1AP_GERAN_Cell_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_GERAN_Cell_ID_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_GERAN_Cell_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_188 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_188 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_GERAN_Cell_ID_ExtIEs_185[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GERAN_Cell_ID_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_186, &asn_PER_memb_S1AP_id_constr_186, memb_S1AP_id_constraint_185 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GERAN_Cell_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_187, &asn_PER_memb_S1AP_criticality_constr_187, memb_S1AP_criticality_constraint_185 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_GERAN_Cell_ID_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_188, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_188, &asn_PER_memb_S1AP_extensionValue_constr_188, memb_S1AP_extensionValue_constraint_185 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_GERAN_Cell_ID_ExtIEs_tag2el_185[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_GERAN_Cell_ID_ExtIEs_specs_185 = { + sizeof(struct S1AP_GERAN_Cell_ID_ExtIEs), + offsetof(struct S1AP_GERAN_Cell_ID_ExtIEs, _asn_ctx), + asn_MAP_S1AP_GERAN_Cell_ID_ExtIEs_tag2el_185, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs = { + "GERAN-Cell-ID-ExtIEs", + "GERAN-Cell-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs_tags_185, + sizeof(asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs_tags_185) + /sizeof(asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs_tags_185[0]), /* 1 */ + asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs_tags_185, /* Same as above */ + sizeof(asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs_tags_185) + /sizeof(asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs_tags_185[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_GERAN_Cell_ID_ExtIEs_185, + 3, /* Elements count */ + &asn_SPC_S1AP_GERAN_Cell_ID_ExtIEs_specs_185 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_192 = { + sizeof(struct S1AP_GlobalENB_ID_ExtIEs__extensionValue), + offsetof(struct S1AP_GlobalENB_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_GlobalENB_ID_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_GlobalENB_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_192 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_192 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_GlobalENB_ID_ExtIEs_189[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GlobalENB_ID_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_190, &asn_PER_memb_S1AP_id_constr_190, memb_S1AP_id_constraint_189 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GlobalENB_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_191, &asn_PER_memb_S1AP_criticality_constr_191, memb_S1AP_criticality_constraint_189 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_GlobalENB_ID_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_192, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_192, &asn_PER_memb_S1AP_extensionValue_constr_192, memb_S1AP_extensionValue_constraint_189 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_GlobalENB_ID_ExtIEs_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_GlobalENB_ID_ExtIEs_tag2el_189[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_GlobalENB_ID_ExtIEs_specs_189 = { + sizeof(struct S1AP_GlobalENB_ID_ExtIEs), + offsetof(struct S1AP_GlobalENB_ID_ExtIEs, _asn_ctx), + asn_MAP_S1AP_GlobalENB_ID_ExtIEs_tag2el_189, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GlobalENB_ID_ExtIEs = { + "GlobalENB-ID-ExtIEs", + "GlobalENB-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_GlobalENB_ID_ExtIEs_tags_189, + sizeof(asn_DEF_S1AP_GlobalENB_ID_ExtIEs_tags_189) + /sizeof(asn_DEF_S1AP_GlobalENB_ID_ExtIEs_tags_189[0]), /* 1 */ + asn_DEF_S1AP_GlobalENB_ID_ExtIEs_tags_189, /* Same as above */ + sizeof(asn_DEF_S1AP_GlobalENB_ID_ExtIEs_tags_189) + /sizeof(asn_DEF_S1AP_GlobalENB_ID_ExtIEs_tags_189[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_GlobalENB_ID_ExtIEs_189, + 3, /* Elements count */ + &asn_SPC_S1AP_GlobalENB_ID_ExtIEs_specs_189 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_196 = { + sizeof(struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue), + offsetof(struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_196 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_196 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_193[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_194, &asn_PER_memb_S1AP_id_constr_194, memb_S1AP_id_constraint_193 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_195, &asn_PER_memb_S1AP_criticality_constr_195, memb_S1AP_criticality_constraint_193 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_196, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_196, &asn_PER_memb_S1AP_extensionValue_constr_196, memb_S1AP_extensionValue_constraint_193 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_tag2el_193[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_specs_193 = { + sizeof(struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs), + offsetof(struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_tag2el_193, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs = { + "ENB-StatusTransfer-TransparentContainer-ExtIEs", + "ENB-StatusTransfer-TransparentContainer-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_tags_193, + sizeof(asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_tags_193) + /sizeof(asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_tags_193[0]), /* 1 */ + asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_tags_193, /* Same as above */ + sizeof(asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_tags_193) + /sizeof(asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_tags_193[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_193, + 3, /* Elements count */ + &asn_SPC_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_specs_193 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_200 = { + sizeof(struct S1AP_E_RABInformationListItem_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABInformationListItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABInformationListItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABInformationListItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_200 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_200 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABInformationListItem_ExtIEs_197[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABInformationListItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_198, &asn_PER_memb_S1AP_id_constr_198, memb_S1AP_id_constraint_197 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABInformationListItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_199, &asn_PER_memb_S1AP_criticality_constr_199, memb_S1AP_criticality_constraint_197 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABInformationListItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_200, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_200, &asn_PER_memb_S1AP_extensionValue_constr_200, memb_S1AP_extensionValue_constraint_197 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABInformationListItem_ExtIEs_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABInformationListItem_ExtIEs_tag2el_197[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABInformationListItem_ExtIEs_specs_197 = { + sizeof(struct S1AP_E_RABInformationListItem_ExtIEs), + offsetof(struct S1AP_E_RABInformationListItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABInformationListItem_ExtIEs_tag2el_197, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABInformationListItem_ExtIEs = { + "E-RABInformationListItem-ExtIEs", + "E-RABInformationListItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABInformationListItem_ExtIEs_tags_197, + sizeof(asn_DEF_S1AP_E_RABInformationListItem_ExtIEs_tags_197) + /sizeof(asn_DEF_S1AP_E_RABInformationListItem_ExtIEs_tags_197[0]), /* 1 */ + asn_DEF_S1AP_E_RABInformationListItem_ExtIEs_tags_197, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABInformationListItem_ExtIEs_tags_197) + /sizeof(asn_DEF_S1AP_E_RABInformationListItem_ExtIEs_tags_197[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABInformationListItem_ExtIEs_197, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABInformationListItem_ExtIEs_specs_197 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_204 = { + sizeof(struct S1AP_E_RABItem_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_204 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_204 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABItem_ExtIEs_201[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_202, &asn_PER_memb_S1AP_id_constr_202, memb_S1AP_id_constraint_201 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_203, &asn_PER_memb_S1AP_criticality_constr_203, memb_S1AP_criticality_constraint_201 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_204, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_204, &asn_PER_memb_S1AP_extensionValue_constr_204, memb_S1AP_extensionValue_constraint_201 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABItem_ExtIEs_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABItem_ExtIEs_tag2el_201[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABItem_ExtIEs_specs_201 = { + sizeof(struct S1AP_E_RABItem_ExtIEs), + offsetof(struct S1AP_E_RABItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABItem_ExtIEs_tag2el_201, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABItem_ExtIEs = { + "E-RABItem-ExtIEs", + "E-RABItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABItem_ExtIEs_tags_201, + sizeof(asn_DEF_S1AP_E_RABItem_ExtIEs_tags_201) + /sizeof(asn_DEF_S1AP_E_RABItem_ExtIEs_tags_201[0]), /* 1 */ + asn_DEF_S1AP_E_RABItem_ExtIEs_tags_201, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABItem_ExtIEs_tags_201) + /sizeof(asn_DEF_S1AP_E_RABItem_ExtIEs_tags_201[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABItem_ExtIEs_201, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABItem_ExtIEs_specs_201 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_208 = { + sizeof(struct S1AP_E_RABQoSParameters_ExtIEs__extensionValue), + offsetof(struct S1AP_E_RABQoSParameters_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_E_RABQoSParameters_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_E_RABQoSParameters_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_208 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_208 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABQoSParameters_ExtIEs_205[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABQoSParameters_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_206, &asn_PER_memb_S1AP_id_constr_206, memb_S1AP_id_constraint_205 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABQoSParameters_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_207, &asn_PER_memb_S1AP_criticality_constr_207, memb_S1AP_criticality_constraint_205 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABQoSParameters_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_208, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_208, &asn_PER_memb_S1AP_extensionValue_constr_208, memb_S1AP_extensionValue_constraint_205 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABQoSParameters_ExtIEs_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABQoSParameters_ExtIEs_tag2el_205[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABQoSParameters_ExtIEs_specs_205 = { + sizeof(struct S1AP_E_RABQoSParameters_ExtIEs), + offsetof(struct S1AP_E_RABQoSParameters_ExtIEs, _asn_ctx), + asn_MAP_S1AP_E_RABQoSParameters_ExtIEs_tag2el_205, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABQoSParameters_ExtIEs = { + "E-RABQoSParameters-ExtIEs", + "E-RABQoSParameters-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABQoSParameters_ExtIEs_tags_205, + sizeof(asn_DEF_S1AP_E_RABQoSParameters_ExtIEs_tags_205) + /sizeof(asn_DEF_S1AP_E_RABQoSParameters_ExtIEs_tags_205[0]), /* 1 */ + asn_DEF_S1AP_E_RABQoSParameters_ExtIEs_tags_205, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABQoSParameters_ExtIEs_tags_205) + /sizeof(asn_DEF_S1AP_E_RABQoSParameters_ExtIEs_tags_205[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABQoSParameters_ExtIEs_205, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABQoSParameters_ExtIEs_specs_205 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_212 = { + sizeof(struct S1AP_EUTRAN_CGI_ExtIEs__extensionValue), + offsetof(struct S1AP_EUTRAN_CGI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_EUTRAN_CGI_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_EUTRAN_CGI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_212 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_212 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_EUTRAN_CGI_ExtIEs_209[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EUTRAN_CGI_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_210, &asn_PER_memb_S1AP_id_constr_210, memb_S1AP_id_constraint_209 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_EUTRAN_CGI_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_211, &asn_PER_memb_S1AP_criticality_constr_211, memb_S1AP_criticality_constraint_209 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_EUTRAN_CGI_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_212, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_212, &asn_PER_memb_S1AP_extensionValue_constr_212, memb_S1AP_extensionValue_constraint_209 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_EUTRAN_CGI_ExtIEs_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_EUTRAN_CGI_ExtIEs_tag2el_209[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_EUTRAN_CGI_ExtIEs_specs_209 = { + sizeof(struct S1AP_EUTRAN_CGI_ExtIEs), + offsetof(struct S1AP_EUTRAN_CGI_ExtIEs, _asn_ctx), + asn_MAP_S1AP_EUTRAN_CGI_ExtIEs_tag2el_209, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_EUTRAN_CGI_ExtIEs = { + "EUTRAN-CGI-ExtIEs", + "EUTRAN-CGI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_EUTRAN_CGI_ExtIEs_tags_209, + sizeof(asn_DEF_S1AP_EUTRAN_CGI_ExtIEs_tags_209) + /sizeof(asn_DEF_S1AP_EUTRAN_CGI_ExtIEs_tags_209[0]), /* 1 */ + asn_DEF_S1AP_EUTRAN_CGI_ExtIEs_tags_209, /* Same as above */ + sizeof(asn_DEF_S1AP_EUTRAN_CGI_ExtIEs_tags_209) + /sizeof(asn_DEF_S1AP_EUTRAN_CGI_ExtIEs_tags_209[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_EUTRAN_CGI_ExtIEs_209, + 3, /* Elements count */ + &asn_SPC_S1AP_EUTRAN_CGI_ExtIEs_specs_209 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_216 = { + sizeof(struct S1AP_ExpectedUEBehaviour_ExtIEs__extensionValue), + offsetof(struct S1AP_ExpectedUEBehaviour_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ExpectedUEBehaviour_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ExpectedUEBehaviour_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_216 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_216 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ExpectedUEBehaviour_ExtIEs_213[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ExpectedUEBehaviour_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_214, &asn_PER_memb_S1AP_id_constr_214, memb_S1AP_id_constraint_213 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ExpectedUEBehaviour_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_215, &asn_PER_memb_S1AP_criticality_constr_215, memb_S1AP_criticality_constraint_213 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ExpectedUEBehaviour_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_216, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_216, &asn_PER_memb_S1AP_extensionValue_constr_216, memb_S1AP_extensionValue_constraint_213 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ExpectedUEBehaviour_ExtIEs_tag2el_213[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ExpectedUEBehaviour_ExtIEs_specs_213 = { + sizeof(struct S1AP_ExpectedUEBehaviour_ExtIEs), + offsetof(struct S1AP_ExpectedUEBehaviour_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ExpectedUEBehaviour_ExtIEs_tag2el_213, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs = { + "ExpectedUEBehaviour-ExtIEs", + "ExpectedUEBehaviour-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs_tags_213, + sizeof(asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs_tags_213) + /sizeof(asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs_tags_213[0]), /* 1 */ + asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs_tags_213, /* Same as above */ + sizeof(asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs_tags_213) + /sizeof(asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs_tags_213[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ExpectedUEBehaviour_ExtIEs_213, + 3, /* Elements count */ + &asn_SPC_S1AP_ExpectedUEBehaviour_ExtIEs_specs_213 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_220 = { + sizeof(struct S1AP_ExpectedUEActivityBehaviour_ExtIEs__extensionValue), + offsetof(struct S1AP_ExpectedUEActivityBehaviour_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ExpectedUEActivityBehaviour_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ExpectedUEActivityBehaviour_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_220 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_220 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ExpectedUEActivityBehaviour_ExtIEs_217[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ExpectedUEActivityBehaviour_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_218, &asn_PER_memb_S1AP_id_constr_218, memb_S1AP_id_constraint_217 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ExpectedUEActivityBehaviour_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_219, &asn_PER_memb_S1AP_criticality_constr_219, memb_S1AP_criticality_constraint_217 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ExpectedUEActivityBehaviour_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_220, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_220, &asn_PER_memb_S1AP_extensionValue_constr_220, memb_S1AP_extensionValue_constraint_217 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ExpectedUEActivityBehaviour_ExtIEs_tag2el_217[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ExpectedUEActivityBehaviour_ExtIEs_specs_217 = { + sizeof(struct S1AP_ExpectedUEActivityBehaviour_ExtIEs), + offsetof(struct S1AP_ExpectedUEActivityBehaviour_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ExpectedUEActivityBehaviour_ExtIEs_tag2el_217, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs = { + "ExpectedUEActivityBehaviour-ExtIEs", + "ExpectedUEActivityBehaviour-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs_tags_217, + sizeof(asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs_tags_217) + /sizeof(asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs_tags_217[0]), /* 1 */ + asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs_tags_217, /* Same as above */ + sizeof(asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs_tags_217) + /sizeof(asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs_tags_217[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ExpectedUEActivityBehaviour_ExtIEs_217, + 3, /* Elements count */ + &asn_SPC_S1AP_ExpectedUEActivityBehaviour_ExtIEs_specs_217 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_224 = { + sizeof(struct S1AP_ForbiddenTAs_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_ForbiddenTAs_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ForbiddenTAs_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ForbiddenTAs_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_224 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_224 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ForbiddenTAs_Item_ExtIEs_221[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenTAs_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_222, &asn_PER_memb_S1AP_id_constr_222, memb_S1AP_id_constraint_221 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenTAs_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_223, &asn_PER_memb_S1AP_criticality_constr_223, memb_S1AP_criticality_constraint_221 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenTAs_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_224, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_224, &asn_PER_memb_S1AP_extensionValue_constr_224, memb_S1AP_extensionValue_constraint_221 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ForbiddenTAs_Item_ExtIEs_tag2el_221[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ForbiddenTAs_Item_ExtIEs_specs_221 = { + sizeof(struct S1AP_ForbiddenTAs_Item_ExtIEs), + offsetof(struct S1AP_ForbiddenTAs_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ForbiddenTAs_Item_ExtIEs_tag2el_221, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs = { + "ForbiddenTAs-Item-ExtIEs", + "ForbiddenTAs-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs_tags_221, + sizeof(asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs_tags_221) + /sizeof(asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs_tags_221[0]), /* 1 */ + asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs_tags_221, /* Same as above */ + sizeof(asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs_tags_221) + /sizeof(asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs_tags_221[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ForbiddenTAs_Item_ExtIEs_221, + 3, /* Elements count */ + &asn_SPC_S1AP_ForbiddenTAs_Item_ExtIEs_specs_221 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_228 = { + sizeof(struct S1AP_ForbiddenLAs_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_ForbiddenLAs_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ForbiddenLAs_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ForbiddenLAs_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_228 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_228 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ForbiddenLAs_Item_ExtIEs_225[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenLAs_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_226, &asn_PER_memb_S1AP_id_constr_226, memb_S1AP_id_constraint_225 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenLAs_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_227, &asn_PER_memb_S1AP_criticality_constr_227, memb_S1AP_criticality_constraint_225 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ForbiddenLAs_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_228, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_228, &asn_PER_memb_S1AP_extensionValue_constr_228, memb_S1AP_extensionValue_constraint_225 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ForbiddenLAs_Item_ExtIEs_tag2el_225[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ForbiddenLAs_Item_ExtIEs_specs_225 = { + sizeof(struct S1AP_ForbiddenLAs_Item_ExtIEs), + offsetof(struct S1AP_ForbiddenLAs_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ForbiddenLAs_Item_ExtIEs_tag2el_225, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs = { + "ForbiddenLAs-Item-ExtIEs", + "ForbiddenLAs-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs_tags_225, + sizeof(asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs_tags_225) + /sizeof(asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs_tags_225[0]), /* 1 */ + asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs_tags_225, /* Same as above */ + sizeof(asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs_tags_225) + /sizeof(asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs_tags_225[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ForbiddenLAs_Item_ExtIEs_225, + 3, /* Elements count */ + &asn_SPC_S1AP_ForbiddenLAs_Item_ExtIEs_specs_225 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_232 = { + sizeof(struct S1AP_GBR_QosInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_GBR_QosInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_GBR_QosInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_GBR_QosInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_232 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_232 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_GBR_QosInformation_ExtIEs_229[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GBR_QosInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_230, &asn_PER_memb_S1AP_id_constr_230, memb_S1AP_id_constraint_229 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GBR_QosInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_231, &asn_PER_memb_S1AP_criticality_constr_231, memb_S1AP_criticality_constraint_229 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_GBR_QosInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_232, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_232, &asn_PER_memb_S1AP_extensionValue_constr_232, memb_S1AP_extensionValue_constraint_229 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_GBR_QosInformation_ExtIEs_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_GBR_QosInformation_ExtIEs_tag2el_229[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_GBR_QosInformation_ExtIEs_specs_229 = { + sizeof(struct S1AP_GBR_QosInformation_ExtIEs), + offsetof(struct S1AP_GBR_QosInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_GBR_QosInformation_ExtIEs_tag2el_229, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GBR_QosInformation_ExtIEs = { + "GBR-QosInformation-ExtIEs", + "GBR-QosInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_GBR_QosInformation_ExtIEs_tags_229, + sizeof(asn_DEF_S1AP_GBR_QosInformation_ExtIEs_tags_229) + /sizeof(asn_DEF_S1AP_GBR_QosInformation_ExtIEs_tags_229[0]), /* 1 */ + asn_DEF_S1AP_GBR_QosInformation_ExtIEs_tags_229, /* Same as above */ + sizeof(asn_DEF_S1AP_GBR_QosInformation_ExtIEs_tags_229) + /sizeof(asn_DEF_S1AP_GBR_QosInformation_ExtIEs_tags_229[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_GBR_QosInformation_ExtIEs_229, + 3, /* Elements count */ + &asn_SPC_S1AP_GBR_QosInformation_ExtIEs_specs_229 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_236 = { + sizeof(struct S1AP_GUMMEI_ExtIEs__extensionValue), + offsetof(struct S1AP_GUMMEI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_GUMMEI_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_GUMMEI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_236 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_236 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_GUMMEI_ExtIEs_233[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GUMMEI_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_234, &asn_PER_memb_S1AP_id_constr_234, memb_S1AP_id_constraint_233 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_GUMMEI_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_235, &asn_PER_memb_S1AP_criticality_constr_235, memb_S1AP_criticality_constraint_233 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_GUMMEI_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_236, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_236, &asn_PER_memb_S1AP_extensionValue_constr_236, memb_S1AP_extensionValue_constraint_233 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_GUMMEI_ExtIEs_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_GUMMEI_ExtIEs_tag2el_233[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_GUMMEI_ExtIEs_specs_233 = { + sizeof(struct S1AP_GUMMEI_ExtIEs), + offsetof(struct S1AP_GUMMEI_ExtIEs, _asn_ctx), + asn_MAP_S1AP_GUMMEI_ExtIEs_tag2el_233, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_GUMMEI_ExtIEs = { + "GUMMEI-ExtIEs", + "GUMMEI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_GUMMEI_ExtIEs_tags_233, + sizeof(asn_DEF_S1AP_GUMMEI_ExtIEs_tags_233) + /sizeof(asn_DEF_S1AP_GUMMEI_ExtIEs_tags_233[0]), /* 1 */ + asn_DEF_S1AP_GUMMEI_ExtIEs_tags_233, /* Same as above */ + sizeof(asn_DEF_S1AP_GUMMEI_ExtIEs_tags_233) + /sizeof(asn_DEF_S1AP_GUMMEI_ExtIEs_tags_233[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_GUMMEI_ExtIEs_233, + 3, /* Elements count */ + &asn_SPC_S1AP_GUMMEI_ExtIEs_specs_233 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_240 = { + sizeof(struct S1AP_HandoverRestrictionList_ExtIEs__extensionValue), + offsetof(struct S1AP_HandoverRestrictionList_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_HandoverRestrictionList_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_HandoverRestrictionList_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_240 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_240 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverRestrictionList_ExtIEs_237[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRestrictionList_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_238, &asn_PER_memb_S1AP_id_constr_238, memb_S1AP_id_constraint_237 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRestrictionList_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_239, &asn_PER_memb_S1AP_criticality_constr_239, memb_S1AP_criticality_constraint_237 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRestrictionList_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_240, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_240, &asn_PER_memb_S1AP_extensionValue_constr_240, memb_S1AP_extensionValue_constraint_237 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverRestrictionList_ExtIEs_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverRestrictionList_ExtIEs_tag2el_237[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRestrictionList_ExtIEs_specs_237 = { + sizeof(struct S1AP_HandoverRestrictionList_ExtIEs), + offsetof(struct S1AP_HandoverRestrictionList_ExtIEs, _asn_ctx), + asn_MAP_S1AP_HandoverRestrictionList_ExtIEs_tag2el_237, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRestrictionList_ExtIEs = { + "HandoverRestrictionList-ExtIEs", + "HandoverRestrictionList-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverRestrictionList_ExtIEs_tags_237, + sizeof(asn_DEF_S1AP_HandoverRestrictionList_ExtIEs_tags_237) + /sizeof(asn_DEF_S1AP_HandoverRestrictionList_ExtIEs_tags_237[0]), /* 1 */ + asn_DEF_S1AP_HandoverRestrictionList_ExtIEs_tags_237, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverRestrictionList_ExtIEs_tags_237) + /sizeof(asn_DEF_S1AP_HandoverRestrictionList_ExtIEs_tags_237[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverRestrictionList_ExtIEs_237, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverRestrictionList_ExtIEs_specs_237 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_244[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT_ExtIEs__extensionValue, choice.M3Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M3Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M3Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT_ExtIEs__extensionValue, choice.M4Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M4Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M4Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT_ExtIEs__extensionValue, choice.M5Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M5Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M5Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT_ExtIEs__extensionValue, choice.MDT_Location_Info), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_MDT_Location_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDT-Location-Info" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT_ExtIEs__extensionValue, choice.M6Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M6Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M6Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT_ExtIEs__extensionValue, choice.M7Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_M7Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M7Configuration" + }, +}; +static const unsigned asn_MAP_S1AP_extensionValue_to_canonical_244[] = { 3, 0, 1, 2, 4, 5 }; +static const unsigned asn_MAP_S1AP_extensionValue_from_canonical_244[] = { 1, 2, 3, 0, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_244[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, 0, 0 }, /* MDT-Location-Info */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 4 }, /* M3Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 3 }, /* M4Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 2 }, /* M5Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 1 }, /* M6Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -4, 0 } /* M7Configuration */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_244 = { + sizeof(struct S1AP_ImmediateMDT_ExtIEs__extensionValue), + offsetof(struct S1AP_ImmediateMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ImmediateMDT_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ImmediateMDT_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_244, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_extensionValue_to_canonical_244, + asn_MAP_S1AP_extensionValue_from_canonical_244, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_244 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_244, + 6, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_244 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ImmediateMDT_ExtIEs_241[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_242, &asn_PER_memb_S1AP_id_constr_242, memb_S1AP_id_constraint_241 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ImmediateMDT_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_243, &asn_PER_memb_S1AP_criticality_constr_243, memb_S1AP_criticality_constraint_241 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ImmediateMDT_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_244, + select_ImmediateMDT_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_244, &asn_PER_memb_S1AP_extensionValue_constr_244, memb_S1AP_extensionValue_constraint_241 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ImmediateMDT_ExtIEs_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ImmediateMDT_ExtIEs_tag2el_241[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ImmediateMDT_ExtIEs_specs_241 = { + sizeof(struct S1AP_ImmediateMDT_ExtIEs), + offsetof(struct S1AP_ImmediateMDT_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ImmediateMDT_ExtIEs_tag2el_241, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ImmediateMDT_ExtIEs = { + "ImmediateMDT-ExtIEs", + "ImmediateMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ImmediateMDT_ExtIEs_tags_241, + sizeof(asn_DEF_S1AP_ImmediateMDT_ExtIEs_tags_241) + /sizeof(asn_DEF_S1AP_ImmediateMDT_ExtIEs_tags_241[0]), /* 1 */ + asn_DEF_S1AP_ImmediateMDT_ExtIEs_tags_241, /* Same as above */ + sizeof(asn_DEF_S1AP_ImmediateMDT_ExtIEs_tags_241) + /sizeof(asn_DEF_S1AP_ImmediateMDT_ExtIEs_tags_241[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ImmediateMDT_ExtIEs_241, + 3, /* Elements count */ + &asn_SPC_S1AP_ImmediateMDT_ExtIEs_specs_241 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_248 = { + sizeof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue), + offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_248 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_248 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_245[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_246, &asn_PER_memb_S1AP_id_constr_246, memb_S1AP_id_constraint_245 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_247, &asn_PER_memb_S1AP_criticality_constr_247, memb_S1AP_criticality_constraint_245 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_248, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_248, &asn_PER_memb_S1AP_extensionValue_constr_248, memb_S1AP_extensionValue_constraint_245 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_tag2el_245[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_specs_245 = { + sizeof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs), + offsetof(struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs, _asn_ctx), + asn_MAP_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_tag2el_245, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs = { + "InformationOnRecommendedCellsAndENBsForPaging-ExtIEs", + "InformationOnRecommendedCellsAndENBsForPaging-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_tags_245, + sizeof(asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_tags_245) + /sizeof(asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_tags_245[0]), /* 1 */ + asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_tags_245, /* Same as above */ + sizeof(asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_tags_245) + /sizeof(asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_tags_245[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_245, + 3, /* Elements count */ + &asn_SPC_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_specs_245 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_252 = { + sizeof(struct S1AP_LAI_ExtIEs__extensionValue), + offsetof(struct S1AP_LAI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_LAI_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_LAI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_252 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_252 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_LAI_ExtIEs_249[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LAI_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_250, &asn_PER_memb_S1AP_id_constr_250, memb_S1AP_id_constraint_249 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LAI_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_251, &asn_PER_memb_S1AP_criticality_constr_251, memb_S1AP_criticality_constraint_249 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_LAI_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_252, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_252, &asn_PER_memb_S1AP_extensionValue_constr_252, memb_S1AP_extensionValue_constraint_249 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LAI_ExtIEs_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LAI_ExtIEs_tag2el_249[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LAI_ExtIEs_specs_249 = { + sizeof(struct S1AP_LAI_ExtIEs), + offsetof(struct S1AP_LAI_ExtIEs, _asn_ctx), + asn_MAP_S1AP_LAI_ExtIEs_tag2el_249, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LAI_ExtIEs = { + "LAI-ExtIEs", + "LAI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LAI_ExtIEs_tags_249, + sizeof(asn_DEF_S1AP_LAI_ExtIEs_tags_249) + /sizeof(asn_DEF_S1AP_LAI_ExtIEs_tags_249[0]), /* 1 */ + asn_DEF_S1AP_LAI_ExtIEs_tags_249, /* Same as above */ + sizeof(asn_DEF_S1AP_LAI_ExtIEs_tags_249) + /sizeof(asn_DEF_S1AP_LAI_ExtIEs_tags_249[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LAI_ExtIEs_249, + 3, /* Elements count */ + &asn_SPC_S1AP_LAI_ExtIEs_specs_249 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_256[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, choice.Time_UE_StayedInCell_EnhancedGranularity), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Time-UE-StayedInCell-EnhancedGranularity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_256[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Time-UE-StayedInCell-EnhancedGranularity */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_256 = { + sizeof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_256, + 6, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_256 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_256, + 2, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_256 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_253[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_254, &asn_PER_memb_S1AP_id_constr_254, memb_S1AP_id_constraint_253 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_LastVisitedEUTRANCellInformation_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_255, &asn_PER_memb_S1AP_criticality_constr_255, memb_S1AP_criticality_constraint_253 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_256, + select_LastVisitedEUTRANCellInformation_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_256, &asn_PER_memb_S1AP_extensionValue_constr_256, memb_S1AP_extensionValue_constraint_253 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_tag2el_253[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_specs_253 = { + sizeof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs), + offsetof(struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_tag2el_253, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs = { + "LastVisitedEUTRANCellInformation-ExtIEs", + "LastVisitedEUTRANCellInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_tags_253, + sizeof(asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_tags_253) + /sizeof(asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_tags_253[0]), /* 1 */ + asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_tags_253, /* Same as above */ + sizeof(asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_tags_253) + /sizeof(asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_tags_253[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_253, + 3, /* Elements count */ + &asn_SPC_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_specs_253 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_260 = { + sizeof(struct S1AP_ListeningSubframePattern_ExtIEs__extensionValue), + offsetof(struct S1AP_ListeningSubframePattern_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ListeningSubframePattern_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ListeningSubframePattern_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_260 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_260 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ListeningSubframePattern_ExtIEs_257[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ListeningSubframePattern_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_258, &asn_PER_memb_S1AP_id_constr_258, memb_S1AP_id_constraint_257 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ListeningSubframePattern_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_259, &asn_PER_memb_S1AP_criticality_constr_259, memb_S1AP_criticality_constraint_257 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ListeningSubframePattern_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_260, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_260, &asn_PER_memb_S1AP_extensionValue_constr_260, memb_S1AP_extensionValue_constraint_257 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ListeningSubframePattern_ExtIEs_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ListeningSubframePattern_ExtIEs_tag2el_257[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ListeningSubframePattern_ExtIEs_specs_257 = { + sizeof(struct S1AP_ListeningSubframePattern_ExtIEs), + offsetof(struct S1AP_ListeningSubframePattern_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ListeningSubframePattern_ExtIEs_tag2el_257, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ListeningSubframePattern_ExtIEs = { + "ListeningSubframePattern-ExtIEs", + "ListeningSubframePattern-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ListeningSubframePattern_ExtIEs_tags_257, + sizeof(asn_DEF_S1AP_ListeningSubframePattern_ExtIEs_tags_257) + /sizeof(asn_DEF_S1AP_ListeningSubframePattern_ExtIEs_tags_257[0]), /* 1 */ + asn_DEF_S1AP_ListeningSubframePattern_ExtIEs_tags_257, /* Same as above */ + sizeof(asn_DEF_S1AP_ListeningSubframePattern_ExtIEs_tags_257) + /sizeof(asn_DEF_S1AP_ListeningSubframePattern_ExtIEs_tags_257[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ListeningSubframePattern_ExtIEs_257, + 3, /* Elements count */ + &asn_SPC_S1AP_ListeningSubframePattern_ExtIEs_specs_257 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_264 = { + sizeof(struct S1AP_LoggedMDT_ExtIEs__extensionValue), + offsetof(struct S1AP_LoggedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_LoggedMDT_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_LoggedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_264 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_264 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_LoggedMDT_ExtIEs_261[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMDT_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_262, &asn_PER_memb_S1AP_id_constr_262, memb_S1AP_id_constraint_261 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_263, &asn_PER_memb_S1AP_criticality_constr_263, memb_S1AP_criticality_constraint_261 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMDT_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_264, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_264, &asn_PER_memb_S1AP_extensionValue_constr_264, memb_S1AP_extensionValue_constraint_261 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LoggedMDT_ExtIEs_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LoggedMDT_ExtIEs_tag2el_261[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LoggedMDT_ExtIEs_specs_261 = { + sizeof(struct S1AP_LoggedMDT_ExtIEs), + offsetof(struct S1AP_LoggedMDT_ExtIEs, _asn_ctx), + asn_MAP_S1AP_LoggedMDT_ExtIEs_tag2el_261, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LoggedMDT_ExtIEs = { + "LoggedMDT-ExtIEs", + "LoggedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LoggedMDT_ExtIEs_tags_261, + sizeof(asn_DEF_S1AP_LoggedMDT_ExtIEs_tags_261) + /sizeof(asn_DEF_S1AP_LoggedMDT_ExtIEs_tags_261[0]), /* 1 */ + asn_DEF_S1AP_LoggedMDT_ExtIEs_tags_261, /* Same as above */ + sizeof(asn_DEF_S1AP_LoggedMDT_ExtIEs_tags_261) + /sizeof(asn_DEF_S1AP_LoggedMDT_ExtIEs_tags_261[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LoggedMDT_ExtIEs_261, + 3, /* Elements count */ + &asn_SPC_S1AP_LoggedMDT_ExtIEs_specs_261 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_268 = { + sizeof(struct S1AP_LoggedMBSFNMDT_ExtIEs__extensionValue), + offsetof(struct S1AP_LoggedMBSFNMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_LoggedMBSFNMDT_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_LoggedMBSFNMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_268 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_268 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_LoggedMBSFNMDT_ExtIEs_265[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMBSFNMDT_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_266, &asn_PER_memb_S1AP_id_constr_266, memb_S1AP_id_constraint_265 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMBSFNMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_267, &asn_PER_memb_S1AP_criticality_constr_267, memb_S1AP_criticality_constraint_265 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_LoggedMBSFNMDT_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_268, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_268, &asn_PER_memb_S1AP_extensionValue_constr_268, memb_S1AP_extensionValue_constraint_265 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LoggedMBSFNMDT_ExtIEs_tag2el_265[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LoggedMBSFNMDT_ExtIEs_specs_265 = { + sizeof(struct S1AP_LoggedMBSFNMDT_ExtIEs), + offsetof(struct S1AP_LoggedMBSFNMDT_ExtIEs, _asn_ctx), + asn_MAP_S1AP_LoggedMBSFNMDT_ExtIEs_tag2el_265, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs = { + "LoggedMBSFNMDT-ExtIEs", + "LoggedMBSFNMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs_tags_265, + sizeof(asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs_tags_265) + /sizeof(asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs_tags_265[0]), /* 1 */ + asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs_tags_265, /* Same as above */ + sizeof(asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs_tags_265) + /sizeof(asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs_tags_265[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LoggedMBSFNMDT_ExtIEs_265, + 3, /* Elements count */ + &asn_SPC_S1AP_LoggedMBSFNMDT_ExtIEs_specs_265 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_272 = { + sizeof(struct S1AP_M3Configuration_ExtIEs__extensionValue), + offsetof(struct S1AP_M3Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_M3Configuration_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_M3Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_272 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_272 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_M3Configuration_ExtIEs_269[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M3Configuration_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_270, &asn_PER_memb_S1AP_id_constr_270, memb_S1AP_id_constraint_269 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M3Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_271, &asn_PER_memb_S1AP_criticality_constr_271, memb_S1AP_criticality_constraint_269 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_M3Configuration_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_272, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_272, &asn_PER_memb_S1AP_extensionValue_constr_272, memb_S1AP_extensionValue_constraint_269 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M3Configuration_ExtIEs_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M3Configuration_ExtIEs_tag2el_269[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_M3Configuration_ExtIEs_specs_269 = { + sizeof(struct S1AP_M3Configuration_ExtIEs), + offsetof(struct S1AP_M3Configuration_ExtIEs, _asn_ctx), + asn_MAP_S1AP_M3Configuration_ExtIEs_tag2el_269, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M3Configuration_ExtIEs = { + "M3Configuration-ExtIEs", + "M3Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M3Configuration_ExtIEs_tags_269, + sizeof(asn_DEF_S1AP_M3Configuration_ExtIEs_tags_269) + /sizeof(asn_DEF_S1AP_M3Configuration_ExtIEs_tags_269[0]), /* 1 */ + asn_DEF_S1AP_M3Configuration_ExtIEs_tags_269, /* Same as above */ + sizeof(asn_DEF_S1AP_M3Configuration_ExtIEs_tags_269) + /sizeof(asn_DEF_S1AP_M3Configuration_ExtIEs_tags_269[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M3Configuration_ExtIEs_269, + 3, /* Elements count */ + &asn_SPC_S1AP_M3Configuration_ExtIEs_specs_269 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_276 = { + sizeof(struct S1AP_M4Configuration_ExtIEs__extensionValue), + offsetof(struct S1AP_M4Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_M4Configuration_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_M4Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_276 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_276 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_M4Configuration_ExtIEs_273[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M4Configuration_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_274, &asn_PER_memb_S1AP_id_constr_274, memb_S1AP_id_constraint_273 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M4Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_275, &asn_PER_memb_S1AP_criticality_constr_275, memb_S1AP_criticality_constraint_273 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_M4Configuration_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_276, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_276, &asn_PER_memb_S1AP_extensionValue_constr_276, memb_S1AP_extensionValue_constraint_273 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M4Configuration_ExtIEs_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M4Configuration_ExtIEs_tag2el_273[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_M4Configuration_ExtIEs_specs_273 = { + sizeof(struct S1AP_M4Configuration_ExtIEs), + offsetof(struct S1AP_M4Configuration_ExtIEs, _asn_ctx), + asn_MAP_S1AP_M4Configuration_ExtIEs_tag2el_273, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M4Configuration_ExtIEs = { + "M4Configuration-ExtIEs", + "M4Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M4Configuration_ExtIEs_tags_273, + sizeof(asn_DEF_S1AP_M4Configuration_ExtIEs_tags_273) + /sizeof(asn_DEF_S1AP_M4Configuration_ExtIEs_tags_273[0]), /* 1 */ + asn_DEF_S1AP_M4Configuration_ExtIEs_tags_273, /* Same as above */ + sizeof(asn_DEF_S1AP_M4Configuration_ExtIEs_tags_273) + /sizeof(asn_DEF_S1AP_M4Configuration_ExtIEs_tags_273[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M4Configuration_ExtIEs_273, + 3, /* Elements count */ + &asn_SPC_S1AP_M4Configuration_ExtIEs_specs_273 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_280 = { + sizeof(struct S1AP_M5Configuration_ExtIEs__extensionValue), + offsetof(struct S1AP_M5Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_M5Configuration_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_M5Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_280 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_280 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_M5Configuration_ExtIEs_277[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M5Configuration_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_278, &asn_PER_memb_S1AP_id_constr_278, memb_S1AP_id_constraint_277 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M5Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_279, &asn_PER_memb_S1AP_criticality_constr_279, memb_S1AP_criticality_constraint_277 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_M5Configuration_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_280, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_280, &asn_PER_memb_S1AP_extensionValue_constr_280, memb_S1AP_extensionValue_constraint_277 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M5Configuration_ExtIEs_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M5Configuration_ExtIEs_tag2el_277[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_M5Configuration_ExtIEs_specs_277 = { + sizeof(struct S1AP_M5Configuration_ExtIEs), + offsetof(struct S1AP_M5Configuration_ExtIEs, _asn_ctx), + asn_MAP_S1AP_M5Configuration_ExtIEs_tag2el_277, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M5Configuration_ExtIEs = { + "M5Configuration-ExtIEs", + "M5Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M5Configuration_ExtIEs_tags_277, + sizeof(asn_DEF_S1AP_M5Configuration_ExtIEs_tags_277) + /sizeof(asn_DEF_S1AP_M5Configuration_ExtIEs_tags_277[0]), /* 1 */ + asn_DEF_S1AP_M5Configuration_ExtIEs_tags_277, /* Same as above */ + sizeof(asn_DEF_S1AP_M5Configuration_ExtIEs_tags_277) + /sizeof(asn_DEF_S1AP_M5Configuration_ExtIEs_tags_277[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M5Configuration_ExtIEs_277, + 3, /* Elements count */ + &asn_SPC_S1AP_M5Configuration_ExtIEs_specs_277 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_284 = { + sizeof(struct S1AP_M6Configuration_ExtIEs__extensionValue), + offsetof(struct S1AP_M6Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_M6Configuration_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_M6Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_284 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_284 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_M6Configuration_ExtIEs_281[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M6Configuration_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_282, &asn_PER_memb_S1AP_id_constr_282, memb_S1AP_id_constraint_281 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M6Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_283, &asn_PER_memb_S1AP_criticality_constr_283, memb_S1AP_criticality_constraint_281 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_M6Configuration_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_284, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_284, &asn_PER_memb_S1AP_extensionValue_constr_284, memb_S1AP_extensionValue_constraint_281 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M6Configuration_ExtIEs_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M6Configuration_ExtIEs_tag2el_281[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_M6Configuration_ExtIEs_specs_281 = { + sizeof(struct S1AP_M6Configuration_ExtIEs), + offsetof(struct S1AP_M6Configuration_ExtIEs, _asn_ctx), + asn_MAP_S1AP_M6Configuration_ExtIEs_tag2el_281, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M6Configuration_ExtIEs = { + "M6Configuration-ExtIEs", + "M6Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M6Configuration_ExtIEs_tags_281, + sizeof(asn_DEF_S1AP_M6Configuration_ExtIEs_tags_281) + /sizeof(asn_DEF_S1AP_M6Configuration_ExtIEs_tags_281[0]), /* 1 */ + asn_DEF_S1AP_M6Configuration_ExtIEs_tags_281, /* Same as above */ + sizeof(asn_DEF_S1AP_M6Configuration_ExtIEs_tags_281) + /sizeof(asn_DEF_S1AP_M6Configuration_ExtIEs_tags_281[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M6Configuration_ExtIEs_281, + 3, /* Elements count */ + &asn_SPC_S1AP_M6Configuration_ExtIEs_specs_281 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_288 = { + sizeof(struct S1AP_M7Configuration_ExtIEs__extensionValue), + offsetof(struct S1AP_M7Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_M7Configuration_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_M7Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_288 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_288 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_M7Configuration_ExtIEs_285[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M7Configuration_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_286, &asn_PER_memb_S1AP_id_constr_286, memb_S1AP_id_constraint_285 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M7Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_287, &asn_PER_memb_S1AP_criticality_constr_287, memb_S1AP_criticality_constraint_285 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_M7Configuration_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_288, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_288, &asn_PER_memb_S1AP_extensionValue_constr_288, memb_S1AP_extensionValue_constraint_285 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M7Configuration_ExtIEs_tags_285[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M7Configuration_ExtIEs_tag2el_285[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_M7Configuration_ExtIEs_specs_285 = { + sizeof(struct S1AP_M7Configuration_ExtIEs), + offsetof(struct S1AP_M7Configuration_ExtIEs, _asn_ctx), + asn_MAP_S1AP_M7Configuration_ExtIEs_tag2el_285, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M7Configuration_ExtIEs = { + "M7Configuration-ExtIEs", + "M7Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M7Configuration_ExtIEs_tags_285, + sizeof(asn_DEF_S1AP_M7Configuration_ExtIEs_tags_285) + /sizeof(asn_DEF_S1AP_M7Configuration_ExtIEs_tags_285[0]), /* 1 */ + asn_DEF_S1AP_M7Configuration_ExtIEs_tags_285, /* Same as above */ + sizeof(asn_DEF_S1AP_M7Configuration_ExtIEs_tags_285) + /sizeof(asn_DEF_S1AP_M7Configuration_ExtIEs_tags_285[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M7Configuration_ExtIEs_285, + 3, /* Elements count */ + &asn_SPC_S1AP_M7Configuration_ExtIEs_specs_285 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_292[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MDT_Configuration_ExtIEs__extensionValue, choice.MDTPLMNList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MDTPLMNList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDTPLMNList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_292[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* MDTPLMNList */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_292 = { + sizeof(struct S1AP_MDT_Configuration_ExtIEs__extensionValue), + offsetof(struct S1AP_MDT_Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_MDT_Configuration_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_MDT_Configuration_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_292, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_292 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_292, + 1, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_292 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MDT_Configuration_ExtIEs_289[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MDT_Configuration_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_290, &asn_PER_memb_S1AP_id_constr_290, memb_S1AP_id_constraint_289 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MDT_Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_MDT_Configuration_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_291, &asn_PER_memb_S1AP_criticality_constr_291, memb_S1AP_criticality_constraint_289 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MDT_Configuration_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_292, + select_MDT_Configuration_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_292, &asn_PER_memb_S1AP_extensionValue_constr_292, memb_S1AP_extensionValue_constraint_289 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MDT_Configuration_ExtIEs_tags_289[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MDT_Configuration_ExtIEs_tag2el_289[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MDT_Configuration_ExtIEs_specs_289 = { + sizeof(struct S1AP_MDT_Configuration_ExtIEs), + offsetof(struct S1AP_MDT_Configuration_ExtIEs, _asn_ctx), + asn_MAP_S1AP_MDT_Configuration_ExtIEs_tag2el_289, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MDT_Configuration_ExtIEs = { + "MDT-Configuration-ExtIEs", + "MDT-Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MDT_Configuration_ExtIEs_tags_289, + sizeof(asn_DEF_S1AP_MDT_Configuration_ExtIEs_tags_289) + /sizeof(asn_DEF_S1AP_MDT_Configuration_ExtIEs_tags_289[0]), /* 1 */ + asn_DEF_S1AP_MDT_Configuration_ExtIEs_tags_289, /* Same as above */ + sizeof(asn_DEF_S1AP_MDT_Configuration_ExtIEs_tags_289) + /sizeof(asn_DEF_S1AP_MDT_Configuration_ExtIEs_tags_289[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MDT_Configuration_ExtIEs_289, + 3, /* Elements count */ + &asn_SPC_S1AP_MDT_Configuration_ExtIEs_specs_289 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_296 = { + sizeof(struct S1AP_MBSFN_ResultToLogInfo_ExtIEs__extensionValue), + offsetof(struct S1AP_MBSFN_ResultToLogInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_MBSFN_ResultToLogInfo_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_MBSFN_ResultToLogInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_296 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_296 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MBSFN_ResultToLogInfo_ExtIEs_293[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MBSFN_ResultToLogInfo_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_294, &asn_PER_memb_S1AP_id_constr_294, memb_S1AP_id_constraint_293 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MBSFN_ResultToLogInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_295, &asn_PER_memb_S1AP_criticality_constr_295, memb_S1AP_criticality_constraint_293 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MBSFN_ResultToLogInfo_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_296, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_296, &asn_PER_memb_S1AP_extensionValue_constr_296, memb_S1AP_extensionValue_constraint_293 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs_tags_293[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MBSFN_ResultToLogInfo_ExtIEs_tag2el_293[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MBSFN_ResultToLogInfo_ExtIEs_specs_293 = { + sizeof(struct S1AP_MBSFN_ResultToLogInfo_ExtIEs), + offsetof(struct S1AP_MBSFN_ResultToLogInfo_ExtIEs, _asn_ctx), + asn_MAP_S1AP_MBSFN_ResultToLogInfo_ExtIEs_tag2el_293, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs = { + "MBSFN-ResultToLogInfo-ExtIEs", + "MBSFN-ResultToLogInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs_tags_293, + sizeof(asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs_tags_293) + /sizeof(asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs_tags_293[0]), /* 1 */ + asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs_tags_293, /* Same as above */ + sizeof(asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs_tags_293) + /sizeof(asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs_tags_293[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MBSFN_ResultToLogInfo_ExtIEs_293, + 3, /* Elements count */ + &asn_SPC_S1AP_MBSFN_ResultToLogInfo_ExtIEs_specs_293 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_300 = { + sizeof(struct S1AP_MutingPatternInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_MutingPatternInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_MutingPatternInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_MutingPatternInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_300 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_300 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MutingPatternInformation_ExtIEs_297[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MutingPatternInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_298, &asn_PER_memb_S1AP_id_constr_298, memb_S1AP_id_constraint_297 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MutingPatternInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_299, &asn_PER_memb_S1AP_criticality_constr_299, memb_S1AP_criticality_constraint_297 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MutingPatternInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_300, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_300, &asn_PER_memb_S1AP_extensionValue_constr_300, memb_S1AP_extensionValue_constraint_297 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MutingPatternInformation_ExtIEs_tags_297[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MutingPatternInformation_ExtIEs_tag2el_297[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MutingPatternInformation_ExtIEs_specs_297 = { + sizeof(struct S1AP_MutingPatternInformation_ExtIEs), + offsetof(struct S1AP_MutingPatternInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_MutingPatternInformation_ExtIEs_tag2el_297, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MutingPatternInformation_ExtIEs = { + "MutingPatternInformation-ExtIEs", + "MutingPatternInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MutingPatternInformation_ExtIEs_tags_297, + sizeof(asn_DEF_S1AP_MutingPatternInformation_ExtIEs_tags_297) + /sizeof(asn_DEF_S1AP_MutingPatternInformation_ExtIEs_tags_297[0]), /* 1 */ + asn_DEF_S1AP_MutingPatternInformation_ExtIEs_tags_297, /* Same as above */ + sizeof(asn_DEF_S1AP_MutingPatternInformation_ExtIEs_tags_297) + /sizeof(asn_DEF_S1AP_MutingPatternInformation_ExtIEs_tags_297[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MutingPatternInformation_ExtIEs_297, + 3, /* Elements count */ + &asn_SPC_S1AP_MutingPatternInformation_ExtIEs_specs_297 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_304 = { + sizeof(struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_304 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_304 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_301[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_302, &asn_PER_memb_S1AP_id_constr_302, memb_S1AP_id_constraint_301 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_303, &asn_PER_memb_S1AP_criticality_constr_303, memb_S1AP_criticality_constraint_301 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_304, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_304, &asn_PER_memb_S1AP_extensionValue_constr_304, memb_S1AP_extensionValue_constraint_301 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_tags_301[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_tag2el_301[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_specs_301 = { + sizeof(struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs), + offsetof(struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_tag2el_301, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs = { + "NB-IoT-Paging-eDRXInformation-ExtIEs", + "NB-IoT-Paging-eDRXInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_tags_301, + sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_tags_301) + /sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_tags_301[0]), /* 1 */ + asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_tags_301, /* Same as above */ + sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_tags_301) + /sizeof(asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_tags_301[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_301, + 3, /* Elements count */ + &asn_SPC_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_specs_301 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_308 = { + sizeof(struct S1AP_PagingAttemptInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_PagingAttemptInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_PagingAttemptInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_PagingAttemptInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_308 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_308 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_PagingAttemptInformation_ExtIEs_305[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingAttemptInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_306, &asn_PER_memb_S1AP_id_constr_306, memb_S1AP_id_constraint_305 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingAttemptInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_307, &asn_PER_memb_S1AP_criticality_constr_307, memb_S1AP_criticality_constraint_305 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingAttemptInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_308, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_308, &asn_PER_memb_S1AP_extensionValue_constr_308, memb_S1AP_extensionValue_constraint_305 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PagingAttemptInformation_ExtIEs_tags_305[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PagingAttemptInformation_ExtIEs_tag2el_305[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PagingAttemptInformation_ExtIEs_specs_305 = { + sizeof(struct S1AP_PagingAttemptInformation_ExtIEs), + offsetof(struct S1AP_PagingAttemptInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_PagingAttemptInformation_ExtIEs_tag2el_305, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PagingAttemptInformation_ExtIEs = { + "PagingAttemptInformation-ExtIEs", + "PagingAttemptInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PagingAttemptInformation_ExtIEs_tags_305, + sizeof(asn_DEF_S1AP_PagingAttemptInformation_ExtIEs_tags_305) + /sizeof(asn_DEF_S1AP_PagingAttemptInformation_ExtIEs_tags_305[0]), /* 1 */ + asn_DEF_S1AP_PagingAttemptInformation_ExtIEs_tags_305, /* Same as above */ + sizeof(asn_DEF_S1AP_PagingAttemptInformation_ExtIEs_tags_305) + /sizeof(asn_DEF_S1AP_PagingAttemptInformation_ExtIEs_tags_305[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PagingAttemptInformation_ExtIEs_305, + 3, /* Elements count */ + &asn_SPC_S1AP_PagingAttemptInformation_ExtIEs_specs_305 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_312 = { + sizeof(struct S1AP_Paging_eDRXInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_Paging_eDRXInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_Paging_eDRXInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_Paging_eDRXInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_312 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_312 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_Paging_eDRXInformation_ExtIEs_309[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Paging_eDRXInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_310, &asn_PER_memb_S1AP_id_constr_310, memb_S1AP_id_constraint_309 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Paging_eDRXInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_311, &asn_PER_memb_S1AP_criticality_constr_311, memb_S1AP_criticality_constraint_309 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_Paging_eDRXInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_312, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_312, &asn_PER_memb_S1AP_extensionValue_constr_312, memb_S1AP_extensionValue_constraint_309 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs_tags_309[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Paging_eDRXInformation_ExtIEs_tag2el_309[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_Paging_eDRXInformation_ExtIEs_specs_309 = { + sizeof(struct S1AP_Paging_eDRXInformation_ExtIEs), + offsetof(struct S1AP_Paging_eDRXInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_Paging_eDRXInformation_ExtIEs_tag2el_309, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs = { + "Paging-eDRXInformation-ExtIEs", + "Paging-eDRXInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs_tags_309, + sizeof(asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs_tags_309) + /sizeof(asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs_tags_309[0]), /* 1 */ + asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs_tags_309, /* Same as above */ + sizeof(asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs_tags_309) + /sizeof(asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs_tags_309[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Paging_eDRXInformation_ExtIEs_309, + 3, /* Elements count */ + &asn_SPC_S1AP_Paging_eDRXInformation_ExtIEs_specs_309 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_316 = { + sizeof(struct S1AP_M1PeriodicReporting_ExtIEs__extensionValue), + offsetof(struct S1AP_M1PeriodicReporting_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_M1PeriodicReporting_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_M1PeriodicReporting_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_316 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_316 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_M1PeriodicReporting_ExtIEs_313[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M1PeriodicReporting_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_314, &asn_PER_memb_S1AP_id_constr_314, memb_S1AP_id_constraint_313 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M1PeriodicReporting_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_315, &asn_PER_memb_S1AP_criticality_constr_315, memb_S1AP_criticality_constraint_313 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_M1PeriodicReporting_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_316, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_316, &asn_PER_memb_S1AP_extensionValue_constr_316, memb_S1AP_extensionValue_constraint_313 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M1PeriodicReporting_ExtIEs_tags_313[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M1PeriodicReporting_ExtIEs_tag2el_313[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_M1PeriodicReporting_ExtIEs_specs_313 = { + sizeof(struct S1AP_M1PeriodicReporting_ExtIEs), + offsetof(struct S1AP_M1PeriodicReporting_ExtIEs, _asn_ctx), + asn_MAP_S1AP_M1PeriodicReporting_ExtIEs_tag2el_313, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M1PeriodicReporting_ExtIEs = { + "M1PeriodicReporting-ExtIEs", + "M1PeriodicReporting-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M1PeriodicReporting_ExtIEs_tags_313, + sizeof(asn_DEF_S1AP_M1PeriodicReporting_ExtIEs_tags_313) + /sizeof(asn_DEF_S1AP_M1PeriodicReporting_ExtIEs_tags_313[0]), /* 1 */ + asn_DEF_S1AP_M1PeriodicReporting_ExtIEs_tags_313, /* Same as above */ + sizeof(asn_DEF_S1AP_M1PeriodicReporting_ExtIEs_tags_313) + /sizeof(asn_DEF_S1AP_M1PeriodicReporting_ExtIEs_tags_313[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M1PeriodicReporting_ExtIEs_313, + 3, /* Elements count */ + &asn_SPC_S1AP_M1PeriodicReporting_ExtIEs_specs_313 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_320[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ProSeAuthorized_ExtIEs__extensionValue, choice.ProSeUEtoNetworkRelaying), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_ProSeUEtoNetworkRelaying, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeUEtoNetworkRelaying" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_320[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* ProSeUEtoNetworkRelaying */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_320 = { + sizeof(struct S1AP_ProSeAuthorized_ExtIEs__extensionValue), + offsetof(struct S1AP_ProSeAuthorized_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ProSeAuthorized_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ProSeAuthorized_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_320, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_320 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_320, + 1, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_320 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProSeAuthorized_ExtIEs_317[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ProSeAuthorized_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_318, &asn_PER_memb_S1AP_id_constr_318, memb_S1AP_id_constraint_317 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ProSeAuthorized_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ProSeAuthorized_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_319, &asn_PER_memb_S1AP_criticality_constr_319, memb_S1AP_criticality_constraint_317 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ProSeAuthorized_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_320, + select_ProSeAuthorized_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_320, &asn_PER_memb_S1AP_extensionValue_constr_320, memb_S1AP_extensionValue_constraint_317 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProSeAuthorized_ExtIEs_tags_317[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ProSeAuthorized_ExtIEs_tag2el_317[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ProSeAuthorized_ExtIEs_specs_317 = { + sizeof(struct S1AP_ProSeAuthorized_ExtIEs), + offsetof(struct S1AP_ProSeAuthorized_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ProSeAuthorized_ExtIEs_tag2el_317, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeAuthorized_ExtIEs = { + "ProSeAuthorized-ExtIEs", + "ProSeAuthorized-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProSeAuthorized_ExtIEs_tags_317, + sizeof(asn_DEF_S1AP_ProSeAuthorized_ExtIEs_tags_317) + /sizeof(asn_DEF_S1AP_ProSeAuthorized_ExtIEs_tags_317[0]), /* 1 */ + asn_DEF_S1AP_ProSeAuthorized_ExtIEs_tags_317, /* Same as above */ + sizeof(asn_DEF_S1AP_ProSeAuthorized_ExtIEs_tags_317) + /sizeof(asn_DEF_S1AP_ProSeAuthorized_ExtIEs_tags_317[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ProSeAuthorized_ExtIEs_317, + 3, /* Elements count */ + &asn_SPC_S1AP_ProSeAuthorized_ExtIEs_specs_317 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_324 = { + sizeof(struct S1AP_RecommendedCellsForPaging_ExtIEs__extensionValue), + offsetof(struct S1AP_RecommendedCellsForPaging_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_RecommendedCellsForPaging_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_RecommendedCellsForPaging_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_324 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_324 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellsForPaging_ExtIEs_321[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellsForPaging_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_322, &asn_PER_memb_S1AP_id_constr_322, memb_S1AP_id_constraint_321 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellsForPaging_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_323, &asn_PER_memb_S1AP_criticality_constr_323, memb_S1AP_criticality_constraint_321 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellsForPaging_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_324, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_324, &asn_PER_memb_S1AP_extensionValue_constr_324, memb_S1AP_extensionValue_constraint_321 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs_tags_321[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedCellsForPaging_ExtIEs_tag2el_321[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedCellsForPaging_ExtIEs_specs_321 = { + sizeof(struct S1AP_RecommendedCellsForPaging_ExtIEs), + offsetof(struct S1AP_RecommendedCellsForPaging_ExtIEs, _asn_ctx), + asn_MAP_S1AP_RecommendedCellsForPaging_ExtIEs_tag2el_321, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs = { + "RecommendedCellsForPaging-ExtIEs", + "RecommendedCellsForPaging-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs_tags_321, + sizeof(asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs_tags_321) + /sizeof(asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs_tags_321[0]), /* 1 */ + asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs_tags_321, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs_tags_321) + /sizeof(asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs_tags_321[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedCellsForPaging_ExtIEs_321, + 3, /* Elements count */ + &asn_SPC_S1AP_RecommendedCellsForPaging_ExtIEs_specs_321 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_328 = { + sizeof(struct S1AP_RecommendedCellsForPagingItem_ExtIEs__extensionValue), + offsetof(struct S1AP_RecommendedCellsForPagingItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_RecommendedCellsForPagingItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_RecommendedCellsForPagingItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_328 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_328 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellsForPagingItem_ExtIEs_325[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellsForPagingItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_326, &asn_PER_memb_S1AP_id_constr_326, memb_S1AP_id_constraint_325 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellsForPagingItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_327, &asn_PER_memb_S1AP_criticality_constr_327, memb_S1AP_criticality_constraint_325 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellsForPagingItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_328, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_328, &asn_PER_memb_S1AP_extensionValue_constr_328, memb_S1AP_extensionValue_constraint_325 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs_tags_325[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedCellsForPagingItem_ExtIEs_tag2el_325[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedCellsForPagingItem_ExtIEs_specs_325 = { + sizeof(struct S1AP_RecommendedCellsForPagingItem_ExtIEs), + offsetof(struct S1AP_RecommendedCellsForPagingItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_RecommendedCellsForPagingItem_ExtIEs_tag2el_325, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs = { + "RecommendedCellsForPagingItem-ExtIEs", + "RecommendedCellsForPagingItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs_tags_325, + sizeof(asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs_tags_325) + /sizeof(asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs_tags_325[0]), /* 1 */ + asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs_tags_325, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs_tags_325) + /sizeof(asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs_tags_325[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedCellsForPagingItem_ExtIEs_325, + 3, /* Elements count */ + &asn_SPC_S1AP_RecommendedCellsForPagingItem_ExtIEs_specs_325 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_332 = { + sizeof(struct S1AP_RecommendedENBsForPaging_ExtIEs__extensionValue), + offsetof(struct S1AP_RecommendedENBsForPaging_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_RecommendedENBsForPaging_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_RecommendedENBsForPaging_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_332 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_332 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBsForPaging_ExtIEs_329[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBsForPaging_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_330, &asn_PER_memb_S1AP_id_constr_330, memb_S1AP_id_constraint_329 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBsForPaging_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_331, &asn_PER_memb_S1AP_criticality_constr_331, memb_S1AP_criticality_constraint_329 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBsForPaging_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_332, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_332, &asn_PER_memb_S1AP_extensionValue_constr_332, memb_S1AP_extensionValue_constraint_329 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs_tags_329[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedENBsForPaging_ExtIEs_tag2el_329[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedENBsForPaging_ExtIEs_specs_329 = { + sizeof(struct S1AP_RecommendedENBsForPaging_ExtIEs), + offsetof(struct S1AP_RecommendedENBsForPaging_ExtIEs, _asn_ctx), + asn_MAP_S1AP_RecommendedENBsForPaging_ExtIEs_tag2el_329, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs = { + "RecommendedENBsForPaging-ExtIEs", + "RecommendedENBsForPaging-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs_tags_329, + sizeof(asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs_tags_329) + /sizeof(asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs_tags_329[0]), /* 1 */ + asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs_tags_329, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs_tags_329) + /sizeof(asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs_tags_329[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedENBsForPaging_ExtIEs_329, + 3, /* Elements count */ + &asn_SPC_S1AP_RecommendedENBsForPaging_ExtIEs_specs_329 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_336 = { + sizeof(struct S1AP_RecommendedENBItem_ExtIEs__extensionValue), + offsetof(struct S1AP_RecommendedENBItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_RecommendedENBItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_RecommendedENBItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_336 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_336 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBItem_ExtIEs_333[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_334, &asn_PER_memb_S1AP_id_constr_334, memb_S1AP_id_constraint_333 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_335, &asn_PER_memb_S1AP_criticality_constr_335, memb_S1AP_criticality_constraint_333 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_336, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_336, &asn_PER_memb_S1AP_extensionValue_constr_336, memb_S1AP_extensionValue_constraint_333 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedENBItem_ExtIEs_tags_333[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedENBItem_ExtIEs_tag2el_333[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedENBItem_ExtIEs_specs_333 = { + sizeof(struct S1AP_RecommendedENBItem_ExtIEs), + offsetof(struct S1AP_RecommendedENBItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_RecommendedENBItem_ExtIEs_tag2el_333, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBItem_ExtIEs = { + "RecommendedENBItem-ExtIEs", + "RecommendedENBItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedENBItem_ExtIEs_tags_333, + sizeof(asn_DEF_S1AP_RecommendedENBItem_ExtIEs_tags_333) + /sizeof(asn_DEF_S1AP_RecommendedENBItem_ExtIEs_tags_333[0]), /* 1 */ + asn_DEF_S1AP_RecommendedENBItem_ExtIEs_tags_333, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedENBItem_ExtIEs_tags_333) + /sizeof(asn_DEF_S1AP_RecommendedENBItem_ExtIEs_tags_333[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedENBItem_ExtIEs_333, + 3, /* Elements count */ + &asn_SPC_S1AP_RecommendedENBItem_ExtIEs_specs_333 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_340 = { + sizeof(struct S1AP_RequestType_ExtIEs__extensionValue), + offsetof(struct S1AP_RequestType_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_RequestType_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_RequestType_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_340 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_340 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RequestType_ExtIEs_337[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RequestType_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_338, &asn_PER_memb_S1AP_id_constr_338, memb_S1AP_id_constraint_337 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RequestType_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_339, &asn_PER_memb_S1AP_criticality_constr_339, memb_S1AP_criticality_constraint_337 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RequestType_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_340, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_340, &asn_PER_memb_S1AP_extensionValue_constr_340, memb_S1AP_extensionValue_constraint_337 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RequestType_ExtIEs_tags_337[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RequestType_ExtIEs_tag2el_337[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RequestType_ExtIEs_specs_337 = { + sizeof(struct S1AP_RequestType_ExtIEs), + offsetof(struct S1AP_RequestType_ExtIEs, _asn_ctx), + asn_MAP_S1AP_RequestType_ExtIEs_tag2el_337, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RequestType_ExtIEs = { + "RequestType-ExtIEs", + "RequestType-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RequestType_ExtIEs_tags_337, + sizeof(asn_DEF_S1AP_RequestType_ExtIEs_tags_337) + /sizeof(asn_DEF_S1AP_RequestType_ExtIEs_tags_337[0]), /* 1 */ + asn_DEF_S1AP_RequestType_ExtIEs_tags_337, /* Same as above */ + sizeof(asn_DEF_S1AP_RequestType_ExtIEs_tags_337) + /sizeof(asn_DEF_S1AP_RequestType_ExtIEs_tags_337[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RequestType_ExtIEs_337, + 3, /* Elements count */ + &asn_SPC_S1AP_RequestType_ExtIEs_specs_337 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_344 = { + sizeof(struct S1AP_RIMTransfer_ExtIEs__extensionValue), + offsetof(struct S1AP_RIMTransfer_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_RIMTransfer_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_RIMTransfer_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_344 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_344 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RIMTransfer_ExtIEs_341[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RIMTransfer_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_342, &asn_PER_memb_S1AP_id_constr_342, memb_S1AP_id_constraint_341 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RIMTransfer_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_343, &asn_PER_memb_S1AP_criticality_constr_343, memb_S1AP_criticality_constraint_341 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RIMTransfer_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_344, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_344, &asn_PER_memb_S1AP_extensionValue_constr_344, memb_S1AP_extensionValue_constraint_341 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RIMTransfer_ExtIEs_tags_341[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RIMTransfer_ExtIEs_tag2el_341[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RIMTransfer_ExtIEs_specs_341 = { + sizeof(struct S1AP_RIMTransfer_ExtIEs), + offsetof(struct S1AP_RIMTransfer_ExtIEs, _asn_ctx), + asn_MAP_S1AP_RIMTransfer_ExtIEs_tag2el_341, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RIMTransfer_ExtIEs = { + "RIMTransfer-ExtIEs", + "RIMTransfer-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RIMTransfer_ExtIEs_tags_341, + sizeof(asn_DEF_S1AP_RIMTransfer_ExtIEs_tags_341) + /sizeof(asn_DEF_S1AP_RIMTransfer_ExtIEs_tags_341[0]), /* 1 */ + asn_DEF_S1AP_RIMTransfer_ExtIEs_tags_341, /* Same as above */ + sizeof(asn_DEF_S1AP_RIMTransfer_ExtIEs_tags_341) + /sizeof(asn_DEF_S1AP_RIMTransfer_ExtIEs_tags_341[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RIMTransfer_ExtIEs_341, + 3, /* Elements count */ + &asn_SPC_S1AP_RIMTransfer_ExtIEs_specs_341 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_348 = { + sizeof(struct S1AP_RLFReportInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_RLFReportInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_RLFReportInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_RLFReportInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_348 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_348 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RLFReportInformation_ExtIEs_345[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RLFReportInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_346, &asn_PER_memb_S1AP_id_constr_346, memb_S1AP_id_constraint_345 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RLFReportInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_347, &asn_PER_memb_S1AP_criticality_constr_347, memb_S1AP_criticality_constraint_345 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RLFReportInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_348, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_348, &asn_PER_memb_S1AP_extensionValue_constr_348, memb_S1AP_extensionValue_constraint_345 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RLFReportInformation_ExtIEs_tags_345[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RLFReportInformation_ExtIEs_tag2el_345[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RLFReportInformation_ExtIEs_specs_345 = { + sizeof(struct S1AP_RLFReportInformation_ExtIEs), + offsetof(struct S1AP_RLFReportInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_RLFReportInformation_ExtIEs_tag2el_345, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RLFReportInformation_ExtIEs = { + "RLFReportInformation-ExtIEs", + "RLFReportInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RLFReportInformation_ExtIEs_tags_345, + sizeof(asn_DEF_S1AP_RLFReportInformation_ExtIEs_tags_345) + /sizeof(asn_DEF_S1AP_RLFReportInformation_ExtIEs_tags_345[0]), /* 1 */ + asn_DEF_S1AP_RLFReportInformation_ExtIEs_tags_345, /* Same as above */ + sizeof(asn_DEF_S1AP_RLFReportInformation_ExtIEs_tags_345) + /sizeof(asn_DEF_S1AP_RLFReportInformation_ExtIEs_tags_345[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RLFReportInformation_ExtIEs_345, + 3, /* Elements count */ + &asn_SPC_S1AP_RLFReportInformation_ExtIEs_specs_345 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_352 = { + sizeof(struct S1AP_SecurityContext_ExtIEs__extensionValue), + offsetof(struct S1AP_SecurityContext_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_SecurityContext_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_SecurityContext_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_352 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_352 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_SecurityContext_ExtIEs_349[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SecurityContext_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_350, &asn_PER_memb_S1AP_id_constr_350, memb_S1AP_id_constraint_349 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SecurityContext_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_351, &asn_PER_memb_S1AP_criticality_constr_351, memb_S1AP_criticality_constraint_349 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_SecurityContext_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_352, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_352, &asn_PER_memb_S1AP_extensionValue_constr_352, memb_S1AP_extensionValue_constraint_349 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SecurityContext_ExtIEs_tags_349[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SecurityContext_ExtIEs_tag2el_349[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SecurityContext_ExtIEs_specs_349 = { + sizeof(struct S1AP_SecurityContext_ExtIEs), + offsetof(struct S1AP_SecurityContext_ExtIEs, _asn_ctx), + asn_MAP_S1AP_SecurityContext_ExtIEs_tag2el_349, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SecurityContext_ExtIEs = { + "SecurityContext-ExtIEs", + "SecurityContext-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SecurityContext_ExtIEs_tags_349, + sizeof(asn_DEF_S1AP_SecurityContext_ExtIEs_tags_349) + /sizeof(asn_DEF_S1AP_SecurityContext_ExtIEs_tags_349[0]), /* 1 */ + asn_DEF_S1AP_SecurityContext_ExtIEs_tags_349, /* Same as above */ + sizeof(asn_DEF_S1AP_SecurityContext_ExtIEs_tags_349) + /sizeof(asn_DEF_S1AP_SecurityContext_ExtIEs_tags_349[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SecurityContext_ExtIEs_349, + 3, /* Elements count */ + &asn_SPC_S1AP_SecurityContext_ExtIEs_specs_349 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_356[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformationReply_ExtIEs__extensionValue, choice.TimeSynchronisationInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TimeSynchronisationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeSynchronisationInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformationReply_ExtIEs__extensionValue, choice.MutingPatternInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MutingPatternInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MutingPatternInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_356[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* TimeSynchronisationInfo */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* MutingPatternInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_356 = { + sizeof(struct S1AP_SONInformationReply_ExtIEs__extensionValue), + offsetof(struct S1AP_SONInformationReply_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_SONInformationReply_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_SONInformationReply_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_356, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_356 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_356, + 2, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_356 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_SONInformationReply_ExtIEs_353[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformationReply_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_354, &asn_PER_memb_S1AP_id_constr_354, memb_S1AP_id_constraint_353 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformationReply_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_SONInformationReply_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_355, &asn_PER_memb_S1AP_criticality_constr_355, memb_S1AP_criticality_constraint_353 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformationReply_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_356, + select_SONInformationReply_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_356, &asn_PER_memb_S1AP_extensionValue_constr_356, memb_S1AP_extensionValue_constraint_353 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SONInformationReply_ExtIEs_tags_353[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SONInformationReply_ExtIEs_tag2el_353[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SONInformationReply_ExtIEs_specs_353 = { + sizeof(struct S1AP_SONInformationReply_ExtIEs), + offsetof(struct S1AP_SONInformationReply_ExtIEs, _asn_ctx), + asn_MAP_S1AP_SONInformationReply_ExtIEs_tag2el_353, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformationReply_ExtIEs = { + "SONInformationReply-ExtIEs", + "SONInformationReply-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SONInformationReply_ExtIEs_tags_353, + sizeof(asn_DEF_S1AP_SONInformationReply_ExtIEs_tags_353) + /sizeof(asn_DEF_S1AP_SONInformationReply_ExtIEs_tags_353[0]), /* 1 */ + asn_DEF_S1AP_SONInformationReply_ExtIEs_tags_353, /* Same as above */ + sizeof(asn_DEF_S1AP_SONInformationReply_ExtIEs_tags_353) + /sizeof(asn_DEF_S1AP_SONInformationReply_ExtIEs_tags_353[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SONInformationReply_ExtIEs_353, + 3, /* Elements count */ + &asn_SPC_S1AP_SONInformationReply_ExtIEs_specs_353 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_360[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs__extensionValue, choice.X2TNLConfigurationInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_X2TNLConfigurationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2TNLConfigurationInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs__extensionValue, choice.SynchronisationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SynchronisationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SynchronisationInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_360[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* X2TNLConfigurationInfo */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* SynchronisationInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_360 = { + sizeof(struct S1AP_SONConfigurationTransfer_ExtIEs__extensionValue), + offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_SONConfigurationTransfer_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_360, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_360 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_360, + 2, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_360 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_SONConfigurationTransfer_ExtIEs_357[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_358, &asn_PER_memb_S1AP_id_constr_358, memb_S1AP_id_constraint_357 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_SONConfigurationTransfer_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_359, &asn_PER_memb_S1AP_criticality_constr_359, memb_S1AP_criticality_constraint_357 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_360, + select_SONConfigurationTransfer_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_360, &asn_PER_memb_S1AP_extensionValue_constr_360, memb_S1AP_extensionValue_constraint_357 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs_tags_357[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SONConfigurationTransfer_ExtIEs_tag2el_357[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SONConfigurationTransfer_ExtIEs_specs_357 = { + sizeof(struct S1AP_SONConfigurationTransfer_ExtIEs), + offsetof(struct S1AP_SONConfigurationTransfer_ExtIEs, _asn_ctx), + asn_MAP_S1AP_SONConfigurationTransfer_ExtIEs_tag2el_357, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs = { + "SONConfigurationTransfer-ExtIEs", + "SONConfigurationTransfer-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs_tags_357, + sizeof(asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs_tags_357) + /sizeof(asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs_tags_357[0]), /* 1 */ + asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs_tags_357, /* Same as above */ + sizeof(asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs_tags_357) + /sizeof(asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs_tags_357[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SONConfigurationTransfer_ExtIEs_357, + 3, /* Elements count */ + &asn_SPC_S1AP_SONConfigurationTransfer_ExtIEs_specs_357 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_364 = { + sizeof(struct S1AP_SynchronisationInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_SynchronisationInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_SynchronisationInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_SynchronisationInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_364 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_364 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_SynchronisationInformation_ExtIEs_361[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SynchronisationInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_362, &asn_PER_memb_S1AP_id_constr_362, memb_S1AP_id_constraint_361 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SynchronisationInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_363, &asn_PER_memb_S1AP_criticality_constr_363, memb_S1AP_criticality_constraint_361 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_SynchronisationInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_364, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_364, &asn_PER_memb_S1AP_extensionValue_constr_364, memb_S1AP_extensionValue_constraint_361 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SynchronisationInformation_ExtIEs_tags_361[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SynchronisationInformation_ExtIEs_tag2el_361[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SynchronisationInformation_ExtIEs_specs_361 = { + sizeof(struct S1AP_SynchronisationInformation_ExtIEs), + offsetof(struct S1AP_SynchronisationInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_SynchronisationInformation_ExtIEs_tag2el_361, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SynchronisationInformation_ExtIEs = { + "SynchronisationInformation-ExtIEs", + "SynchronisationInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SynchronisationInformation_ExtIEs_tags_361, + sizeof(asn_DEF_S1AP_SynchronisationInformation_ExtIEs_tags_361) + /sizeof(asn_DEF_S1AP_SynchronisationInformation_ExtIEs_tags_361[0]), /* 1 */ + asn_DEF_S1AP_SynchronisationInformation_ExtIEs_tags_361, /* Same as above */ + sizeof(asn_DEF_S1AP_SynchronisationInformation_ExtIEs_tags_361) + /sizeof(asn_DEF_S1AP_SynchronisationInformation_ExtIEs_tags_361[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SynchronisationInformation_ExtIEs_361, + 3, /* Elements count */ + &asn_SPC_S1AP_SynchronisationInformation_ExtIEs_specs_361 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_368 = { + sizeof(struct S1AP_SourceeNB_ID_ExtIEs__extensionValue), + offsetof(struct S1AP_SourceeNB_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_SourceeNB_ID_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_SourceeNB_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_368 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_368 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_SourceeNB_ID_ExtIEs_365[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ID_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_366, &asn_PER_memb_S1AP_id_constr_366, memb_S1AP_id_constraint_365 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_367, &asn_PER_memb_S1AP_criticality_constr_367, memb_S1AP_criticality_constraint_365 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ID_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_368, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_368, &asn_PER_memb_S1AP_extensionValue_constr_368, memb_S1AP_extensionValue_constraint_365 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SourceeNB_ID_ExtIEs_tags_365[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SourceeNB_ID_ExtIEs_tag2el_365[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SourceeNB_ID_ExtIEs_specs_365 = { + sizeof(struct S1AP_SourceeNB_ID_ExtIEs), + offsetof(struct S1AP_SourceeNB_ID_ExtIEs, _asn_ctx), + asn_MAP_S1AP_SourceeNB_ID_ExtIEs_tag2el_365, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SourceeNB_ID_ExtIEs = { + "SourceeNB-ID-ExtIEs", + "SourceeNB-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SourceeNB_ID_ExtIEs_tags_365, + sizeof(asn_DEF_S1AP_SourceeNB_ID_ExtIEs_tags_365) + /sizeof(asn_DEF_S1AP_SourceeNB_ID_ExtIEs_tags_365[0]), /* 1 */ + asn_DEF_S1AP_SourceeNB_ID_ExtIEs_tags_365, /* Same as above */ + sizeof(asn_DEF_S1AP_SourceeNB_ID_ExtIEs_tags_365) + /sizeof(asn_DEF_S1AP_SourceeNB_ID_ExtIEs_tags_365[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SourceeNB_ID_ExtIEs_365, + 3, /* Elements count */ + &asn_SPC_S1AP_SourceeNB_ID_ExtIEs_specs_365 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_372[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue, choice.MobilityInformation), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_MobilityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MobilityInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue, choice.UE_HistoryInformationFromTheUE), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_UE_HistoryInformationFromTheUE, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-HistoryInformationFromTheUE" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_372[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 0 }, /* MobilityInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 } /* UE-HistoryInformationFromTheUE */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_372 = { + sizeof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue), + offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_372, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_372 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_372, + 2, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_372 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_369[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_370, &asn_PER_memb_S1AP_id_constr_370, memb_S1AP_id_constraint_369 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_371, &asn_PER_memb_S1AP_criticality_constr_371, memb_S1AP_criticality_constraint_369 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_372, + select_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_372, &asn_PER_memb_S1AP_extensionValue_constr_372, memb_S1AP_extensionValue_constraint_369 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_tags_369[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_tag2el_369[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_specs_369 = { + sizeof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs), + offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs, _asn_ctx), + asn_MAP_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_tag2el_369, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs = { + "SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs", + "SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_tags_369, + sizeof(asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_tags_369) + /sizeof(asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_tags_369[0]), /* 1 */ + asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_tags_369, /* Same as above */ + sizeof(asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_tags_369) + /sizeof(asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_tags_369[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_369, + 3, /* Elements count */ + &asn_SPC_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_specs_369 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_376 = { + sizeof(struct S1AP_ServedGUMMEIsItem_ExtIEs__extensionValue), + offsetof(struct S1AP_ServedGUMMEIsItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ServedGUMMEIsItem_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ServedGUMMEIsItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_376 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_376 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ServedGUMMEIsItem_ExtIEs_373[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedGUMMEIsItem_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_374, &asn_PER_memb_S1AP_id_constr_374, memb_S1AP_id_constraint_373 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedGUMMEIsItem_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_375, &asn_PER_memb_S1AP_criticality_constr_375, memb_S1AP_criticality_constraint_373 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedGUMMEIsItem_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_376, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_376, &asn_PER_memb_S1AP_extensionValue_constr_376, memb_S1AP_extensionValue_constraint_373 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs_tags_373[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ServedGUMMEIsItem_ExtIEs_tag2el_373[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ServedGUMMEIsItem_ExtIEs_specs_373 = { + sizeof(struct S1AP_ServedGUMMEIsItem_ExtIEs), + offsetof(struct S1AP_ServedGUMMEIsItem_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ServedGUMMEIsItem_ExtIEs_tag2el_373, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs = { + "ServedGUMMEIsItem-ExtIEs", + "ServedGUMMEIsItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs_tags_373, + sizeof(asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs_tags_373) + /sizeof(asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs_tags_373[0]), /* 1 */ + asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs_tags_373, /* Same as above */ + sizeof(asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs_tags_373) + /sizeof(asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs_tags_373[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ServedGUMMEIsItem_ExtIEs_373, + 3, /* Elements count */ + &asn_SPC_S1AP_ServedGUMMEIsItem_ExtIEs_specs_373 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_380[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SupportedTAs_Item_ExtIEs__extensionValue, choice.RAT_Type), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_RAT_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RAT-Type" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_380[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* RAT-Type */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_380 = { + sizeof(struct S1AP_SupportedTAs_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_SupportedTAs_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_SupportedTAs_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_SupportedTAs_Item_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_380, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_380 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_380, + 1, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_380 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_SupportedTAs_Item_ExtIEs_377[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SupportedTAs_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_378, &asn_PER_memb_S1AP_id_constr_378, memb_S1AP_id_constraint_377 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SupportedTAs_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_SupportedTAs_Item_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_379, &asn_PER_memb_S1AP_criticality_constr_379, memb_S1AP_criticality_constraint_377 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_SupportedTAs_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_380, + select_SupportedTAs_Item_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_380, &asn_PER_memb_S1AP_extensionValue_constr_380, memb_S1AP_extensionValue_constraint_377 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SupportedTAs_Item_ExtIEs_tags_377[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SupportedTAs_Item_ExtIEs_tag2el_377[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SupportedTAs_Item_ExtIEs_specs_377 = { + sizeof(struct S1AP_SupportedTAs_Item_ExtIEs), + offsetof(struct S1AP_SupportedTAs_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_SupportedTAs_Item_ExtIEs_tag2el_377, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SupportedTAs_Item_ExtIEs = { + "SupportedTAs-Item-ExtIEs", + "SupportedTAs-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SupportedTAs_Item_ExtIEs_tags_377, + sizeof(asn_DEF_S1AP_SupportedTAs_Item_ExtIEs_tags_377) + /sizeof(asn_DEF_S1AP_SupportedTAs_Item_ExtIEs_tags_377[0]), /* 1 */ + asn_DEF_S1AP_SupportedTAs_Item_ExtIEs_tags_377, /* Same as above */ + sizeof(asn_DEF_S1AP_SupportedTAs_Item_ExtIEs_tags_377) + /sizeof(asn_DEF_S1AP_SupportedTAs_Item_ExtIEs_tags_377[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SupportedTAs_Item_ExtIEs_377, + 3, /* Elements count */ + &asn_SPC_S1AP_SupportedTAs_Item_ExtIEs_specs_377 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_384[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TimeSynchronisationInfo_ExtIEs__extensionValue, choice.MutingAvailabilityIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_MutingAvailabilityIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MutingAvailabilityIndication" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_384[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* MutingAvailabilityIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_384 = { + sizeof(struct S1AP_TimeSynchronisationInfo_ExtIEs__extensionValue), + offsetof(struct S1AP_TimeSynchronisationInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TimeSynchronisationInfo_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TimeSynchronisationInfo_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_384, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_384 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_384, + 1, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_384 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TimeSynchronisationInfo_ExtIEs_381[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TimeSynchronisationInfo_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_382, &asn_PER_memb_S1AP_id_constr_382, memb_S1AP_id_constraint_381 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TimeSynchronisationInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_TimeSynchronisationInfo_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_383, &asn_PER_memb_S1AP_criticality_constr_383, memb_S1AP_criticality_constraint_381 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TimeSynchronisationInfo_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_384, + select_TimeSynchronisationInfo_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_384, &asn_PER_memb_S1AP_extensionValue_constr_384, memb_S1AP_extensionValue_constraint_381 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs_tags_381[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TimeSynchronisationInfo_ExtIEs_tag2el_381[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TimeSynchronisationInfo_ExtIEs_specs_381 = { + sizeof(struct S1AP_TimeSynchronisationInfo_ExtIEs), + offsetof(struct S1AP_TimeSynchronisationInfo_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TimeSynchronisationInfo_ExtIEs_tag2el_381, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs = { + "TimeSynchronisationInfo-ExtIEs", + "TimeSynchronisationInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs_tags_381, + sizeof(asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs_tags_381) + /sizeof(asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs_tags_381[0]), /* 1 */ + asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs_tags_381, /* Same as above */ + sizeof(asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs_tags_381) + /sizeof(asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs_tags_381[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TimeSynchronisationInfo_ExtIEs_381, + 3, /* Elements count */ + &asn_SPC_S1AP_TimeSynchronisationInfo_ExtIEs_specs_381 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_388 = { + sizeof(struct S1AP_S_TMSI_ExtIEs__extensionValue), + offsetof(struct S1AP_S_TMSI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_S_TMSI_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_S_TMSI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_388 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_388 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_S_TMSI_ExtIEs_385[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S_TMSI_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_386, &asn_PER_memb_S1AP_id_constr_386, memb_S1AP_id_constraint_385 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S_TMSI_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_387, &asn_PER_memb_S1AP_criticality_constr_387, memb_S1AP_criticality_constraint_385 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_S_TMSI_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_388, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_388, &asn_PER_memb_S1AP_extensionValue_constr_388, memb_S1AP_extensionValue_constraint_385 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_S_TMSI_ExtIEs_tags_385[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_S_TMSI_ExtIEs_tag2el_385[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_S_TMSI_ExtIEs_specs_385 = { + sizeof(struct S1AP_S_TMSI_ExtIEs), + offsetof(struct S1AP_S_TMSI_ExtIEs, _asn_ctx), + asn_MAP_S1AP_S_TMSI_ExtIEs_tag2el_385, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_S_TMSI_ExtIEs = { + "S-TMSI-ExtIEs", + "S-TMSI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_S_TMSI_ExtIEs_tags_385, + sizeof(asn_DEF_S1AP_S_TMSI_ExtIEs_tags_385) + /sizeof(asn_DEF_S1AP_S_TMSI_ExtIEs_tags_385[0]), /* 1 */ + asn_DEF_S1AP_S_TMSI_ExtIEs_tags_385, /* Same as above */ + sizeof(asn_DEF_S1AP_S_TMSI_ExtIEs_tags_385) + /sizeof(asn_DEF_S1AP_S_TMSI_ExtIEs_tags_385[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_S_TMSI_ExtIEs_385, + 3, /* Elements count */ + &asn_SPC_S1AP_S_TMSI_ExtIEs_specs_385 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_392 = { + sizeof(struct S1AP_TAIBasedMDT_ExtIEs__extensionValue), + offsetof(struct S1AP_TAIBasedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TAIBasedMDT_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TAIBasedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_392 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_392 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TAIBasedMDT_ExtIEs_389[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIBasedMDT_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_390, &asn_PER_memb_S1AP_id_constr_390, memb_S1AP_id_constraint_389 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIBasedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_391, &asn_PER_memb_S1AP_criticality_constr_391, memb_S1AP_criticality_constraint_389 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIBasedMDT_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_392, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_392, &asn_PER_memb_S1AP_extensionValue_constr_392, memb_S1AP_extensionValue_constraint_389 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAIBasedMDT_ExtIEs_tags_389[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAIBasedMDT_ExtIEs_tag2el_389[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAIBasedMDT_ExtIEs_specs_389 = { + sizeof(struct S1AP_TAIBasedMDT_ExtIEs), + offsetof(struct S1AP_TAIBasedMDT_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TAIBasedMDT_ExtIEs_tag2el_389, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAIBasedMDT_ExtIEs = { + "TAIBasedMDT-ExtIEs", + "TAIBasedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAIBasedMDT_ExtIEs_tags_389, + sizeof(asn_DEF_S1AP_TAIBasedMDT_ExtIEs_tags_389) + /sizeof(asn_DEF_S1AP_TAIBasedMDT_ExtIEs_tags_389[0]), /* 1 */ + asn_DEF_S1AP_TAIBasedMDT_ExtIEs_tags_389, /* Same as above */ + sizeof(asn_DEF_S1AP_TAIBasedMDT_ExtIEs_tags_389) + /sizeof(asn_DEF_S1AP_TAIBasedMDT_ExtIEs_tags_389[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAIBasedMDT_ExtIEs_389, + 3, /* Elements count */ + &asn_SPC_S1AP_TAIBasedMDT_ExtIEs_specs_389 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_396 = { + sizeof(struct S1AP_TAI_ExtIEs__extensionValue), + offsetof(struct S1AP_TAI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TAI_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TAI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_396 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_396 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TAI_ExtIEs_393[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_394, &asn_PER_memb_S1AP_id_constr_394, memb_S1AP_id_constraint_393 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_395, &asn_PER_memb_S1AP_criticality_constr_395, memb_S1AP_criticality_constraint_393 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_396, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_396, &asn_PER_memb_S1AP_extensionValue_constr_396, memb_S1AP_extensionValue_constraint_393 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAI_ExtIEs_tags_393[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAI_ExtIEs_tag2el_393[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_ExtIEs_specs_393 = { + sizeof(struct S1AP_TAI_ExtIEs), + offsetof(struct S1AP_TAI_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TAI_ExtIEs_tag2el_393, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_ExtIEs = { + "TAI-ExtIEs", + "TAI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAI_ExtIEs_tags_393, + sizeof(asn_DEF_S1AP_TAI_ExtIEs_tags_393) + /sizeof(asn_DEF_S1AP_TAI_ExtIEs_tags_393[0]), /* 1 */ + asn_DEF_S1AP_TAI_ExtIEs_tags_393, /* Same as above */ + sizeof(asn_DEF_S1AP_TAI_ExtIEs_tags_393) + /sizeof(asn_DEF_S1AP_TAI_ExtIEs_tags_393[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAI_ExtIEs_393, + 3, /* Elements count */ + &asn_SPC_S1AP_TAI_ExtIEs_specs_393 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_400 = { + sizeof(struct S1AP_TAI_Broadcast_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_TAI_Broadcast_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TAI_Broadcast_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TAI_Broadcast_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_400 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_400 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TAI_Broadcast_Item_ExtIEs_397[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Broadcast_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_398, &asn_PER_memb_S1AP_id_constr_398, memb_S1AP_id_constraint_397 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Broadcast_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_399, &asn_PER_memb_S1AP_criticality_constr_399, memb_S1AP_criticality_constraint_397 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Broadcast_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_400, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_400, &asn_PER_memb_S1AP_extensionValue_constr_400, memb_S1AP_extensionValue_constraint_397 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs_tags_397[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAI_Broadcast_Item_ExtIEs_tag2el_397[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_Broadcast_Item_ExtIEs_specs_397 = { + sizeof(struct S1AP_TAI_Broadcast_Item_ExtIEs), + offsetof(struct S1AP_TAI_Broadcast_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TAI_Broadcast_Item_ExtIEs_tag2el_397, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs = { + "TAI-Broadcast-Item-ExtIEs", + "TAI-Broadcast-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs_tags_397, + sizeof(asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs_tags_397) + /sizeof(asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs_tags_397[0]), /* 1 */ + asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs_tags_397, /* Same as above */ + sizeof(asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs_tags_397) + /sizeof(asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs_tags_397[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAI_Broadcast_Item_ExtIEs_397, + 3, /* Elements count */ + &asn_SPC_S1AP_TAI_Broadcast_Item_ExtIEs_specs_397 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_404 = { + sizeof(struct S1AP_TAI_Cancelled_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_TAI_Cancelled_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TAI_Cancelled_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TAI_Cancelled_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_404 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_404 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TAI_Cancelled_Item_ExtIEs_401[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Cancelled_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_402, &asn_PER_memb_S1AP_id_constr_402, memb_S1AP_id_constraint_401 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Cancelled_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_403, &asn_PER_memb_S1AP_criticality_constr_403, memb_S1AP_criticality_constraint_401 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Cancelled_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_404, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_404, &asn_PER_memb_S1AP_extensionValue_constr_404, memb_S1AP_extensionValue_constraint_401 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs_tags_401[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAI_Cancelled_Item_ExtIEs_tag2el_401[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_Cancelled_Item_ExtIEs_specs_401 = { + sizeof(struct S1AP_TAI_Cancelled_Item_ExtIEs), + offsetof(struct S1AP_TAI_Cancelled_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TAI_Cancelled_Item_ExtIEs_tag2el_401, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs = { + "TAI-Cancelled-Item-ExtIEs", + "TAI-Cancelled-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs_tags_401, + sizeof(asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs_tags_401) + /sizeof(asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs_tags_401[0]), /* 1 */ + asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs_tags_401, /* Same as above */ + sizeof(asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs_tags_401) + /sizeof(asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs_tags_401[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAI_Cancelled_Item_ExtIEs_401, + 3, /* Elements count */ + &asn_SPC_S1AP_TAI_Cancelled_Item_ExtIEs_specs_401 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_408 = { + sizeof(struct S1AP_TABasedMDT_ExtIEs__extensionValue), + offsetof(struct S1AP_TABasedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TABasedMDT_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TABasedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_408 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_408 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TABasedMDT_ExtIEs_405[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TABasedMDT_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_406, &asn_PER_memb_S1AP_id_constr_406, memb_S1AP_id_constraint_405 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TABasedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_407, &asn_PER_memb_S1AP_criticality_constr_407, memb_S1AP_criticality_constraint_405 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TABasedMDT_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_408, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_408, &asn_PER_memb_S1AP_extensionValue_constr_408, memb_S1AP_extensionValue_constraint_405 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TABasedMDT_ExtIEs_tags_405[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TABasedMDT_ExtIEs_tag2el_405[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TABasedMDT_ExtIEs_specs_405 = { + sizeof(struct S1AP_TABasedMDT_ExtIEs), + offsetof(struct S1AP_TABasedMDT_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TABasedMDT_ExtIEs_tag2el_405, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TABasedMDT_ExtIEs = { + "TABasedMDT-ExtIEs", + "TABasedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TABasedMDT_ExtIEs_tags_405, + sizeof(asn_DEF_S1AP_TABasedMDT_ExtIEs_tags_405) + /sizeof(asn_DEF_S1AP_TABasedMDT_ExtIEs_tags_405[0]), /* 1 */ + asn_DEF_S1AP_TABasedMDT_ExtIEs_tags_405, /* Same as above */ + sizeof(asn_DEF_S1AP_TABasedMDT_ExtIEs_tags_405) + /sizeof(asn_DEF_S1AP_TABasedMDT_ExtIEs_tags_405[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TABasedMDT_ExtIEs_405, + 3, /* Elements count */ + &asn_SPC_S1AP_TABasedMDT_ExtIEs_specs_405 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_412 = { + sizeof(struct S1AP_CompletedCellinTAI_Item_ExtIEs__extensionValue), + offsetof(struct S1AP_CompletedCellinTAI_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_CompletedCellinTAI_Item_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_CompletedCellinTAI_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_412 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_412 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinTAI_Item_ExtIEs_409[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CompletedCellinTAI_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_410, &asn_PER_memb_S1AP_id_constr_410, memb_S1AP_id_constraint_409 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CompletedCellinTAI_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_411, &asn_PER_memb_S1AP_criticality_constr_411, memb_S1AP_criticality_constraint_409 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CompletedCellinTAI_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_412, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_412, &asn_PER_memb_S1AP_extensionValue_constr_412, memb_S1AP_extensionValue_constraint_409 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs_tags_409[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CompletedCellinTAI_Item_ExtIEs_tag2el_409[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CompletedCellinTAI_Item_ExtIEs_specs_409 = { + sizeof(struct S1AP_CompletedCellinTAI_Item_ExtIEs), + offsetof(struct S1AP_CompletedCellinTAI_Item_ExtIEs, _asn_ctx), + asn_MAP_S1AP_CompletedCellinTAI_Item_ExtIEs_tag2el_409, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs = { + "CompletedCellinTAI-Item-ExtIEs", + "CompletedCellinTAI-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs_tags_409, + sizeof(asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs_tags_409) + /sizeof(asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs_tags_409[0]), /* 1 */ + asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs_tags_409, /* Same as above */ + sizeof(asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs_tags_409) + /sizeof(asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs_tags_409[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CompletedCellinTAI_Item_ExtIEs_409, + 3, /* Elements count */ + &asn_SPC_S1AP_CompletedCellinTAI_Item_ExtIEs_specs_409 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_416 = { + sizeof(struct S1AP_TargeteNB_ID_ExtIEs__extensionValue), + offsetof(struct S1AP_TargeteNB_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TargeteNB_ID_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TargeteNB_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_416 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_416 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TargeteNB_ID_ExtIEs_413[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargeteNB_ID_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_414, &asn_PER_memb_S1AP_id_constr_414, memb_S1AP_id_constraint_413 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargeteNB_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_415, &asn_PER_memb_S1AP_criticality_constr_415, memb_S1AP_criticality_constraint_413 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TargeteNB_ID_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_416, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_416, &asn_PER_memb_S1AP_extensionValue_constr_416, memb_S1AP_extensionValue_constraint_413 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TargeteNB_ID_ExtIEs_tags_413[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TargeteNB_ID_ExtIEs_tag2el_413[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargeteNB_ID_ExtIEs_specs_413 = { + sizeof(struct S1AP_TargeteNB_ID_ExtIEs), + offsetof(struct S1AP_TargeteNB_ID_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TargeteNB_ID_ExtIEs_tag2el_413, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TargeteNB_ID_ExtIEs = { + "TargeteNB-ID-ExtIEs", + "TargeteNB-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TargeteNB_ID_ExtIEs_tags_413, + sizeof(asn_DEF_S1AP_TargeteNB_ID_ExtIEs_tags_413) + /sizeof(asn_DEF_S1AP_TargeteNB_ID_ExtIEs_tags_413[0]), /* 1 */ + asn_DEF_S1AP_TargeteNB_ID_ExtIEs_tags_413, /* Same as above */ + sizeof(asn_DEF_S1AP_TargeteNB_ID_ExtIEs_tags_413) + /sizeof(asn_DEF_S1AP_TargeteNB_ID_ExtIEs_tags_413[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TargeteNB_ID_ExtIEs_413, + 3, /* Elements count */ + &asn_SPC_S1AP_TargeteNB_ID_ExtIEs_specs_413 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_420 = { + sizeof(struct S1AP_TargetRNC_ID_ExtIEs__extensionValue), + offsetof(struct S1AP_TargetRNC_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TargetRNC_ID_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TargetRNC_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_420 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_420 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TargetRNC_ID_ExtIEs_417[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargetRNC_ID_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_418, &asn_PER_memb_S1AP_id_constr_418, memb_S1AP_id_constraint_417 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargetRNC_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_419, &asn_PER_memb_S1AP_criticality_constr_419, memb_S1AP_criticality_constraint_417 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TargetRNC_ID_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_420, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_420, &asn_PER_memb_S1AP_extensionValue_constr_420, memb_S1AP_extensionValue_constraint_417 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TargetRNC_ID_ExtIEs_tags_417[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TargetRNC_ID_ExtIEs_tag2el_417[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargetRNC_ID_ExtIEs_specs_417 = { + sizeof(struct S1AP_TargetRNC_ID_ExtIEs), + offsetof(struct S1AP_TargetRNC_ID_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TargetRNC_ID_ExtIEs_tag2el_417, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TargetRNC_ID_ExtIEs = { + "TargetRNC-ID-ExtIEs", + "TargetRNC-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TargetRNC_ID_ExtIEs_tags_417, + sizeof(asn_DEF_S1AP_TargetRNC_ID_ExtIEs_tags_417) + /sizeof(asn_DEF_S1AP_TargetRNC_ID_ExtIEs_tags_417[0]), /* 1 */ + asn_DEF_S1AP_TargetRNC_ID_ExtIEs_tags_417, /* Same as above */ + sizeof(asn_DEF_S1AP_TargetRNC_ID_ExtIEs_tags_417) + /sizeof(asn_DEF_S1AP_TargetRNC_ID_ExtIEs_tags_417[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TargetRNC_ID_ExtIEs_417, + 3, /* Elements count */ + &asn_SPC_S1AP_TargetRNC_ID_ExtIEs_specs_417 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_424 = { + sizeof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue), + offsetof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_424 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_424 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_421[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_422, &asn_PER_memb_S1AP_id_constr_422, memb_S1AP_id_constraint_421 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_423, &asn_PER_memb_S1AP_criticality_constr_423, memb_S1AP_criticality_constraint_421 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_424, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_424, &asn_PER_memb_S1AP_extensionValue_constr_424, memb_S1AP_extensionValue_constraint_421 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_tags_421[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_tag2el_421[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_specs_421 = { + sizeof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs), + offsetof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_tag2el_421, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs = { + "TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs", + "TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_tags_421, + sizeof(asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_tags_421) + /sizeof(asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_tags_421[0]), /* 1 */ + asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_tags_421, /* Same as above */ + sizeof(asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_tags_421) + /sizeof(asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_tags_421[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_421, + 3, /* Elements count */ + &asn_SPC_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_specs_421 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_428 = { + sizeof(struct S1AP_M1ThresholdEventA2_ExtIEs__extensionValue), + offsetof(struct S1AP_M1ThresholdEventA2_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_M1ThresholdEventA2_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_M1ThresholdEventA2_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_428 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_428 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_M1ThresholdEventA2_ExtIEs_425[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M1ThresholdEventA2_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_426, &asn_PER_memb_S1AP_id_constr_426, memb_S1AP_id_constraint_425 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_M1ThresholdEventA2_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_427, &asn_PER_memb_S1AP_criticality_constr_427, memb_S1AP_criticality_constraint_425 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_M1ThresholdEventA2_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_428, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_428, &asn_PER_memb_S1AP_extensionValue_constr_428, memb_S1AP_extensionValue_constraint_425 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs_tags_425[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_M1ThresholdEventA2_ExtIEs_tag2el_425[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_M1ThresholdEventA2_ExtIEs_specs_425 = { + sizeof(struct S1AP_M1ThresholdEventA2_ExtIEs), + offsetof(struct S1AP_M1ThresholdEventA2_ExtIEs, _asn_ctx), + asn_MAP_S1AP_M1ThresholdEventA2_ExtIEs_tag2el_425, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs = { + "M1ThresholdEventA2-ExtIEs", + "M1ThresholdEventA2-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs_tags_425, + sizeof(asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs_tags_425) + /sizeof(asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs_tags_425[0]), /* 1 */ + asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs_tags_425, /* Same as above */ + sizeof(asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs_tags_425) + /sizeof(asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs_tags_425[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_M1ThresholdEventA2_ExtIEs_425, + 3, /* Elements count */ + &asn_SPC_S1AP_M1ThresholdEventA2_ExtIEs_specs_425 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_432[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceActivation_ExtIEs__extensionValue, choice.MDT_Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MDT_Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDT-Configuration" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_432[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* MDT-Configuration */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_432 = { + sizeof(struct S1AP_TraceActivation_ExtIEs__extensionValue), + offsetof(struct S1AP_TraceActivation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_TraceActivation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_TraceActivation_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_432, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_432 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_432, + 1, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_432 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TraceActivation_ExtIEs_429[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceActivation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_430, &asn_PER_memb_S1AP_id_constr_430, memb_S1AP_id_constraint_429 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceActivation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_TraceActivation_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_431, &asn_PER_memb_S1AP_criticality_constr_431, memb_S1AP_criticality_constraint_429 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceActivation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_432, + select_TraceActivation_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_432, &asn_PER_memb_S1AP_extensionValue_constr_432, memb_S1AP_extensionValue_constraint_429 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TraceActivation_ExtIEs_tags_429[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TraceActivation_ExtIEs_tag2el_429[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceActivation_ExtIEs_specs_429 = { + sizeof(struct S1AP_TraceActivation_ExtIEs), + offsetof(struct S1AP_TraceActivation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_TraceActivation_ExtIEs_tag2el_429, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TraceActivation_ExtIEs = { + "TraceActivation-ExtIEs", + "TraceActivation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TraceActivation_ExtIEs_tags_429, + sizeof(asn_DEF_S1AP_TraceActivation_ExtIEs_tags_429) + /sizeof(asn_DEF_S1AP_TraceActivation_ExtIEs_tags_429[0]), /* 1 */ + asn_DEF_S1AP_TraceActivation_ExtIEs_tags_429, /* Same as above */ + sizeof(asn_DEF_S1AP_TraceActivation_ExtIEs_tags_429) + /sizeof(asn_DEF_S1AP_TraceActivation_ExtIEs_tags_429[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TraceActivation_ExtIEs_429, + 3, /* Elements count */ + &asn_SPC_S1AP_TraceActivation_ExtIEs_specs_429 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_436 = { + sizeof(struct S1AP_Tunnel_Information_ExtIEs__extensionValue), + offsetof(struct S1AP_Tunnel_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_Tunnel_Information_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_Tunnel_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_436 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_436 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_Tunnel_Information_ExtIEs_433[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Tunnel_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_434, &asn_PER_memb_S1AP_id_constr_434, memb_S1AP_id_constraint_433 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Tunnel_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_435, &asn_PER_memb_S1AP_criticality_constr_435, memb_S1AP_criticality_constraint_433 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_Tunnel_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_436, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_436, &asn_PER_memb_S1AP_extensionValue_constr_436, memb_S1AP_extensionValue_constraint_433 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Tunnel_Information_ExtIEs_tags_433[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Tunnel_Information_ExtIEs_tag2el_433[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_Tunnel_Information_ExtIEs_specs_433 = { + sizeof(struct S1AP_Tunnel_Information_ExtIEs), + offsetof(struct S1AP_Tunnel_Information_ExtIEs, _asn_ctx), + asn_MAP_S1AP_Tunnel_Information_ExtIEs_tag2el_433, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Tunnel_Information_ExtIEs = { + "Tunnel-Information-ExtIEs", + "Tunnel-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Tunnel_Information_ExtIEs_tags_433, + sizeof(asn_DEF_S1AP_Tunnel_Information_ExtIEs_tags_433) + /sizeof(asn_DEF_S1AP_Tunnel_Information_ExtIEs_tags_433[0]), /* 1 */ + asn_DEF_S1AP_Tunnel_Information_ExtIEs_tags_433, /* Same as above */ + sizeof(asn_DEF_S1AP_Tunnel_Information_ExtIEs_tags_433) + /sizeof(asn_DEF_S1AP_Tunnel_Information_ExtIEs_tags_433[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Tunnel_Information_ExtIEs_433, + 3, /* Elements count */ + &asn_SPC_S1AP_Tunnel_Information_ExtIEs_specs_433 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_440 = { + sizeof(struct S1AP_UEAggregate_MaximumBitrates_ExtIEs__extensionValue), + offsetof(struct S1AP_UEAggregate_MaximumBitrates_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_UEAggregate_MaximumBitrates_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_UEAggregate_MaximumBitrates_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_440 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_440 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEAggregate_MaximumBitrates_ExtIEs_437[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEAggregate_MaximumBitrates_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_438, &asn_PER_memb_S1AP_id_constr_438, memb_S1AP_id_constraint_437 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEAggregate_MaximumBitrates_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_439, &asn_PER_memb_S1AP_criticality_constr_439, memb_S1AP_criticality_constraint_437 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEAggregate_MaximumBitrates_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_440, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_440, &asn_PER_memb_S1AP_extensionValue_constr_440, memb_S1AP_extensionValue_constraint_437 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs_tags_437[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEAggregate_MaximumBitrates_ExtIEs_tag2el_437[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEAggregate_MaximumBitrates_ExtIEs_specs_437 = { + sizeof(struct S1AP_UEAggregate_MaximumBitrates_ExtIEs), + offsetof(struct S1AP_UEAggregate_MaximumBitrates_ExtIEs, _asn_ctx), + asn_MAP_S1AP_UEAggregate_MaximumBitrates_ExtIEs_tag2el_437, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs = { + "UEAggregate-MaximumBitrates-ExtIEs", + "UEAggregate-MaximumBitrates-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs_tags_437, + sizeof(asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs_tags_437) + /sizeof(asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs_tags_437[0]), /* 1 */ + asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs_tags_437, /* Same as above */ + sizeof(asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs_tags_437) + /sizeof(asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs_tags_437[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEAggregate_MaximumBitrates_ExtIEs_437, + 3, /* Elements count */ + &asn_SPC_S1AP_UEAggregate_MaximumBitrates_ExtIEs_specs_437 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_444 = { + sizeof(struct S1AP_UE_S1AP_ID_pair_ExtIEs__extensionValue), + offsetof(struct S1AP_UE_S1AP_ID_pair_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_UE_S1AP_ID_pair_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_UE_S1AP_ID_pair_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_444 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_444 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UE_S1AP_ID_pair_ExtIEs_441[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_S1AP_ID_pair_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_442, &asn_PER_memb_S1AP_id_constr_442, memb_S1AP_id_constraint_441 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_S1AP_ID_pair_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_443, &asn_PER_memb_S1AP_criticality_constr_443, memb_S1AP_criticality_constraint_441 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_S1AP_ID_pair_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_444, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_444, &asn_PER_memb_S1AP_extensionValue_constr_444, memb_S1AP_extensionValue_constraint_441 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs_tags_441[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UE_S1AP_ID_pair_ExtIEs_tag2el_441[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_S1AP_ID_pair_ExtIEs_specs_441 = { + sizeof(struct S1AP_UE_S1AP_ID_pair_ExtIEs), + offsetof(struct S1AP_UE_S1AP_ID_pair_ExtIEs, _asn_ctx), + asn_MAP_S1AP_UE_S1AP_ID_pair_ExtIEs_tag2el_441, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs = { + "UE-S1AP-ID-pair-ExtIEs", + "UE-S1AP-ID-pair-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs_tags_441, + sizeof(asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs_tags_441) + /sizeof(asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs_tags_441[0]), /* 1 */ + asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs_tags_441, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs_tags_441) + /sizeof(asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs_tags_441[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UE_S1AP_ID_pair_ExtIEs_441, + 3, /* Elements count */ + &asn_SPC_S1AP_UE_S1AP_ID_pair_ExtIEs_specs_441 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_448 = { + sizeof(struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue, present), + sizeof(((struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_448 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_448 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_445[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_446, &asn_PER_memb_S1AP_id_constr_446, memb_S1AP_id_constraint_445 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_447, &asn_PER_memb_S1AP_criticality_constr_447, memb_S1AP_criticality_constraint_445 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_448, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_448, &asn_PER_memb_S1AP_extensionValue_constr_448, memb_S1AP_extensionValue_constraint_445 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_tags_445[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_tag2el_445[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_specs_445 = { + sizeof(struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs, _asn_ctx), + asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_tag2el_445, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs = { + "UE-associatedLogicalS1-ConnectionItemExtIEs", + "UE-associatedLogicalS1-ConnectionItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_tags_445, + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_tags_445) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_tags_445[0]), /* 1 */ + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_tags_445, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_tags_445) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_tags_445[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_445, + 3, /* Elements count */ + &asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_specs_445 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_452 = { + sizeof(struct S1AP_UESecurityCapabilities_ExtIEs__extensionValue), + offsetof(struct S1AP_UESecurityCapabilities_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_UESecurityCapabilities_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_UESecurityCapabilities_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_452 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_452 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UESecurityCapabilities_ExtIEs_449[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UESecurityCapabilities_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_450, &asn_PER_memb_S1AP_id_constr_450, memb_S1AP_id_constraint_449 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UESecurityCapabilities_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_451, &asn_PER_memb_S1AP_criticality_constr_451, memb_S1AP_criticality_constraint_449 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UESecurityCapabilities_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_452, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_452, &asn_PER_memb_S1AP_extensionValue_constr_452, memb_S1AP_extensionValue_constraint_449 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UESecurityCapabilities_ExtIEs_tags_449[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UESecurityCapabilities_ExtIEs_tag2el_449[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UESecurityCapabilities_ExtIEs_specs_449 = { + sizeof(struct S1AP_UESecurityCapabilities_ExtIEs), + offsetof(struct S1AP_UESecurityCapabilities_ExtIEs, _asn_ctx), + asn_MAP_S1AP_UESecurityCapabilities_ExtIEs_tag2el_449, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UESecurityCapabilities_ExtIEs = { + "UESecurityCapabilities-ExtIEs", + "UESecurityCapabilities-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UESecurityCapabilities_ExtIEs_tags_449, + sizeof(asn_DEF_S1AP_UESecurityCapabilities_ExtIEs_tags_449) + /sizeof(asn_DEF_S1AP_UESecurityCapabilities_ExtIEs_tags_449[0]), /* 1 */ + asn_DEF_S1AP_UESecurityCapabilities_ExtIEs_tags_449, /* Same as above */ + sizeof(asn_DEF_S1AP_UESecurityCapabilities_ExtIEs_tags_449) + /sizeof(asn_DEF_S1AP_UESecurityCapabilities_ExtIEs_tags_449[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UESecurityCapabilities_ExtIEs_449, + 3, /* Elements count */ + &asn_SPC_S1AP_UESecurityCapabilities_ExtIEs_specs_449 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_456 = { + sizeof(struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue), + offsetof(struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_456 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_456 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_453[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_454, &asn_PER_memb_S1AP_id_constr_454, memb_S1AP_id_constraint_453 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_455, &asn_PER_memb_S1AP_criticality_constr_455, memb_S1AP_criticality_constraint_453 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_456, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_456, &asn_PER_memb_S1AP_extensionValue_constr_456, memb_S1AP_extensionValue_constraint_453 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_tags_453[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_tag2el_453[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_specs_453 = { + sizeof(struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs), + offsetof(struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs, _asn_ctx), + asn_MAP_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_tag2el_453, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs = { + "UE-Sidelink-Aggregate-MaximumBitrates-ExtIEs", + "UE-Sidelink-Aggregate-MaximumBitrates-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_tags_453, + sizeof(asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_tags_453) + /sizeof(asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_tags_453[0]), /* 1 */ + asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_tags_453, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_tags_453) + /sizeof(asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_tags_453[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_453, + 3, /* Elements count */ + &asn_SPC_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_specs_453 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_460 = { + sizeof(struct S1AP_UL_CP_SecurityInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_UL_CP_SecurityInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_UL_CP_SecurityInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_UL_CP_SecurityInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_460 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_460 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UL_CP_SecurityInformation_ExtIEs_457[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UL_CP_SecurityInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_458, &asn_PER_memb_S1AP_id_constr_458, memb_S1AP_id_constraint_457 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UL_CP_SecurityInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_459, &asn_PER_memb_S1AP_criticality_constr_459, memb_S1AP_criticality_constraint_457 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UL_CP_SecurityInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_460, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_460, &asn_PER_memb_S1AP_extensionValue_constr_460, memb_S1AP_extensionValue_constraint_457 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs_tags_457[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UL_CP_SecurityInformation_ExtIEs_tag2el_457[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UL_CP_SecurityInformation_ExtIEs_specs_457 = { + sizeof(struct S1AP_UL_CP_SecurityInformation_ExtIEs), + offsetof(struct S1AP_UL_CP_SecurityInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_UL_CP_SecurityInformation_ExtIEs_tag2el_457, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs = { + "UL-CP-SecurityInformation-ExtIEs", + "UL-CP-SecurityInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs_tags_457, + sizeof(asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs_tags_457) + /sizeof(asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs_tags_457[0]), /* 1 */ + asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs_tags_457, /* Same as above */ + sizeof(asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs_tags_457) + /sizeof(asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs_tags_457[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UL_CP_SecurityInformation_ExtIEs_457, + 3, /* Elements count */ + &asn_SPC_S1AP_UL_CP_SecurityInformation_ExtIEs_specs_457 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_464 = { + sizeof(struct S1AP_UserLocationInformation_ExtIEs__extensionValue), + offsetof(struct S1AP_UserLocationInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_UserLocationInformation_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_UserLocationInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_464 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_464 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UserLocationInformation_ExtIEs_461[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UserLocationInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_462, &asn_PER_memb_S1AP_id_constr_462, memb_S1AP_id_constraint_461 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UserLocationInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_463, &asn_PER_memb_S1AP_criticality_constr_463, memb_S1AP_criticality_constraint_461 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UserLocationInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_464, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_464, &asn_PER_memb_S1AP_extensionValue_constr_464, memb_S1AP_extensionValue_constraint_461 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UserLocationInformation_ExtIEs_tags_461[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UserLocationInformation_ExtIEs_tag2el_461[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UserLocationInformation_ExtIEs_specs_461 = { + sizeof(struct S1AP_UserLocationInformation_ExtIEs), + offsetof(struct S1AP_UserLocationInformation_ExtIEs, _asn_ctx), + asn_MAP_S1AP_UserLocationInformation_ExtIEs_tag2el_461, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UserLocationInformation_ExtIEs = { + "UserLocationInformation-ExtIEs", + "UserLocationInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UserLocationInformation_ExtIEs_tags_461, + sizeof(asn_DEF_S1AP_UserLocationInformation_ExtIEs_tags_461) + /sizeof(asn_DEF_S1AP_UserLocationInformation_ExtIEs_tags_461[0]), /* 1 */ + asn_DEF_S1AP_UserLocationInformation_ExtIEs_tags_461, /* Same as above */ + sizeof(asn_DEF_S1AP_UserLocationInformation_ExtIEs_tags_461) + /sizeof(asn_DEF_S1AP_UserLocationInformation_ExtIEs_tags_461[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UserLocationInformation_ExtIEs_461, + 3, /* Elements count */ + &asn_SPC_S1AP_UserLocationInformation_ExtIEs_specs_461 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_468 = { + sizeof(struct S1AP_V2XServicesAuthorized_ExtIEs__extensionValue), + offsetof(struct S1AP_V2XServicesAuthorized_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_V2XServicesAuthorized_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_V2XServicesAuthorized_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_468 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_468 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_V2XServicesAuthorized_ExtIEs_465[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_V2XServicesAuthorized_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_466, &asn_PER_memb_S1AP_id_constr_466, memb_S1AP_id_constraint_465 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_V2XServicesAuthorized_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_467, &asn_PER_memb_S1AP_criticality_constr_467, memb_S1AP_criticality_constraint_465 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_V2XServicesAuthorized_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_468, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_468, &asn_PER_memb_S1AP_extensionValue_constr_468, memb_S1AP_extensionValue_constraint_465 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs_tags_465[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_V2XServicesAuthorized_ExtIEs_tag2el_465[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_V2XServicesAuthorized_ExtIEs_specs_465 = { + sizeof(struct S1AP_V2XServicesAuthorized_ExtIEs), + offsetof(struct S1AP_V2XServicesAuthorized_ExtIEs, _asn_ctx), + asn_MAP_S1AP_V2XServicesAuthorized_ExtIEs_tag2el_465, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs = { + "V2XServicesAuthorized-ExtIEs", + "V2XServicesAuthorized-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs_tags_465, + sizeof(asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs_tags_465) + /sizeof(asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs_tags_465[0]), /* 1 */ + asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs_tags_465, /* Same as above */ + sizeof(asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs_tags_465) + /sizeof(asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs_tags_465[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_V2XServicesAuthorized_ExtIEs_465, + 3, /* Elements count */ + &asn_SPC_S1AP_V2XServicesAuthorized_ExtIEs_specs_465 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_extensionValue_472[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue, choice.ENBX2ExtTLAs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBX2ExtTLAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBX2ExtTLAs" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue, choice.ENBIndirectX2TransportLayerAddresses), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBIndirectX2TransportLayerAddresses, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBIndirectX2TransportLayerAddresses" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_extensionValue_tag2el_472[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* ENBX2ExtTLAs */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* ENBIndirectX2TransportLayerAddresses */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_472 = { + sizeof(struct S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue), + offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue *)0)->present), + asn_MAP_S1AP_extensionValue_tag2el_472, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_472 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_extensionValue_472, + 2, /* Elements count */ + &asn_SPC_S1AP_extensionValue_specs_472 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_X2TNLConfigurationInfo_ExtIEs_469[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_470, &asn_PER_memb_S1AP_id_constr_470, memb_S1AP_id_constraint_469 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_X2TNLConfigurationInfo_ExtIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_471, &asn_PER_memb_S1AP_criticality_constr_471, memb_S1AP_criticality_constraint_469 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_472, + select_X2TNLConfigurationInfo_ExtIEs_S1AP_extensionValue_type, + { &asn_OER_memb_S1AP_extensionValue_constr_472, &asn_PER_memb_S1AP_extensionValue_constr_472, memb_S1AP_extensionValue_constraint_469 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs_tags_469[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_X2TNLConfigurationInfo_ExtIEs_tag2el_469[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_X2TNLConfigurationInfo_ExtIEs_specs_469 = { + sizeof(struct S1AP_X2TNLConfigurationInfo_ExtIEs), + offsetof(struct S1AP_X2TNLConfigurationInfo_ExtIEs, _asn_ctx), + asn_MAP_S1AP_X2TNLConfigurationInfo_ExtIEs_tag2el_469, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs = { + "X2TNLConfigurationInfo-ExtIEs", + "X2TNLConfigurationInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs_tags_469, + sizeof(asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs_tags_469) + /sizeof(asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs_tags_469[0]), /* 1 */ + asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs_tags_469, /* Same as above */ + sizeof(asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs_tags_469) + /sizeof(asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs_tags_469[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_X2TNLConfigurationInfo_ExtIEs_469, + 3, /* Elements count */ + &asn_SPC_S1AP_X2TNLConfigurationInfo_ExtIEs_specs_469 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_extensionValue_specs_476 = { + sizeof(struct S1AP_ENBX2ExtTLA_ExtIEs__extensionValue), + offsetof(struct S1AP_ENBX2ExtTLA_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1AP_ENBX2ExtTLA_ExtIEs__extensionValue, present), + sizeof(((struct S1AP_ENBX2ExtTLA_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_extensionValue_476 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_extensionValue_specs_476 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ENBX2ExtTLA_ExtIEs_473[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBX2ExtTLA_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionID, + 0, + { &asn_OER_memb_S1AP_id_constr_474, &asn_PER_memb_S1AP_id_constr_474, memb_S1AP_id_constraint_473 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBX2ExtTLA_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_475, &asn_PER_memb_S1AP_criticality_constr_475, memb_S1AP_criticality_constraint_473 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBX2ExtTLA_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_extensionValue_476, + 0, + { &asn_OER_memb_S1AP_extensionValue_constr_476, &asn_PER_memb_S1AP_extensionValue_constr_476, memb_S1AP_extensionValue_constraint_473 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs_tags_473[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBX2ExtTLA_ExtIEs_tag2el_473[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBX2ExtTLA_ExtIEs_specs_473 = { + sizeof(struct S1AP_ENBX2ExtTLA_ExtIEs), + offsetof(struct S1AP_ENBX2ExtTLA_ExtIEs, _asn_ctx), + asn_MAP_S1AP_ENBX2ExtTLA_ExtIEs_tag2el_473, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs = { + "ENBX2ExtTLA-ExtIEs", + "ENBX2ExtTLA-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs_tags_473, + sizeof(asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs_tags_473) + /sizeof(asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs_tags_473[0]), /* 1 */ + asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs_tags_473, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs_tags_473) + /sizeof(asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs_tags_473[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBX2ExtTLA_ExtIEs_473, + 3, /* Elements count */ + &asn_SPC_S1AP_ENBX2ExtTLA_ExtIEs_specs_473 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.h b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.h new file mode 100644 index 0000000000..bb5bdeeabb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionField.h @@ -0,0 +1,2734 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolExtensionField_H_ +#define _S1AP_ProtocolExtensionField_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolExtensionID.h" +#include "S1AP_Criticality.h" +#include +#include +#include +#include +#include +#include "S1AP_Data-Forwarding-Not-Possible.h" +#include "S1AP_Presence.h" +#include "S1AP_BearerType.h" +#include "S1AP_Correlation-ID.h" +#include "S1AP_TransportInformation.h" +#include "S1AP_COUNTValueExtended.h" +#include "S1AP_ReceiveStatusOfULPDCPSDUsExtended.h" +#include "S1AP_COUNTvaluePDCP-SNlength18.h" +#include "S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h" +#include "S1AP_M3Configuration.h" +#include "S1AP_M4Configuration.h" +#include "S1AP_M5Configuration.h" +#include "S1AP_MDT-Location-Info.h" +#include "S1AP_M6Configuration.h" +#include "S1AP_M7Configuration.h" +#include "S1AP_Time-UE-StayedInCell-EnhancedGranularity.h" +#include "S1AP_Cause.h" +#include "S1AP_MDTPLMNList.h" +#include "S1AP_ProSeUEtoNetworkRelaying.h" +#include "S1AP_TimeSynchronisationInfo.h" +#include "S1AP_MutingPatternInformation.h" +#include "S1AP_X2TNLConfigurationInfo.h" +#include "S1AP_SynchronisationInformation.h" +#include "S1AP_MobilityInformation.h" +#include "S1AP_UE-HistoryInformationFromTheUE.h" +#include "S1AP_RAT-Type.h" +#include "S1AP_MutingAvailabilityIndication.h" +#include "S1AP_MDT-Configuration.h" +#include "S1AP_ENBX2ExtTLAs.h" +#include "S1AP_ENBIndirectX2TransportLayerAddresses.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_E_RABDataForwardingItem_ExtIEs__extensionValue_PR { + E_RABDataForwardingItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABDataForwardingItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR { + E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR_Data_Forwarding_Not_Possible, + E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR_BearerType +} S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABAdmittedItem_ExtIEs__extensionValue_PR { + E_RABAdmittedItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABAdmittedItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue_PR { + E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABToBeSwitchedDLItem_ExtIEs__extensionValue_PR { + E_RABToBeSwitchedDLItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABToBeSwitchedDLItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABToBeSwitchedULItem_ExtIEs__extensionValue_PR { + E_RABToBeSwitchedULItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABToBeSwitchedULItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR { + E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR_Correlation_ID, + E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR_BearerType +} S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABSetupItemBearerSUResExtIEs__extensionValue_PR { + E_RABSetupItemBearerSUResExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABSetupItemBearerSUResExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR { + E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR_TransportInformation +} S1AP_E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABModifyItemBearerModResExtIEs__extensionValue_PR { + E_RABModifyItemBearerModResExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABModifyItemBearerModResExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABReleaseItemBearerRelCompExtIEs__extensionValue_PR { + E_RABReleaseItemBearerRelCompExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABReleaseItemBearerRelCompExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR { + E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR_Correlation_ID, + E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR_BearerType +} S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABSetupItemCtxtSUResExtIEs__extensionValue_PR { + E_RABSetupItemCtxtSUResExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABSetupItemCtxtSUResExtIEs__extensionValue_PR; +typedef enum S1AP_TAIItemExtIEs__extensionValue_PR { + TAIItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_TAIItemExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR { + E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR { + E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR; +typedef enum S1AP_CSGMembershipInfo_ExtIEs__extensionValue_PR { + CSGMembershipInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CSGMembershipInfo_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABModifyItemBearerModConfExtIEs__extensionValue_PR { + E_RABModifyItemBearerModConfExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABModifyItemBearerModConfExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue_PR { + E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue_PR { + E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue_PR; +typedef enum S1AP_Additional_GUTI_ExtIEs__extensionValue_PR { + Additional_GUTI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_Additional_GUTI_ExtIEs__extensionValue_PR; +typedef enum S1AP_AllocationAndRetentionPriority_ExtIEs__extensionValue_PR { + AllocationAndRetentionPriority_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_AllocationAndRetentionPriority_ExtIEs__extensionValue_PR; +typedef enum S1AP_InformationForCECapableUEs_ExtIEs__extensionValue_PR { + InformationForCECapableUEs_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_InformationForCECapableUEs_ExtIEs__extensionValue_PR; +typedef enum S1AP_AssistanceDataForPaging_ExtIEs__extensionValue_PR { + AssistanceDataForPaging_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_AssistanceDataForPaging_ExtIEs__extensionValue_PR; +typedef enum S1AP_AssistanceDataForRecommendedCells_ExtIEs__extensionValue_PR { + AssistanceDataForRecommendedCells_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_AssistanceDataForRecommendedCells_ExtIEs__extensionValue_PR; +typedef enum S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR { + Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_NOTHING, /* No components present */ + Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTValueExtended, + Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_ReceiveStatusOfULPDCPSDUsExtended, + Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTvaluePDCP_SNlength18, + Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 +} S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR; +typedef enum S1AP_CancelledCellinEAI_Item_ExtIEs__extensionValue_PR { + CancelledCellinEAI_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CancelledCellinEAI_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_CancelledCellinTAI_Item_ExtIEs__extensionValue_PR { + CancelledCellinTAI_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CancelledCellinTAI_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue_PR { + CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue_PR; +typedef enum S1AP_CellID_Broadcast_Item_ExtIEs__extensionValue_PR { + CellID_Broadcast_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CellID_Broadcast_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_CellID_Cancelled_Item_ExtIEs__extensionValue_PR { + CellID_Cancelled_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CellID_Cancelled_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_CellBasedMDT_ExtIEs__extensionValue_PR { + CellBasedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CellBasedMDT_ExtIEs__extensionValue_PR; +typedef enum S1AP_Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue_PR { + Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue_PR; +typedef enum S1AP_CellType_ExtIEs__extensionValue_PR { + CellType_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CellType_ExtIEs__extensionValue_PR; +typedef enum S1AP_CGI_ExtIEs__extensionValue_PR { + CGI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CGI_ExtIEs__extensionValue_PR; +typedef enum S1AP_CSG_IdList_Item_ExtIEs__extensionValue_PR { + CSG_IdList_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CSG_IdList_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_COUNTvalue_ExtIEs__extensionValue_PR { + COUNTvalue_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_COUNTvalue_ExtIEs__extensionValue_PR; +typedef enum S1AP_COUNTValueExtended_ExtIEs__extensionValue_PR { + COUNTValueExtended_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_COUNTValueExtended_ExtIEs__extensionValue_PR; +typedef enum S1AP_COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR { + COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR; +typedef enum S1AP_CriticalityDiagnostics_ExtIEs__extensionValue_PR { + CriticalityDiagnostics_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CriticalityDiagnostics_ExtIEs__extensionValue_PR; +typedef enum S1AP_CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue_PR { + CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_ServedDCNsItem_ExtIEs__extensionValue_PR { + ServedDCNsItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_ServedDCNsItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_DL_CP_SecurityInformation_ExtIEs__extensionValue_PR { + DL_CP_SecurityInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_DL_CP_SecurityInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue_PR { + EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue_PR { + EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_CompletedCellinEAI_Item_ExtIEs__extensionValue_PR { + CompletedCellinEAI_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CompletedCellinEAI_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_GERAN_Cell_ID_ExtIEs__extensionValue_PR { + GERAN_Cell_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_GERAN_Cell_ID_ExtIEs__extensionValue_PR; +typedef enum S1AP_GlobalENB_ID_ExtIEs__extensionValue_PR { + GlobalENB_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_GlobalENB_ID_ExtIEs__extensionValue_PR; +typedef enum S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue_PR { + ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABInformationListItem_ExtIEs__extensionValue_PR { + E_RABInformationListItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABInformationListItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABItem_ExtIEs__extensionValue_PR { + E_RABItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_E_RABQoSParameters_ExtIEs__extensionValue_PR { + E_RABQoSParameters_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_E_RABQoSParameters_ExtIEs__extensionValue_PR; +typedef enum S1AP_EUTRAN_CGI_ExtIEs__extensionValue_PR { + EUTRAN_CGI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_EUTRAN_CGI_ExtIEs__extensionValue_PR; +typedef enum S1AP_ExpectedUEBehaviour_ExtIEs__extensionValue_PR { + ExpectedUEBehaviour_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_ExpectedUEBehaviour_ExtIEs__extensionValue_PR; +typedef enum S1AP_ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR { + ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR; +typedef enum S1AP_ForbiddenTAs_Item_ExtIEs__extensionValue_PR { + ForbiddenTAs_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_ForbiddenTAs_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_ForbiddenLAs_Item_ExtIEs__extensionValue_PR { + ForbiddenLAs_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_ForbiddenLAs_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_GBR_QosInformation_ExtIEs__extensionValue_PR { + GBR_QosInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_GBR_QosInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_GUMMEI_ExtIEs__extensionValue_PR { + GUMMEI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_GUMMEI_ExtIEs__extensionValue_PR; +typedef enum S1AP_HandoverRestrictionList_ExtIEs__extensionValue_PR { + HandoverRestrictionList_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_HandoverRestrictionList_ExtIEs__extensionValue_PR; +typedef enum S1AP_ImmediateMDT_ExtIEs__extensionValue_PR { + ImmediateMDT_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + ImmediateMDT_ExtIEs__extensionValue_PR_M3Configuration, + ImmediateMDT_ExtIEs__extensionValue_PR_M4Configuration, + ImmediateMDT_ExtIEs__extensionValue_PR_M5Configuration, + ImmediateMDT_ExtIEs__extensionValue_PR_MDT_Location_Info, + ImmediateMDT_ExtIEs__extensionValue_PR_M6Configuration, + ImmediateMDT_ExtIEs__extensionValue_PR_M7Configuration +} S1AP_ImmediateMDT_ExtIEs__extensionValue_PR; +typedef enum S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue_PR { + InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue_PR; +typedef enum S1AP_LAI_ExtIEs__extensionValue_PR { + LAI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_LAI_ExtIEs__extensionValue_PR; +typedef enum S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR { + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_Time_UE_StayedInCell_EnhancedGranularity, + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_Cause +} S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_ListeningSubframePattern_ExtIEs__extensionValue_PR { + ListeningSubframePattern_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_ListeningSubframePattern_ExtIEs__extensionValue_PR; +typedef enum S1AP_LoggedMDT_ExtIEs__extensionValue_PR { + LoggedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_LoggedMDT_ExtIEs__extensionValue_PR; +typedef enum S1AP_LoggedMBSFNMDT_ExtIEs__extensionValue_PR { + LoggedMBSFNMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_LoggedMBSFNMDT_ExtIEs__extensionValue_PR; +typedef enum S1AP_M3Configuration_ExtIEs__extensionValue_PR { + M3Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_M3Configuration_ExtIEs__extensionValue_PR; +typedef enum S1AP_M4Configuration_ExtIEs__extensionValue_PR { + M4Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_M4Configuration_ExtIEs__extensionValue_PR; +typedef enum S1AP_M5Configuration_ExtIEs__extensionValue_PR { + M5Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_M5Configuration_ExtIEs__extensionValue_PR; +typedef enum S1AP_M6Configuration_ExtIEs__extensionValue_PR { + M6Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_M6Configuration_ExtIEs__extensionValue_PR; +typedef enum S1AP_M7Configuration_ExtIEs__extensionValue_PR { + M7Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_M7Configuration_ExtIEs__extensionValue_PR; +typedef enum S1AP_MDT_Configuration_ExtIEs__extensionValue_PR { + MDT_Configuration_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + MDT_Configuration_ExtIEs__extensionValue_PR_MDTPLMNList +} S1AP_MDT_Configuration_ExtIEs__extensionValue_PR; +typedef enum S1AP_MBSFN_ResultToLogInfo_ExtIEs__extensionValue_PR { + MBSFN_ResultToLogInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_MBSFN_ResultToLogInfo_ExtIEs__extensionValue_PR; +typedef enum S1AP_MutingPatternInformation_ExtIEs__extensionValue_PR { + MutingPatternInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_MutingPatternInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue_PR { + NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_PagingAttemptInformation_ExtIEs__extensionValue_PR { + PagingAttemptInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_PagingAttemptInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_Paging_eDRXInformation_ExtIEs__extensionValue_PR { + Paging_eDRXInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_Paging_eDRXInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_M1PeriodicReporting_ExtIEs__extensionValue_PR { + M1PeriodicReporting_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_M1PeriodicReporting_ExtIEs__extensionValue_PR; +typedef enum S1AP_ProSeAuthorized_ExtIEs__extensionValue_PR { + ProSeAuthorized_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + ProSeAuthorized_ExtIEs__extensionValue_PR_ProSeUEtoNetworkRelaying +} S1AP_ProSeAuthorized_ExtIEs__extensionValue_PR; +typedef enum S1AP_RecommendedCellsForPaging_ExtIEs__extensionValue_PR { + RecommendedCellsForPaging_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_RecommendedCellsForPaging_ExtIEs__extensionValue_PR; +typedef enum S1AP_RecommendedCellsForPagingItem_ExtIEs__extensionValue_PR { + RecommendedCellsForPagingItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_RecommendedCellsForPagingItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_RecommendedENBsForPaging_ExtIEs__extensionValue_PR { + RecommendedENBsForPaging_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_RecommendedENBsForPaging_ExtIEs__extensionValue_PR; +typedef enum S1AP_RecommendedENBItem_ExtIEs__extensionValue_PR { + RecommendedENBItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_RecommendedENBItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_RequestType_ExtIEs__extensionValue_PR { + RequestType_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_RequestType_ExtIEs__extensionValue_PR; +typedef enum S1AP_RIMTransfer_ExtIEs__extensionValue_PR { + RIMTransfer_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_RIMTransfer_ExtIEs__extensionValue_PR; +typedef enum S1AP_RLFReportInformation_ExtIEs__extensionValue_PR { + RLFReportInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_RLFReportInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_SecurityContext_ExtIEs__extensionValue_PR { + SecurityContext_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_SecurityContext_ExtIEs__extensionValue_PR; +typedef enum S1AP_SONInformationReply_ExtIEs__extensionValue_PR { + SONInformationReply_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + SONInformationReply_ExtIEs__extensionValue_PR_TimeSynchronisationInfo, + SONInformationReply_ExtIEs__extensionValue_PR_MutingPatternInformation +} S1AP_SONInformationReply_ExtIEs__extensionValue_PR; +typedef enum S1AP_SONConfigurationTransfer_ExtIEs__extensionValue_PR { + SONConfigurationTransfer_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + SONConfigurationTransfer_ExtIEs__extensionValue_PR_X2TNLConfigurationInfo, + SONConfigurationTransfer_ExtIEs__extensionValue_PR_SynchronisationInformation +} S1AP_SONConfigurationTransfer_ExtIEs__extensionValue_PR; +typedef enum S1AP_SynchronisationInformation_ExtIEs__extensionValue_PR { + SynchronisationInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_SynchronisationInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_SourceeNB_ID_ExtIEs__extensionValue_PR { + SourceeNB_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_SourceeNB_ID_ExtIEs__extensionValue_PR; +typedef enum S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR { + SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR_MobilityInformation, + SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR_UE_HistoryInformationFromTheUE +} S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR; +typedef enum S1AP_ServedGUMMEIsItem_ExtIEs__extensionValue_PR { + ServedGUMMEIsItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_ServedGUMMEIsItem_ExtIEs__extensionValue_PR; +typedef enum S1AP_SupportedTAs_Item_ExtIEs__extensionValue_PR { + SupportedTAs_Item_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + SupportedTAs_Item_ExtIEs__extensionValue_PR_RAT_Type +} S1AP_SupportedTAs_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_TimeSynchronisationInfo_ExtIEs__extensionValue_PR { + TimeSynchronisationInfo_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + TimeSynchronisationInfo_ExtIEs__extensionValue_PR_MutingAvailabilityIndication +} S1AP_TimeSynchronisationInfo_ExtIEs__extensionValue_PR; +typedef enum S1AP_S_TMSI_ExtIEs__extensionValue_PR { + S_TMSI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_S_TMSI_ExtIEs__extensionValue_PR; +typedef enum S1AP_TAIBasedMDT_ExtIEs__extensionValue_PR { + TAIBasedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_TAIBasedMDT_ExtIEs__extensionValue_PR; +typedef enum S1AP_TAI_ExtIEs__extensionValue_PR { + TAI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_TAI_ExtIEs__extensionValue_PR; +typedef enum S1AP_TAI_Broadcast_Item_ExtIEs__extensionValue_PR { + TAI_Broadcast_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_TAI_Broadcast_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_TAI_Cancelled_Item_ExtIEs__extensionValue_PR { + TAI_Cancelled_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_TAI_Cancelled_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_TABasedMDT_ExtIEs__extensionValue_PR { + TABasedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_TABasedMDT_ExtIEs__extensionValue_PR; +typedef enum S1AP_CompletedCellinTAI_Item_ExtIEs__extensionValue_PR { + CompletedCellinTAI_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_CompletedCellinTAI_Item_ExtIEs__extensionValue_PR; +typedef enum S1AP_TargeteNB_ID_ExtIEs__extensionValue_PR { + TargeteNB_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_TargeteNB_ID_ExtIEs__extensionValue_PR; +typedef enum S1AP_TargetRNC_ID_ExtIEs__extensionValue_PR { + TargetRNC_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_TargetRNC_ID_ExtIEs__extensionValue_PR; +typedef enum S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue_PR { + TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue_PR; +typedef enum S1AP_M1ThresholdEventA2_ExtIEs__extensionValue_PR { + M1ThresholdEventA2_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_M1ThresholdEventA2_ExtIEs__extensionValue_PR; +typedef enum S1AP_TraceActivation_ExtIEs__extensionValue_PR { + TraceActivation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + TraceActivation_ExtIEs__extensionValue_PR_MDT_Configuration +} S1AP_TraceActivation_ExtIEs__extensionValue_PR; +typedef enum S1AP_Tunnel_Information_ExtIEs__extensionValue_PR { + Tunnel_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_Tunnel_Information_ExtIEs__extensionValue_PR; +typedef enum S1AP_UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR { + UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR; +typedef enum S1AP_UE_S1AP_ID_pair_ExtIEs__extensionValue_PR { + UE_S1AP_ID_pair_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_UE_S1AP_ID_pair_ExtIEs__extensionValue_PR; +typedef enum S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue_PR { + UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue_PR; +typedef enum S1AP_UESecurityCapabilities_ExtIEs__extensionValue_PR { + UESecurityCapabilities_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_UESecurityCapabilities_ExtIEs__extensionValue_PR; +typedef enum S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue_PR { + UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue_PR; +typedef enum S1AP_UL_CP_SecurityInformation_ExtIEs__extensionValue_PR { + UL_CP_SecurityInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_UL_CP_SecurityInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_UserLocationInformation_ExtIEs__extensionValue_PR { + UserLocationInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_UserLocationInformation_ExtIEs__extensionValue_PR; +typedef enum S1AP_V2XServicesAuthorized_ExtIEs__extensionValue_PR { + V2XServicesAuthorized_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_V2XServicesAuthorized_ExtIEs__extensionValue_PR; +typedef enum S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue_PR { + X2TNLConfigurationInfo_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + X2TNLConfigurationInfo_ExtIEs__extensionValue_PR_ENBX2ExtTLAs, + X2TNLConfigurationInfo_ExtIEs__extensionValue_PR_ENBIndirectX2TransportLayerAddresses +} S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue_PR; +typedef enum S1AP_ENBX2ExtTLA_ExtIEs__extensionValue_PR { + ENBX2ExtTLA_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1AP_ENBX2ExtTLA_ExtIEs__extensionValue_PR; + +/* S1AP_ProtocolExtensionField */ +typedef struct S1AP_E_RABDataForwardingItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABDataForwardingItem_ExtIEs__extensionValue { + S1AP_E_RABDataForwardingItem_ExtIEs__extensionValue_PR present; + union S1AP_E_RABDataForwardingItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABDataForwardingItem_ExtIEs_t; +typedef struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue { + S1AP_E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR present; + union S1AP_E_RABToBeSetupItemHOReq_ExtIEs__S1AP_extensionValue_u { + S1AP_Data_Forwarding_Not_Possible_t Data_Forwarding_Not_Possible; + S1AP_BearerType_t BearerType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupItemHOReq_ExtIEs_t; +typedef struct S1AP_E_RABAdmittedItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABAdmittedItem_ExtIEs__extensionValue { + S1AP_E_RABAdmittedItem_ExtIEs__extensionValue_PR present; + union S1AP_E_RABAdmittedItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABAdmittedItem_ExtIEs_t; +typedef struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue { + S1AP_E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue_PR present; + union S1AP_E_RABFailedToSetupItemHOReqAckExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_t; +typedef struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSwitchedDLItem_ExtIEs__extensionValue { + S1AP_E_RABToBeSwitchedDLItem_ExtIEs__extensionValue_PR present; + union S1AP_E_RABToBeSwitchedDLItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSwitchedDLItem_ExtIEs_t; +typedef struct S1AP_E_RABToBeSwitchedULItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSwitchedULItem_ExtIEs__extensionValue { + S1AP_E_RABToBeSwitchedULItem_ExtIEs__extensionValue_PR present; + union S1AP_E_RABToBeSwitchedULItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSwitchedULItem_ExtIEs_t; +typedef struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue { + S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR present; + union S1AP_E_RABToBeSetupItemBearerSUReqExtIEs__S1AP_extensionValue_u { + S1AP_Correlation_ID_t Correlation_ID; + S1AP_BearerType_t BearerType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_t; +typedef struct S1AP_E_RABSetupItemBearerSUResExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABSetupItemBearerSUResExtIEs__extensionValue { + S1AP_E_RABSetupItemBearerSUResExtIEs__extensionValue_PR present; + union S1AP_E_RABSetupItemBearerSUResExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupItemBearerSUResExtIEs_t; +typedef struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeModifyItemBearerModReqExtIEs__extensionValue { + S1AP_E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR present; + union S1AP_E_RABToBeModifyItemBearerModReqExtIEs__S1AP_extensionValue_u { + S1AP_TransportInformation_t TransportInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeModifyItemBearerModReqExtIEs_t; +typedef struct S1AP_E_RABModifyItemBearerModResExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABModifyItemBearerModResExtIEs__extensionValue { + S1AP_E_RABModifyItemBearerModResExtIEs__extensionValue_PR present; + union S1AP_E_RABModifyItemBearerModResExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyItemBearerModResExtIEs_t; +typedef struct S1AP_E_RABReleaseItemBearerRelCompExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABReleaseItemBearerRelCompExtIEs__extensionValue { + S1AP_E_RABReleaseItemBearerRelCompExtIEs__extensionValue_PR present; + union S1AP_E_RABReleaseItemBearerRelCompExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseItemBearerRelCompExtIEs_t; +typedef struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue { + S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR present; + union S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs__S1AP_extensionValue_u { + S1AP_Correlation_ID_t Correlation_ID; + S1AP_BearerType_t BearerType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_t; +typedef struct S1AP_E_RABSetupItemCtxtSUResExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABSetupItemCtxtSUResExtIEs__extensionValue { + S1AP_E_RABSetupItemCtxtSUResExtIEs__extensionValue_PR present; + union S1AP_E_RABSetupItemCtxtSUResExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupItemCtxtSUResExtIEs_t; +typedef struct S1AP_TAIItemExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TAIItemExtIEs__extensionValue { + S1AP_TAIItemExtIEs__extensionValue_PR present; + union S1AP_TAIItemExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAIItemExtIEs_t; +typedef struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue { + S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR present; + union S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_t; +typedef struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue { + S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR present; + union S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_t; +typedef struct S1AP_CSGMembershipInfo_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CSGMembershipInfo_ExtIEs__extensionValue { + S1AP_CSGMembershipInfo_ExtIEs__extensionValue_PR present; + union S1AP_CSGMembershipInfo_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CSGMembershipInfo_ExtIEs_t; +typedef struct S1AP_E_RABModifyItemBearerModConfExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABModifyItemBearerModConfExtIEs__extensionValue { + S1AP_E_RABModifyItemBearerModConfExtIEs__extensionValue_PR present; + union S1AP_E_RABModifyItemBearerModConfExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyItemBearerModConfExtIEs_t; +typedef struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue { + S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue_PR present; + union S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_t; +typedef struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue { + S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue_PR present; + union S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_t; +typedef struct S1AP_Additional_GUTI_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_Additional_GUTI_ExtIEs__extensionValue { + S1AP_Additional_GUTI_ExtIEs__extensionValue_PR present; + union S1AP_Additional_GUTI_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Additional_GUTI_ExtIEs_t; +typedef struct S1AP_AllocationAndRetentionPriority_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_AllocationAndRetentionPriority_ExtIEs__extensionValue { + S1AP_AllocationAndRetentionPriority_ExtIEs__extensionValue_PR present; + union S1AP_AllocationAndRetentionPriority_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_AllocationAndRetentionPriority_ExtIEs_t; +typedef struct S1AP_InformationForCECapableUEs_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_InformationForCECapableUEs_ExtIEs__extensionValue { + S1AP_InformationForCECapableUEs_ExtIEs__extensionValue_PR present; + union S1AP_InformationForCECapableUEs_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InformationForCECapableUEs_ExtIEs_t; +typedef struct S1AP_AssistanceDataForPaging_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_AssistanceDataForPaging_ExtIEs__extensionValue { + S1AP_AssistanceDataForPaging_ExtIEs__extensionValue_PR present; + union S1AP_AssistanceDataForPaging_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_AssistanceDataForPaging_ExtIEs_t; +typedef struct S1AP_AssistanceDataForRecommendedCells_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_AssistanceDataForRecommendedCells_ExtIEs__extensionValue { + S1AP_AssistanceDataForRecommendedCells_ExtIEs__extensionValue_PR present; + union S1AP_AssistanceDataForRecommendedCells_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_AssistanceDataForRecommendedCells_ExtIEs_t; +typedef struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue { + S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR present; + union S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs__S1AP_extensionValue_u { + S1AP_COUNTValueExtended_t COUNTValueExtended; + S1AP_ReceiveStatusOfULPDCPSDUsExtended_t ReceiveStatusOfULPDCPSDUsExtended; + S1AP_COUNTvaluePDCP_SNlength18_t COUNTvaluePDCP_SNlength18; + S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_t ReceiveStatusOfULPDCPSDUsPDCP_SNlength18; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_t; +typedef struct S1AP_CancelledCellinEAI_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CancelledCellinEAI_Item_ExtIEs__extensionValue { + S1AP_CancelledCellinEAI_Item_ExtIEs__extensionValue_PR present; + union S1AP_CancelledCellinEAI_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CancelledCellinEAI_Item_ExtIEs_t; +typedef struct S1AP_CancelledCellinTAI_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CancelledCellinTAI_Item_ExtIEs__extensionValue { + S1AP_CancelledCellinTAI_Item_ExtIEs__extensionValue_PR present; + union S1AP_CancelledCellinTAI_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CancelledCellinTAI_Item_ExtIEs_t; +typedef struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue { + S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue_PR present; + union S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_t; +typedef struct S1AP_CellID_Broadcast_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CellID_Broadcast_Item_ExtIEs__extensionValue { + S1AP_CellID_Broadcast_Item_ExtIEs__extensionValue_PR present; + union S1AP_CellID_Broadcast_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellID_Broadcast_Item_ExtIEs_t; +typedef struct S1AP_CellID_Cancelled_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CellID_Cancelled_Item_ExtIEs__extensionValue { + S1AP_CellID_Cancelled_Item_ExtIEs__extensionValue_PR present; + union S1AP_CellID_Cancelled_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellID_Cancelled_Item_ExtIEs_t; +typedef struct S1AP_CellBasedMDT_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CellBasedMDT_ExtIEs__extensionValue { + S1AP_CellBasedMDT_ExtIEs__extensionValue_PR present; + union S1AP_CellBasedMDT_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellBasedMDT_ExtIEs_t; +typedef struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue { + S1AP_Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue_PR present; + union S1AP_Cdma2000OneXSRVCCInfo_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_t; +typedef struct S1AP_CellType_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CellType_ExtIEs__extensionValue { + S1AP_CellType_ExtIEs__extensionValue_PR present; + union S1AP_CellType_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellType_ExtIEs_t; +typedef struct S1AP_CGI_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CGI_ExtIEs__extensionValue { + S1AP_CGI_ExtIEs__extensionValue_PR present; + union S1AP_CGI_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CGI_ExtIEs_t; +typedef struct S1AP_CSG_IdList_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CSG_IdList_Item_ExtIEs__extensionValue { + S1AP_CSG_IdList_Item_ExtIEs__extensionValue_PR present; + union S1AP_CSG_IdList_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CSG_IdList_Item_ExtIEs_t; +typedef struct S1AP_COUNTvalue_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_COUNTvalue_ExtIEs__extensionValue { + S1AP_COUNTvalue_ExtIEs__extensionValue_PR present; + union S1AP_COUNTvalue_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_COUNTvalue_ExtIEs_t; +typedef struct S1AP_COUNTValueExtended_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_COUNTValueExtended_ExtIEs__extensionValue { + S1AP_COUNTValueExtended_ExtIEs__extensionValue_PR present; + union S1AP_COUNTValueExtended_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_COUNTValueExtended_ExtIEs_t; +typedef struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue { + S1AP_COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR present; + union S1AP_COUNTvaluePDCP_SNlength18_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_t; +typedef struct S1AP_CriticalityDiagnostics_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CriticalityDiagnostics_ExtIEs__extensionValue { + S1AP_CriticalityDiagnostics_ExtIEs__extensionValue_PR present; + union S1AP_CriticalityDiagnostics_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CriticalityDiagnostics_ExtIEs_t; +typedef struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue { + S1AP_CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue_PR present; + union S1AP_CriticalityDiagnostics_IE_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_t; +typedef struct S1AP_ServedDCNsItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ServedDCNsItem_ExtIEs__extensionValue { + S1AP_ServedDCNsItem_ExtIEs__extensionValue_PR present; + union S1AP_ServedDCNsItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ServedDCNsItem_ExtIEs_t; +typedef struct S1AP_DL_CP_SecurityInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_DL_CP_SecurityInformation_ExtIEs__extensionValue { + S1AP_DL_CP_SecurityInformation_ExtIEs__extensionValue_PR present; + union S1AP_DL_CP_SecurityInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DL_CP_SecurityInformation_ExtIEs_t; +typedef struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue { + S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue_PR present; + union S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_t; +typedef struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue { + S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue_PR present; + union S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_t; +typedef struct S1AP_CompletedCellinEAI_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CompletedCellinEAI_Item_ExtIEs__extensionValue { + S1AP_CompletedCellinEAI_Item_ExtIEs__extensionValue_PR present; + union S1AP_CompletedCellinEAI_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CompletedCellinEAI_Item_ExtIEs_t; +typedef struct S1AP_GERAN_Cell_ID_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_GERAN_Cell_ID_ExtIEs__extensionValue { + S1AP_GERAN_Cell_ID_ExtIEs__extensionValue_PR present; + union S1AP_GERAN_Cell_ID_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_GERAN_Cell_ID_ExtIEs_t; +typedef struct S1AP_GlobalENB_ID_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_GlobalENB_ID_ExtIEs__extensionValue { + S1AP_GlobalENB_ID_ExtIEs__extensionValue_PR present; + union S1AP_GlobalENB_ID_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_GlobalENB_ID_ExtIEs_t; +typedef struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue { + S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue_PR present; + union S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_t; +typedef struct S1AP_E_RABInformationListItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABInformationListItem_ExtIEs__extensionValue { + S1AP_E_RABInformationListItem_ExtIEs__extensionValue_PR present; + union S1AP_E_RABInformationListItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABInformationListItem_ExtIEs_t; +typedef struct S1AP_E_RABItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABItem_ExtIEs__extensionValue { + S1AP_E_RABItem_ExtIEs__extensionValue_PR present; + union S1AP_E_RABItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABItem_ExtIEs_t; +typedef struct S1AP_E_RABQoSParameters_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABQoSParameters_ExtIEs__extensionValue { + S1AP_E_RABQoSParameters_ExtIEs__extensionValue_PR present; + union S1AP_E_RABQoSParameters_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABQoSParameters_ExtIEs_t; +typedef struct S1AP_EUTRAN_CGI_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_EUTRAN_CGI_ExtIEs__extensionValue { + S1AP_EUTRAN_CGI_ExtIEs__extensionValue_PR present; + union S1AP_EUTRAN_CGI_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_EUTRAN_CGI_ExtIEs_t; +typedef struct S1AP_ExpectedUEBehaviour_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ExpectedUEBehaviour_ExtIEs__extensionValue { + S1AP_ExpectedUEBehaviour_ExtIEs__extensionValue_PR present; + union S1AP_ExpectedUEBehaviour_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ExpectedUEBehaviour_ExtIEs_t; +typedef struct S1AP_ExpectedUEActivityBehaviour_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ExpectedUEActivityBehaviour_ExtIEs__extensionValue { + S1AP_ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR present; + union S1AP_ExpectedUEActivityBehaviour_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ExpectedUEActivityBehaviour_ExtIEs_t; +typedef struct S1AP_ForbiddenTAs_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ForbiddenTAs_Item_ExtIEs__extensionValue { + S1AP_ForbiddenTAs_Item_ExtIEs__extensionValue_PR present; + union S1AP_ForbiddenTAs_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ForbiddenTAs_Item_ExtIEs_t; +typedef struct S1AP_ForbiddenLAs_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ForbiddenLAs_Item_ExtIEs__extensionValue { + S1AP_ForbiddenLAs_Item_ExtIEs__extensionValue_PR present; + union S1AP_ForbiddenLAs_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ForbiddenLAs_Item_ExtIEs_t; +typedef struct S1AP_GBR_QosInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_GBR_QosInformation_ExtIEs__extensionValue { + S1AP_GBR_QosInformation_ExtIEs__extensionValue_PR present; + union S1AP_GBR_QosInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_GBR_QosInformation_ExtIEs_t; +typedef struct S1AP_GUMMEI_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_GUMMEI_ExtIEs__extensionValue { + S1AP_GUMMEI_ExtIEs__extensionValue_PR present; + union S1AP_GUMMEI_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_GUMMEI_ExtIEs_t; +typedef struct S1AP_HandoverRestrictionList_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverRestrictionList_ExtIEs__extensionValue { + S1AP_HandoverRestrictionList_ExtIEs__extensionValue_PR present; + union S1AP_HandoverRestrictionList_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverRestrictionList_ExtIEs_t; +typedef struct S1AP_ImmediateMDT_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ImmediateMDT_ExtIEs__extensionValue { + S1AP_ImmediateMDT_ExtIEs__extensionValue_PR present; + union S1AP_ImmediateMDT_ExtIEs__S1AP_extensionValue_u { + S1AP_M3Configuration_t M3Configuration; + S1AP_M4Configuration_t M4Configuration; + S1AP_M5Configuration_t M5Configuration; + S1AP_MDT_Location_Info_t MDT_Location_Info; + S1AP_M6Configuration_t M6Configuration; + S1AP_M7Configuration_t M7Configuration; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ImmediateMDT_ExtIEs_t; +typedef struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue { + S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue_PR present; + union S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_t; +typedef struct S1AP_LAI_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_LAI_ExtIEs__extensionValue { + S1AP_LAI_ExtIEs__extensionValue_PR present; + union S1AP_LAI_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LAI_ExtIEs_t; +typedef struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue { + S1AP_LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR present; + union S1AP_LastVisitedEUTRANCellInformation_ExtIEs__S1AP_extensionValue_u { + S1AP_Time_UE_StayedInCell_EnhancedGranularity_t Time_UE_StayedInCell_EnhancedGranularity; + S1AP_Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LastVisitedEUTRANCellInformation_ExtIEs_t; +typedef struct S1AP_ListeningSubframePattern_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ListeningSubframePattern_ExtIEs__extensionValue { + S1AP_ListeningSubframePattern_ExtIEs__extensionValue_PR present; + union S1AP_ListeningSubframePattern_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ListeningSubframePattern_ExtIEs_t; +typedef struct S1AP_LoggedMDT_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_LoggedMDT_ExtIEs__extensionValue { + S1AP_LoggedMDT_ExtIEs__extensionValue_PR present; + union S1AP_LoggedMDT_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LoggedMDT_ExtIEs_t; +typedef struct S1AP_LoggedMBSFNMDT_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_LoggedMBSFNMDT_ExtIEs__extensionValue { + S1AP_LoggedMBSFNMDT_ExtIEs__extensionValue_PR present; + union S1AP_LoggedMBSFNMDT_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LoggedMBSFNMDT_ExtIEs_t; +typedef struct S1AP_M3Configuration_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_M3Configuration_ExtIEs__extensionValue { + S1AP_M3Configuration_ExtIEs__extensionValue_PR present; + union S1AP_M3Configuration_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M3Configuration_ExtIEs_t; +typedef struct S1AP_M4Configuration_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_M4Configuration_ExtIEs__extensionValue { + S1AP_M4Configuration_ExtIEs__extensionValue_PR present; + union S1AP_M4Configuration_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M4Configuration_ExtIEs_t; +typedef struct S1AP_M5Configuration_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_M5Configuration_ExtIEs__extensionValue { + S1AP_M5Configuration_ExtIEs__extensionValue_PR present; + union S1AP_M5Configuration_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M5Configuration_ExtIEs_t; +typedef struct S1AP_M6Configuration_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_M6Configuration_ExtIEs__extensionValue { + S1AP_M6Configuration_ExtIEs__extensionValue_PR present; + union S1AP_M6Configuration_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M6Configuration_ExtIEs_t; +typedef struct S1AP_M7Configuration_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_M7Configuration_ExtIEs__extensionValue { + S1AP_M7Configuration_ExtIEs__extensionValue_PR present; + union S1AP_M7Configuration_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M7Configuration_ExtIEs_t; +typedef struct S1AP_MDT_Configuration_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MDT_Configuration_ExtIEs__extensionValue { + S1AP_MDT_Configuration_ExtIEs__extensionValue_PR present; + union S1AP_MDT_Configuration_ExtIEs__S1AP_extensionValue_u { + S1AP_MDTPLMNList_t MDTPLMNList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MDT_Configuration_ExtIEs_t; +typedef struct S1AP_MBSFN_ResultToLogInfo_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MBSFN_ResultToLogInfo_ExtIEs__extensionValue { + S1AP_MBSFN_ResultToLogInfo_ExtIEs__extensionValue_PR present; + union S1AP_MBSFN_ResultToLogInfo_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MBSFN_ResultToLogInfo_ExtIEs_t; +typedef struct S1AP_MutingPatternInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MutingPatternInformation_ExtIEs__extensionValue { + S1AP_MutingPatternInformation_ExtIEs__extensionValue_PR present; + union S1AP_MutingPatternInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MutingPatternInformation_ExtIEs_t; +typedef struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue { + S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue_PR present; + union S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_t; +typedef struct S1AP_PagingAttemptInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_PagingAttemptInformation_ExtIEs__extensionValue { + S1AP_PagingAttemptInformation_ExtIEs__extensionValue_PR present; + union S1AP_PagingAttemptInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PagingAttemptInformation_ExtIEs_t; +typedef struct S1AP_Paging_eDRXInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_Paging_eDRXInformation_ExtIEs__extensionValue { + S1AP_Paging_eDRXInformation_ExtIEs__extensionValue_PR present; + union S1AP_Paging_eDRXInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Paging_eDRXInformation_ExtIEs_t; +typedef struct S1AP_M1PeriodicReporting_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_M1PeriodicReporting_ExtIEs__extensionValue { + S1AP_M1PeriodicReporting_ExtIEs__extensionValue_PR present; + union S1AP_M1PeriodicReporting_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M1PeriodicReporting_ExtIEs_t; +typedef struct S1AP_ProSeAuthorized_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ProSeAuthorized_ExtIEs__extensionValue { + S1AP_ProSeAuthorized_ExtIEs__extensionValue_PR present; + union S1AP_ProSeAuthorized_ExtIEs__S1AP_extensionValue_u { + S1AP_ProSeUEtoNetworkRelaying_t ProSeUEtoNetworkRelaying; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProSeAuthorized_ExtIEs_t; +typedef struct S1AP_RecommendedCellsForPaging_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RecommendedCellsForPaging_ExtIEs__extensionValue { + S1AP_RecommendedCellsForPaging_ExtIEs__extensionValue_PR present; + union S1AP_RecommendedCellsForPaging_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedCellsForPaging_ExtIEs_t; +typedef struct S1AP_RecommendedCellsForPagingItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RecommendedCellsForPagingItem_ExtIEs__extensionValue { + S1AP_RecommendedCellsForPagingItem_ExtIEs__extensionValue_PR present; + union S1AP_RecommendedCellsForPagingItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedCellsForPagingItem_ExtIEs_t; +typedef struct S1AP_RecommendedENBsForPaging_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RecommendedENBsForPaging_ExtIEs__extensionValue { + S1AP_RecommendedENBsForPaging_ExtIEs__extensionValue_PR present; + union S1AP_RecommendedENBsForPaging_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedENBsForPaging_ExtIEs_t; +typedef struct S1AP_RecommendedENBItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RecommendedENBItem_ExtIEs__extensionValue { + S1AP_RecommendedENBItem_ExtIEs__extensionValue_PR present; + union S1AP_RecommendedENBItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedENBItem_ExtIEs_t; +typedef struct S1AP_RequestType_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RequestType_ExtIEs__extensionValue { + S1AP_RequestType_ExtIEs__extensionValue_PR present; + union S1AP_RequestType_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RequestType_ExtIEs_t; +typedef struct S1AP_RIMTransfer_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RIMTransfer_ExtIEs__extensionValue { + S1AP_RIMTransfer_ExtIEs__extensionValue_PR present; + union S1AP_RIMTransfer_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RIMTransfer_ExtIEs_t; +typedef struct S1AP_RLFReportInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RLFReportInformation_ExtIEs__extensionValue { + S1AP_RLFReportInformation_ExtIEs__extensionValue_PR present; + union S1AP_RLFReportInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RLFReportInformation_ExtIEs_t; +typedef struct S1AP_SecurityContext_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_SecurityContext_ExtIEs__extensionValue { + S1AP_SecurityContext_ExtIEs__extensionValue_PR present; + union S1AP_SecurityContext_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SecurityContext_ExtIEs_t; +typedef struct S1AP_SONInformationReply_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_SONInformationReply_ExtIEs__extensionValue { + S1AP_SONInformationReply_ExtIEs__extensionValue_PR present; + union S1AP_SONInformationReply_ExtIEs__S1AP_extensionValue_u { + S1AP_TimeSynchronisationInfo_t TimeSynchronisationInfo; + S1AP_MutingPatternInformation_t MutingPatternInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SONInformationReply_ExtIEs_t; +typedef struct S1AP_SONConfigurationTransfer_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_SONConfigurationTransfer_ExtIEs__extensionValue { + S1AP_SONConfigurationTransfer_ExtIEs__extensionValue_PR present; + union S1AP_SONConfigurationTransfer_ExtIEs__S1AP_extensionValue_u { + S1AP_X2TNLConfigurationInfo_t X2TNLConfigurationInfo; + S1AP_SynchronisationInformation_t SynchronisationInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SONConfigurationTransfer_ExtIEs_t; +typedef struct S1AP_SynchronisationInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_SynchronisationInformation_ExtIEs__extensionValue { + S1AP_SynchronisationInformation_ExtIEs__extensionValue_PR present; + union S1AP_SynchronisationInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SynchronisationInformation_ExtIEs_t; +typedef struct S1AP_SourceeNB_ID_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_SourceeNB_ID_ExtIEs__extensionValue { + S1AP_SourceeNB_ID_ExtIEs__extensionValue_PR present; + union S1AP_SourceeNB_ID_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SourceeNB_ID_ExtIEs_t; +typedef struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue { + S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR present; + union S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__S1AP_extensionValue_u { + S1AP_MobilityInformation_t MobilityInformation; + S1AP_UE_HistoryInformationFromTheUE_t UE_HistoryInformationFromTheUE; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_t; +typedef struct S1AP_ServedGUMMEIsItem_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ServedGUMMEIsItem_ExtIEs__extensionValue { + S1AP_ServedGUMMEIsItem_ExtIEs__extensionValue_PR present; + union S1AP_ServedGUMMEIsItem_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ServedGUMMEIsItem_ExtIEs_t; +typedef struct S1AP_SupportedTAs_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_SupportedTAs_Item_ExtIEs__extensionValue { + S1AP_SupportedTAs_Item_ExtIEs__extensionValue_PR present; + union S1AP_SupportedTAs_Item_ExtIEs__S1AP_extensionValue_u { + S1AP_RAT_Type_t RAT_Type; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SupportedTAs_Item_ExtIEs_t; +typedef struct S1AP_TimeSynchronisationInfo_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TimeSynchronisationInfo_ExtIEs__extensionValue { + S1AP_TimeSynchronisationInfo_ExtIEs__extensionValue_PR present; + union S1AP_TimeSynchronisationInfo_ExtIEs__S1AP_extensionValue_u { + S1AP_MutingAvailabilityIndication_t MutingAvailabilityIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TimeSynchronisationInfo_ExtIEs_t; +typedef struct S1AP_S_TMSI_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_S_TMSI_ExtIEs__extensionValue { + S1AP_S_TMSI_ExtIEs__extensionValue_PR present; + union S1AP_S_TMSI_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_S_TMSI_ExtIEs_t; +typedef struct S1AP_TAIBasedMDT_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TAIBasedMDT_ExtIEs__extensionValue { + S1AP_TAIBasedMDT_ExtIEs__extensionValue_PR present; + union S1AP_TAIBasedMDT_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAIBasedMDT_ExtIEs_t; +typedef struct S1AP_TAI_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TAI_ExtIEs__extensionValue { + S1AP_TAI_ExtIEs__extensionValue_PR present; + union S1AP_TAI_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAI_ExtIEs_t; +typedef struct S1AP_TAI_Broadcast_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TAI_Broadcast_Item_ExtIEs__extensionValue { + S1AP_TAI_Broadcast_Item_ExtIEs__extensionValue_PR present; + union S1AP_TAI_Broadcast_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAI_Broadcast_Item_ExtIEs_t; +typedef struct S1AP_TAI_Cancelled_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TAI_Cancelled_Item_ExtIEs__extensionValue { + S1AP_TAI_Cancelled_Item_ExtIEs__extensionValue_PR present; + union S1AP_TAI_Cancelled_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAI_Cancelled_Item_ExtIEs_t; +typedef struct S1AP_TABasedMDT_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TABasedMDT_ExtIEs__extensionValue { + S1AP_TABasedMDT_ExtIEs__extensionValue_PR present; + union S1AP_TABasedMDT_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TABasedMDT_ExtIEs_t; +typedef struct S1AP_CompletedCellinTAI_Item_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CompletedCellinTAI_Item_ExtIEs__extensionValue { + S1AP_CompletedCellinTAI_Item_ExtIEs__extensionValue_PR present; + union S1AP_CompletedCellinTAI_Item_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CompletedCellinTAI_Item_ExtIEs_t; +typedef struct S1AP_TargeteNB_ID_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TargeteNB_ID_ExtIEs__extensionValue { + S1AP_TargeteNB_ID_ExtIEs__extensionValue_PR present; + union S1AP_TargeteNB_ID_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TargeteNB_ID_ExtIEs_t; +typedef struct S1AP_TargetRNC_ID_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TargetRNC_ID_ExtIEs__extensionValue { + S1AP_TargetRNC_ID_ExtIEs__extensionValue_PR present; + union S1AP_TargetRNC_ID_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TargetRNC_ID_ExtIEs_t; +typedef struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue { + S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue_PR present; + union S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_t; +typedef struct S1AP_M1ThresholdEventA2_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_M1ThresholdEventA2_ExtIEs__extensionValue { + S1AP_M1ThresholdEventA2_ExtIEs__extensionValue_PR present; + union S1AP_M1ThresholdEventA2_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_M1ThresholdEventA2_ExtIEs_t; +typedef struct S1AP_TraceActivation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TraceActivation_ExtIEs__extensionValue { + S1AP_TraceActivation_ExtIEs__extensionValue_PR present; + union S1AP_TraceActivation_ExtIEs__S1AP_extensionValue_u { + S1AP_MDT_Configuration_t MDT_Configuration; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TraceActivation_ExtIEs_t; +typedef struct S1AP_Tunnel_Information_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_Tunnel_Information_ExtIEs__extensionValue { + S1AP_Tunnel_Information_ExtIEs__extensionValue_PR present; + union S1AP_Tunnel_Information_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Tunnel_Information_ExtIEs_t; +typedef struct S1AP_UEAggregate_MaximumBitrates_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEAggregate_MaximumBitrates_ExtIEs__extensionValue { + S1AP_UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR present; + union S1AP_UEAggregate_MaximumBitrates_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEAggregate_MaximumBitrates_ExtIEs_t; +typedef struct S1AP_UE_S1AP_ID_pair_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UE_S1AP_ID_pair_ExtIEs__extensionValue { + S1AP_UE_S1AP_ID_pair_ExtIEs__extensionValue_PR present; + union S1AP_UE_S1AP_ID_pair_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_S1AP_ID_pair_ExtIEs_t; +typedef struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue { + S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue_PR present; + union S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_t; +typedef struct S1AP_UESecurityCapabilities_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UESecurityCapabilities_ExtIEs__extensionValue { + S1AP_UESecurityCapabilities_ExtIEs__extensionValue_PR present; + union S1AP_UESecurityCapabilities_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UESecurityCapabilities_ExtIEs_t; +typedef struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue { + S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue_PR present; + union S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_t; +typedef struct S1AP_UL_CP_SecurityInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UL_CP_SecurityInformation_ExtIEs__extensionValue { + S1AP_UL_CP_SecurityInformation_ExtIEs__extensionValue_PR present; + union S1AP_UL_CP_SecurityInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UL_CP_SecurityInformation_ExtIEs_t; +typedef struct S1AP_UserLocationInformation_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UserLocationInformation_ExtIEs__extensionValue { + S1AP_UserLocationInformation_ExtIEs__extensionValue_PR present; + union S1AP_UserLocationInformation_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UserLocationInformation_ExtIEs_t; +typedef struct S1AP_V2XServicesAuthorized_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_V2XServicesAuthorized_ExtIEs__extensionValue { + S1AP_V2XServicesAuthorized_ExtIEs__extensionValue_PR present; + union S1AP_V2XServicesAuthorized_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_V2XServicesAuthorized_ExtIEs_t; +typedef struct S1AP_X2TNLConfigurationInfo_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue { + S1AP_X2TNLConfigurationInfo_ExtIEs__extensionValue_PR present; + union S1AP_X2TNLConfigurationInfo_ExtIEs__S1AP_extensionValue_u { + S1AP_ENBX2ExtTLAs_t ENBX2ExtTLAs; + S1AP_ENBIndirectX2TransportLayerAddresses_t ENBIndirectX2TransportLayerAddresses; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_X2TNLConfigurationInfo_ExtIEs_t; +typedef struct S1AP_ENBX2ExtTLA_ExtIEs { + S1AP_ProtocolExtensionID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ENBX2ExtTLA_ExtIEs__extensionValue { + S1AP_ENBX2ExtTLA_ExtIEs__extensionValue_PR present; + union S1AP_ENBX2ExtTLA_ExtIEs__S1AP_extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBX2ExtTLA_ExtIEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABDataForwardingItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABDataForwardingItem_ExtIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABDataForwardingItem_ExtIEs_1[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemHOReq_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_specs_5; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemHOReq_ExtIEs_5[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABAdmittedItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABAdmittedItem_ExtIEs_specs_9; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABAdmittedItem_ExtIEs_9[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_specs_13; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToSetupItemHOReqAckExtIEs_13[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedDLItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_specs_17; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedDLItem_ExtIEs_17[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedULItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedULItem_ExtIEs_specs_21; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedULItem_ExtIEs_21[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_specs_25; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemBearerSUReqExtIEs_25[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemBearerSUResExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemBearerSUResExtIEs_specs_29; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemBearerSUResExtIEs_29[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifyItemBearerModReqExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_specs_33; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifyItemBearerModReqExtIEs_33[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModResExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModResExtIEs_specs_37; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModResExtIEs_37[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseItemBearerRelCompExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseItemBearerRelCompExtIEs_specs_41; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseItemBearerRelCompExtIEs_41[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_specs_45; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemCtxtSUReqExtIEs_45[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemCtxtSUResExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemCtxtSUResExtIEs_specs_49; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemCtxtSUResExtIEs_49[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAIItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAIItemExtIEs_specs_53; +extern asn_TYPE_member_t asn_MBR_S1AP_TAIItemExtIEs_53[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_specs_57; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifiedItemBearerModInd_ExtIEs_57[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_specs_61; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_61[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CSGMembershipInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CSGMembershipInfo_ExtIEs_specs_65; +extern asn_TYPE_member_t asn_MBR_S1AP_CSGMembershipInfo_ExtIEs_65[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModConfExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModConfExtIEs_specs_69; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModConfExtIEs_69[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_specs_73; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeReq_ExtIEs_73[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_specs_77; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeRes_ExtIEs_77[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Additional_GUTI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_Additional_GUTI_ExtIEs_specs_81; +extern asn_TYPE_member_t asn_MBR_S1AP_Additional_GUTI_ExtIEs_81[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_AllocationAndRetentionPriority_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_AllocationAndRetentionPriority_ExtIEs_specs_85; +extern asn_TYPE_member_t asn_MBR_S1AP_AllocationAndRetentionPriority_ExtIEs_85[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InformationForCECapableUEs_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InformationForCECapableUEs_ExtIEs_specs_89; +extern asn_TYPE_member_t asn_MBR_S1AP_InformationForCECapableUEs_ExtIEs_89[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForPaging_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_AssistanceDataForPaging_ExtIEs_specs_93; +extern asn_TYPE_member_t asn_MBR_S1AP_AssistanceDataForPaging_ExtIEs_93[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_AssistanceDataForRecommendedCells_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_AssistanceDataForRecommendedCells_ExtIEs_specs_97; +extern asn_TYPE_member_t asn_MBR_S1AP_AssistanceDataForRecommendedCells_ExtIEs_97[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_specs_101; +extern asn_TYPE_member_t asn_MBR_S1AP_Bearers_SubjectToStatusTransfer_ItemExtIEs_101[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinEAI_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CancelledCellinEAI_Item_ExtIEs_specs_105; +extern asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinEAI_Item_ExtIEs_105[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CancelledCellinTAI_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CancelledCellinTAI_Item_ExtIEs_specs_109; +extern asn_TYPE_member_t asn_MBR_S1AP_CancelledCellinTAI_Item_ExtIEs_109[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_specs_113; +extern asn_TYPE_member_t asn_MBR_S1AP_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_113[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Broadcast_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellID_Broadcast_Item_ExtIEs_specs_117; +extern asn_TYPE_member_t asn_MBR_S1AP_CellID_Broadcast_Item_ExtIEs_117[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellID_Cancelled_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellID_Cancelled_Item_ExtIEs_specs_121; +extern asn_TYPE_member_t asn_MBR_S1AP_CellID_Cancelled_Item_ExtIEs_121[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellBasedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellBasedMDT_ExtIEs_specs_125; +extern asn_TYPE_member_t asn_MBR_S1AP_CellBasedMDT_ExtIEs_125[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_specs_129; +extern asn_TYPE_member_t asn_MBR_S1AP_Cdma2000OneXSRVCCInfo_ExtIEs_129[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellType_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellType_ExtIEs_specs_133; +extern asn_TYPE_member_t asn_MBR_S1AP_CellType_ExtIEs_133[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CGI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CGI_ExtIEs_specs_137; +extern asn_TYPE_member_t asn_MBR_S1AP_CGI_ExtIEs_137[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CSG_IdList_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CSG_IdList_Item_ExtIEs_specs_141; +extern asn_TYPE_member_t asn_MBR_S1AP_CSG_IdList_Item_ExtIEs_141[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTvalue_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTvalue_ExtIEs_specs_145; +extern asn_TYPE_member_t asn_MBR_S1AP_COUNTvalue_ExtIEs_145[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTValueExtended_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTValueExtended_ExtIEs_specs_149; +extern asn_TYPE_member_t asn_MBR_S1AP_COUNTValueExtended_ExtIEs_149[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_specs_153; +extern asn_TYPE_member_t asn_MBR_S1AP_COUNTvaluePDCP_SNlength18_ExtIEs_153[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CriticalityDiagnostics_ExtIEs_specs_157; +extern asn_TYPE_member_t asn_MBR_S1AP_CriticalityDiagnostics_ExtIEs_157[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_specs_161; +extern asn_TYPE_member_t asn_MBR_S1AP_CriticalityDiagnostics_IE_Item_ExtIEs_161[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ServedDCNsItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ServedDCNsItem_ExtIEs_specs_165; +extern asn_TYPE_member_t asn_MBR_S1AP_ServedDCNsItem_ExtIEs_165[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DL_CP_SecurityInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DL_CP_SecurityInformation_ExtIEs_specs_169; +extern asn_TYPE_member_t asn_MBR_S1AP_DL_CP_SecurityInformation_ExtIEs_169[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_specs_173; +extern asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Broadcast_Item_ExtIEs_173[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_specs_177; +extern asn_TYPE_member_t asn_MBR_S1AP_EmergencyAreaID_Cancelled_Item_ExtIEs_177[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinEAI_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CompletedCellinEAI_Item_ExtIEs_specs_181; +extern asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinEAI_Item_ExtIEs_181[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GERAN_Cell_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_GERAN_Cell_ID_ExtIEs_specs_185; +extern asn_TYPE_member_t asn_MBR_S1AP_GERAN_Cell_ID_ExtIEs_185[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GlobalENB_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_GlobalENB_ID_ExtIEs_specs_189; +extern asn_TYPE_member_t asn_MBR_S1AP_GlobalENB_ID_ExtIEs_189[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_specs_193; +extern asn_TYPE_member_t asn_MBR_S1AP_ENB_StatusTransfer_TransparentContainer_ExtIEs_193[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABInformationListItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABInformationListItem_ExtIEs_specs_197; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABInformationListItem_ExtIEs_197[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABItem_ExtIEs_specs_201; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABItem_ExtIEs_201[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABQoSParameters_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABQoSParameters_ExtIEs_specs_205; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABQoSParameters_ExtIEs_205[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_EUTRAN_CGI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_EUTRAN_CGI_ExtIEs_specs_209; +extern asn_TYPE_member_t asn_MBR_S1AP_EUTRAN_CGI_ExtIEs_209[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedUEBehaviour_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ExpectedUEBehaviour_ExtIEs_specs_213; +extern asn_TYPE_member_t asn_MBR_S1AP_ExpectedUEBehaviour_ExtIEs_213[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ExpectedUEActivityBehaviour_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ExpectedUEActivityBehaviour_ExtIEs_specs_217; +extern asn_TYPE_member_t asn_MBR_S1AP_ExpectedUEActivityBehaviour_ExtIEs_217[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenTAs_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ForbiddenTAs_Item_ExtIEs_specs_221; +extern asn_TYPE_member_t asn_MBR_S1AP_ForbiddenTAs_Item_ExtIEs_221[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ForbiddenLAs_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ForbiddenLAs_Item_ExtIEs_specs_225; +extern asn_TYPE_member_t asn_MBR_S1AP_ForbiddenLAs_Item_ExtIEs_225[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GBR_QosInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_GBR_QosInformation_ExtIEs_specs_229; +extern asn_TYPE_member_t asn_MBR_S1AP_GBR_QosInformation_ExtIEs_229[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_GUMMEI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_GUMMEI_ExtIEs_specs_233; +extern asn_TYPE_member_t asn_MBR_S1AP_GUMMEI_ExtIEs_233[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRestrictionList_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRestrictionList_ExtIEs_specs_237; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverRestrictionList_ExtIEs_237[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ImmediateMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ImmediateMDT_ExtIEs_specs_241; +extern asn_TYPE_member_t asn_MBR_S1AP_ImmediateMDT_ExtIEs_241[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_specs_245; +extern asn_TYPE_member_t asn_MBR_S1AP_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_245[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LAI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LAI_ExtIEs_specs_249; +extern asn_TYPE_member_t asn_MBR_S1AP_LAI_ExtIEs_249[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LastVisitedEUTRANCellInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_specs_253; +extern asn_TYPE_member_t asn_MBR_S1AP_LastVisitedEUTRANCellInformation_ExtIEs_253[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ListeningSubframePattern_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ListeningSubframePattern_ExtIEs_specs_257; +extern asn_TYPE_member_t asn_MBR_S1AP_ListeningSubframePattern_ExtIEs_257[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LoggedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LoggedMDT_ExtIEs_specs_261; +extern asn_TYPE_member_t asn_MBR_S1AP_LoggedMDT_ExtIEs_261[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LoggedMBSFNMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LoggedMBSFNMDT_ExtIEs_specs_265; +extern asn_TYPE_member_t asn_MBR_S1AP_LoggedMBSFNMDT_ExtIEs_265[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M3Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_M3Configuration_ExtIEs_specs_269; +extern asn_TYPE_member_t asn_MBR_S1AP_M3Configuration_ExtIEs_269[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M4Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_M4Configuration_ExtIEs_specs_273; +extern asn_TYPE_member_t asn_MBR_S1AP_M4Configuration_ExtIEs_273[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M5Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_M5Configuration_ExtIEs_specs_277; +extern asn_TYPE_member_t asn_MBR_S1AP_M5Configuration_ExtIEs_277[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M6Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_M6Configuration_ExtIEs_specs_281; +extern asn_TYPE_member_t asn_MBR_S1AP_M6Configuration_ExtIEs_281[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M7Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_M7Configuration_ExtIEs_specs_285; +extern asn_TYPE_member_t asn_MBR_S1AP_M7Configuration_ExtIEs_285[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MDT_Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MDT_Configuration_ExtIEs_specs_289; +extern asn_TYPE_member_t asn_MBR_S1AP_MDT_Configuration_ExtIEs_289[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MBSFN_ResultToLogInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MBSFN_ResultToLogInfo_ExtIEs_specs_293; +extern asn_TYPE_member_t asn_MBR_S1AP_MBSFN_ResultToLogInfo_ExtIEs_293[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MutingPatternInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MutingPatternInformation_ExtIEs_specs_297; +extern asn_TYPE_member_t asn_MBR_S1AP_MutingPatternInformation_ExtIEs_297[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_specs_301; +extern asn_TYPE_member_t asn_MBR_S1AP_NB_IoT_Paging_eDRXInformation_ExtIEs_301[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PagingAttemptInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PagingAttemptInformation_ExtIEs_specs_305; +extern asn_TYPE_member_t asn_MBR_S1AP_PagingAttemptInformation_ExtIEs_305[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Paging_eDRXInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_Paging_eDRXInformation_ExtIEs_specs_309; +extern asn_TYPE_member_t asn_MBR_S1AP_Paging_eDRXInformation_ExtIEs_309[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M1PeriodicReporting_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_M1PeriodicReporting_ExtIEs_specs_313; +extern asn_TYPE_member_t asn_MBR_S1AP_M1PeriodicReporting_ExtIEs_313[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProSeAuthorized_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ProSeAuthorized_ExtIEs_specs_317; +extern asn_TYPE_member_t asn_MBR_S1AP_ProSeAuthorized_ExtIEs_317[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellsForPaging_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedCellsForPaging_ExtIEs_specs_321; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellsForPaging_ExtIEs_321[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellsForPagingItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedCellsForPagingItem_ExtIEs_specs_325; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellsForPagingItem_ExtIEs_325[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBsForPaging_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedENBsForPaging_ExtIEs_specs_329; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBsForPaging_ExtIEs_329[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedENBItem_ExtIEs_specs_333; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBItem_ExtIEs_333[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RequestType_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RequestType_ExtIEs_specs_337; +extern asn_TYPE_member_t asn_MBR_S1AP_RequestType_ExtIEs_337[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RIMTransfer_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RIMTransfer_ExtIEs_specs_341; +extern asn_TYPE_member_t asn_MBR_S1AP_RIMTransfer_ExtIEs_341[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RLFReportInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RLFReportInformation_ExtIEs_specs_345; +extern asn_TYPE_member_t asn_MBR_S1AP_RLFReportInformation_ExtIEs_345[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SecurityContext_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SecurityContext_ExtIEs_specs_349; +extern asn_TYPE_member_t asn_MBR_S1AP_SecurityContext_ExtIEs_349[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformationReply_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SONInformationReply_ExtIEs_specs_353; +extern asn_TYPE_member_t asn_MBR_S1AP_SONInformationReply_ExtIEs_353[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SONConfigurationTransfer_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SONConfigurationTransfer_ExtIEs_specs_357; +extern asn_TYPE_member_t asn_MBR_S1AP_SONConfigurationTransfer_ExtIEs_357[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SynchronisationInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SynchronisationInformation_ExtIEs_specs_361; +extern asn_TYPE_member_t asn_MBR_S1AP_SynchronisationInformation_ExtIEs_361[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SourceeNB_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SourceeNB_ID_ExtIEs_specs_365; +extern asn_TYPE_member_t asn_MBR_S1AP_SourceeNB_ID_ExtIEs_365[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_specs_369; +extern asn_TYPE_member_t asn_MBR_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_369[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ServedGUMMEIsItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ServedGUMMEIsItem_ExtIEs_specs_373; +extern asn_TYPE_member_t asn_MBR_S1AP_ServedGUMMEIsItem_ExtIEs_373[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SupportedTAs_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SupportedTAs_Item_ExtIEs_specs_377; +extern asn_TYPE_member_t asn_MBR_S1AP_SupportedTAs_Item_ExtIEs_377[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TimeSynchronisationInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TimeSynchronisationInfo_ExtIEs_specs_381; +extern asn_TYPE_member_t asn_MBR_S1AP_TimeSynchronisationInfo_ExtIEs_381[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_S_TMSI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_S_TMSI_ExtIEs_specs_385; +extern asn_TYPE_member_t asn_MBR_S1AP_S_TMSI_ExtIEs_385[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAIBasedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAIBasedMDT_ExtIEs_specs_389; +extern asn_TYPE_member_t asn_MBR_S1AP_TAIBasedMDT_ExtIEs_389[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_ExtIEs_specs_393; +extern asn_TYPE_member_t asn_MBR_S1AP_TAI_ExtIEs_393[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Broadcast_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_Broadcast_Item_ExtIEs_specs_397; +extern asn_TYPE_member_t asn_MBR_S1AP_TAI_Broadcast_Item_ExtIEs_397[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Cancelled_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_Cancelled_Item_ExtIEs_specs_401; +extern asn_TYPE_member_t asn_MBR_S1AP_TAI_Cancelled_Item_ExtIEs_401[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TABasedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TABasedMDT_ExtIEs_specs_405; +extern asn_TYPE_member_t asn_MBR_S1AP_TABasedMDT_ExtIEs_405[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CompletedCellinTAI_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CompletedCellinTAI_Item_ExtIEs_specs_409; +extern asn_TYPE_member_t asn_MBR_S1AP_CompletedCellinTAI_Item_ExtIEs_409[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TargeteNB_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargeteNB_ID_ExtIEs_specs_413; +extern asn_TYPE_member_t asn_MBR_S1AP_TargeteNB_ID_ExtIEs_413[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TargetRNC_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargetRNC_ID_ExtIEs_specs_417; +extern asn_TYPE_member_t asn_MBR_S1AP_TargetRNC_ID_ExtIEs_417[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_specs_421; +extern asn_TYPE_member_t asn_MBR_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_421[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_M1ThresholdEventA2_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_M1ThresholdEventA2_ExtIEs_specs_425; +extern asn_TYPE_member_t asn_MBR_S1AP_M1ThresholdEventA2_ExtIEs_425[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TraceActivation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceActivation_ExtIEs_specs_429; +extern asn_TYPE_member_t asn_MBR_S1AP_TraceActivation_ExtIEs_429[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Tunnel_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_Tunnel_Information_ExtIEs_specs_433; +extern asn_TYPE_member_t asn_MBR_S1AP_Tunnel_Information_ExtIEs_433[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEAggregate_MaximumBitrates_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEAggregate_MaximumBitrates_ExtIEs_specs_437; +extern asn_TYPE_member_t asn_MBR_S1AP_UEAggregate_MaximumBitrates_ExtIEs_437[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_S1AP_ID_pair_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_S1AP_ID_pair_ExtIEs_specs_441; +extern asn_TYPE_member_t asn_MBR_S1AP_UE_S1AP_ID_pair_ExtIEs_441[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_specs_445; +extern asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemExtIEs_445[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UESecurityCapabilities_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UESecurityCapabilities_ExtIEs_specs_449; +extern asn_TYPE_member_t asn_MBR_S1AP_UESecurityCapabilities_ExtIEs_449[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_specs_453; +extern asn_TYPE_member_t asn_MBR_S1AP_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_453[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UL_CP_SecurityInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UL_CP_SecurityInformation_ExtIEs_specs_457; +extern asn_TYPE_member_t asn_MBR_S1AP_UL_CP_SecurityInformation_ExtIEs_457[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UserLocationInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UserLocationInformation_ExtIEs_specs_461; +extern asn_TYPE_member_t asn_MBR_S1AP_UserLocationInformation_ExtIEs_461[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_V2XServicesAuthorized_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_V2XServicesAuthorized_ExtIEs_specs_465; +extern asn_TYPE_member_t asn_MBR_S1AP_V2XServicesAuthorized_ExtIEs_465[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_X2TNLConfigurationInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_X2TNLConfigurationInfo_ExtIEs_specs_469; +extern asn_TYPE_member_t asn_MBR_S1AP_X2TNLConfigurationInfo_ExtIEs_469[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBX2ExtTLA_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBX2ExtTLA_ExtIEs_specs_473; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBX2ExtTLA_ExtIEs_473[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolExtensionField_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.c b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.c new file mode 100644 index 0000000000..3206b2d397 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProtocolExtensionID.h" + +int +S1AP_ProtocolExtensionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolExtensionID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolExtensionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionID = { + "ProtocolExtensionID", + "ProtocolExtensionID", + &asn_OP_NativeInteger, + asn_DEF_S1AP_ProtocolExtensionID_tags_1, + sizeof(asn_DEF_S1AP_ProtocolExtensionID_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolExtensionID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProtocolExtensionID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolExtensionID_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolExtensionID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolExtensionID_constr_1, &asn_PER_type_S1AP_ProtocolExtensionID_constr_1, S1AP_ProtocolExtensionID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.h b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.h new file mode 100644 index 0000000000..8e409aeb19 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolExtensionID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolExtensionID_H_ +#define _S1AP_ProtocolExtensionID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ProtocolExtensionID */ +typedef long S1AP_ProtocolExtensionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolExtensionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolExtensionID; +asn_struct_free_f S1AP_ProtocolExtensionID_free; +asn_struct_print_f S1AP_ProtocolExtensionID_print; +asn_constr_check_f S1AP_ProtocolExtensionID_constraint; +ber_type_decoder_f S1AP_ProtocolExtensionID_decode_ber; +der_type_encoder_f S1AP_ProtocolExtensionID_encode_der; +xer_type_decoder_f S1AP_ProtocolExtensionID_decode_xer; +xer_type_encoder_f S1AP_ProtocolExtensionID_encode_xer; +oer_type_decoder_f S1AP_ProtocolExtensionID_decode_oer; +oer_type_encoder_f S1AP_ProtocolExtensionID_encode_oer; +per_type_decoder_f S1AP_ProtocolExtensionID_decode_uper; +per_type_encoder_f S1AP_ProtocolExtensionID_encode_uper; +per_type_decoder_f S1AP_ProtocolExtensionID_decode_aper; +per_type_encoder_f S1AP_ProtocolExtensionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolExtensionID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.c b/lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.c new file mode 100644 index 0000000000..db9d05c3e6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.c @@ -0,0 +1,3923 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProtocolIE-Container.h" + +#include "S1AP_ProtocolIE-Field.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P0_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P1_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P2_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P3_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P4_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P5_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P6_constr_13 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P7_constr_15 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P8_constr_17 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P9_constr_19 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P10_constr_21 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P10_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P11_constr_23 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P11_constr_23 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P12_constr_25 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P12_constr_25 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P13_constr_27 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P13_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P14_constr_29 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P14_constr_29 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P15_constr_31 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P15_constr_31 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P16_constr_33 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P16_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P17_constr_35 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P17_constr_35 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P18_constr_37 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P18_constr_37 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P19_constr_39 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P19_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P20_constr_41 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P20_constr_41 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P21_constr_43 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P21_constr_43 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P22_constr_45 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P22_constr_45 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P23_constr_47 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P23_constr_47 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P24_constr_49 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P24_constr_49 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P25_constr_51 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P25_constr_51 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P26_constr_53 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P26_constr_53 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P27_constr_55 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P27_constr_55 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P28_constr_57 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P28_constr_57 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P29_constr_59 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P29_constr_59 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P30_constr_61 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P30_constr_61 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P31_constr_63 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P31_constr_63 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P32_constr_65 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P32_constr_65 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P33_constr_67 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P33_constr_67 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P34_constr_69 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P34_constr_69 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P35_constr_71 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P35_constr_71 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P36_constr_73 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P36_constr_73 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P37_constr_75 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P37_constr_75 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P38_constr_77 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P38_constr_77 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P39_constr_79 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P39_constr_79 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P40_constr_81 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P40_constr_81 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P41_constr_83 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P41_constr_83 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P42_constr_85 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P42_constr_85 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P43_constr_87 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P43_constr_87 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P44_constr_89 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P44_constr_89 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P45_constr_91 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P45_constr_91 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P46_constr_93 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P46_constr_93 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P47_constr_95 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P47_constr_95 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P48_constr_97 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P48_constr_97 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P49_constr_99 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P49_constr_99 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P50_constr_101 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P50_constr_101 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P51_constr_103 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P51_constr_103 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P52_constr_105 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P52_constr_105 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P53_constr_107 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P53_constr_107 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P54_constr_109 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P54_constr_109 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P55_constr_111 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P55_constr_111 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P56_constr_113 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P56_constr_113 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P57_constr_115 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P57_constr_115 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P58_constr_117 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P58_constr_117 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P59_constr_119 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P59_constr_119 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P60_constr_121 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P60_constr_121 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P61_constr_123 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P61_constr_123 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P62_constr_125 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P62_constr_125 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P63_constr_127 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P63_constr_127 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P64_constr_129 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P64_constr_129 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P65_constr_131 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P65_constr_131 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P66_constr_133 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P66_constr_133 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P67_constr_135 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P67_constr_135 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P68_constr_137 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P68_constr_137 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P69_constr_139 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P69_constr_139 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P70_constr_141 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P70_constr_141 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P71_constr_143 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P71_constr_143 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P72_constr_145 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P72_constr_145 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P73_constr_147 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P73_constr_147 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P74_constr_149 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P74_constr_149 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P75_constr_151 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P75_constr_151 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P76_constr_153 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P76_constr_153 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P77_constr_155 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P77_constr_155 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P78_constr_157 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P78_constr_157 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P79_constr_159 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P79_constr_159 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P80_constr_161 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P80_constr_161 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P81_constr_163 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P81_constr_163 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P82_constr_165 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P82_constr_165 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P83_constr_167 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P83_constr_167 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P84_constr_169 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P84_constr_169 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P85_constr_171 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P85_constr_171 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P86_constr_173 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P86_constr_173 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P87_constr_175 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P87_constr_175 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P88_constr_177 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P88_constr_177 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P89_constr_179 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P89_constr_179 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_Container_6551P90_constr_181 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P90_constr_181 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRequiredIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P0_specs_1 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P0), + offsetof(struct S1AP_ProtocolIE_Container_6551P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P0 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P0_tags_1, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P0_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P0_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P0_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P0_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P0_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P0_constr_1, &asn_PER_type_S1AP_ProtocolIE_Container_6551P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P0_1, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverCommandIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P1_specs_3 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P1), + offsetof(struct S1AP_ProtocolIE_Container_6551P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P1 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P1_tags_3, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P1_tags_3) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P1_tags_3[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P1_tags_3, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P1_tags_3) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P1_tags_3[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P1_constr_3, &asn_PER_type_S1AP_ProtocolIE_Container_6551P1_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P1_3, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverPreparationFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P2_specs_5 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P2), + offsetof(struct S1AP_ProtocolIE_Container_6551P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P2 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P2_tags_5, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P2_tags_5) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P2_tags_5[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P2_tags_5, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P2_tags_5) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P2_tags_5[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P2_constr_5, &asn_PER_type_S1AP_ProtocolIE_Container_6551P2_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P2_5, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P3_specs_7 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P3), + offsetof(struct S1AP_ProtocolIE_Container_6551P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P3 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P3_tags_7, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P3_tags_7) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P3_tags_7[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P3_tags_7, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P3_tags_7) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P3_tags_7[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P3_constr_7, &asn_PER_type_S1AP_ProtocolIE_Container_6551P3_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P3_7, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRequestAcknowledgeIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P4_specs_9 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P4), + offsetof(struct S1AP_ProtocolIE_Container_6551P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P4 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P4_tags_9, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P4_tags_9) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P4_tags_9[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P4_tags_9, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P4_tags_9) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P4_tags_9[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P4_constr_9, &asn_PER_type_S1AP_ProtocolIE_Container_6551P4_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P4_9, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P5_specs_11 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P5), + offsetof(struct S1AP_ProtocolIE_Container_6551P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P5 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P5_tags_11, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P5_tags_11) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P5_tags_11[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P5_tags_11, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P5_tags_11) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P5_tags_11[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P5_constr_11, &asn_PER_type_S1AP_ProtocolIE_Container_6551P5_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P5_11, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverNotifyIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P6_specs_13 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P6), + offsetof(struct S1AP_ProtocolIE_Container_6551P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P6 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P6_tags_13, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P6_tags_13) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P6_tags_13[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P6_tags_13, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P6_tags_13) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P6_tags_13[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P6_constr_13, &asn_PER_type_S1AP_ProtocolIE_Container_6551P6_constr_13, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P6_13, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PathSwitchRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P7_specs_15 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P7), + offsetof(struct S1AP_ProtocolIE_Container_6551P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P7 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P7_tags_15, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P7_tags_15) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P7_tags_15[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P7_tags_15, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P7_tags_15) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P7_tags_15[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P7_constr_15, &asn_PER_type_S1AP_ProtocolIE_Container_6551P7_constr_15, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P7_15, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P8_specs_17 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P8), + offsetof(struct S1AP_ProtocolIE_Container_6551P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P8 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P8_tags_17, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P8_tags_17) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P8_tags_17[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P8_tags_17, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P8_tags_17) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P8_tags_17[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P8_constr_17, &asn_PER_type_S1AP_ProtocolIE_Container_6551P8_constr_17, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P8_17, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PathSwitchRequestFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P9_specs_19 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P9), + offsetof(struct S1AP_ProtocolIE_Container_6551P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P9 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P9_tags_19, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P9_tags_19) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P9_tags_19[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P9_tags_19, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P9_tags_19) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P9_tags_19[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P9_constr_19, &asn_PER_type_S1AP_ProtocolIE_Container_6551P9_constr_19, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P9_19, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P9_specs_19 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverCancelIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P10_specs_21 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P10), + offsetof(struct S1AP_ProtocolIE_Container_6551P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P10 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P10_tags_21, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P10_tags_21) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P10_tags_21[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P10_tags_21, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P10_tags_21) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P10_tags_21[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P10_constr_21, &asn_PER_type_S1AP_ProtocolIE_Container_6551P10_constr_21, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P10_21, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P10_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverCancelAcknowledgeIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P11_specs_23 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P11), + offsetof(struct S1AP_ProtocolIE_Container_6551P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P11 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P11_tags_23, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P11_tags_23) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P11_tags_23[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P11_tags_23, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P11_tags_23) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P11_tags_23[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P11_constr_23, &asn_PER_type_S1AP_ProtocolIE_Container_6551P11_constr_23, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P11_23, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P11_specs_23 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P12_specs_25 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P12), + offsetof(struct S1AP_ProtocolIE_Container_6551P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P12 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P12_tags_25, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P12_tags_25) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P12_tags_25[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P12_tags_25, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P12_tags_25) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P12_tags_25[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P12_constr_25, &asn_PER_type_S1AP_ProtocolIE_Container_6551P12_constr_25, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P12_25, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P12_specs_25 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P13_specs_27 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P13), + offsetof(struct S1AP_ProtocolIE_Container_6551P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P13 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P13_tags_27, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P13_tags_27) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P13_tags_27[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P13_tags_27, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P13_tags_27) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P13_tags_27[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P13_constr_27, &asn_PER_type_S1AP_ProtocolIE_Container_6551P13_constr_27, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P13_27, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P13_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P14_specs_29 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P14), + offsetof(struct S1AP_ProtocolIE_Container_6551P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P14 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P14_tags_29, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P14_tags_29) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P14_tags_29[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P14_tags_29, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P14_tags_29) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P14_tags_29[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P14_constr_29, &asn_PER_type_S1AP_ProtocolIE_Container_6551P14_constr_29, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P14_29, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P14_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P15_specs_31 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P15), + offsetof(struct S1AP_ProtocolIE_Container_6551P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P15 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P15_tags_31, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P15_tags_31) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P15_tags_31[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P15_tags_31, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P15_tags_31) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P15_tags_31[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P15_constr_31, &asn_PER_type_S1AP_ProtocolIE_Container_6551P15_constr_31, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P15_31, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P15_specs_31 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABReleaseCommandIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P16_specs_33 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P16), + offsetof(struct S1AP_ProtocolIE_Container_6551P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P16 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P16_tags_33, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P16_tags_33) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P16_tags_33[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P16_tags_33, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P16_tags_33) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P16_tags_33[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P16_constr_33, &asn_PER_type_S1AP_ProtocolIE_Container_6551P16_constr_33, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P16_33, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P16_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABReleaseResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P17_specs_35 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P17), + offsetof(struct S1AP_ProtocolIE_Container_6551P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P17 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P17_tags_35, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P17_tags_35) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P17_tags_35[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P17_tags_35, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P17_tags_35) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P17_tags_35[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P17_constr_35, &asn_PER_type_S1AP_ProtocolIE_Container_6551P17_constr_35, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P17_35, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P17_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABReleaseIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P18_specs_37 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P18), + offsetof(struct S1AP_ProtocolIE_Container_6551P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P18 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P18_tags_37, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P18_tags_37) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P18_tags_37[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P18_tags_37, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P18_tags_37) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P18_tags_37[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P18_constr_37, &asn_PER_type_S1AP_ProtocolIE_Container_6551P18_constr_37, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P18_37, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P18_specs_37 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InitialContextSetupRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P19_specs_39 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P19), + offsetof(struct S1AP_ProtocolIE_Container_6551P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P19 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P19_tags_39, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P19_tags_39) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P19_tags_39[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P19_tags_39, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P19_tags_39) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P19_tags_39[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P19_constr_39, &asn_PER_type_S1AP_ProtocolIE_Container_6551P19_constr_39, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P19_39, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P19_specs_39 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P20_41[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InitialContextSetupResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P20_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P20_specs_41 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P20), + offsetof(struct S1AP_ProtocolIE_Container_6551P20, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P20 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P20_tags_41, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P20_tags_41) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P20_tags_41[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P20_tags_41, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P20_tags_41) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P20_tags_41[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P20_constr_41, &asn_PER_type_S1AP_ProtocolIE_Container_6551P20_constr_41, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P20_41, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P20_specs_41 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P21_43[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InitialContextSetupFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P21_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P21_specs_43 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P21), + offsetof(struct S1AP_ProtocolIE_Container_6551P21, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P21 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P21_tags_43, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P21_tags_43) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P21_tags_43[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P21_tags_43, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P21_tags_43) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P21_tags_43[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P21_constr_43, &asn_PER_type_S1AP_ProtocolIE_Container_6551P21_constr_43, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P21_43, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P21_specs_43 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P22_45[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PagingIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P22_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P22_specs_45 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P22), + offsetof(struct S1AP_ProtocolIE_Container_6551P22, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P22 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P22_tags_45, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P22_tags_45) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P22_tags_45[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P22_tags_45, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P22_tags_45) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P22_tags_45[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P22_constr_45, &asn_PER_type_S1AP_ProtocolIE_Container_6551P22_constr_45, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P22_45, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P22_specs_45 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P23_47[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextReleaseRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P23_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P23_specs_47 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P23), + offsetof(struct S1AP_ProtocolIE_Container_6551P23, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P23 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P23_tags_47, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P23_tags_47) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P23_tags_47[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P23_tags_47, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P23_tags_47) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P23_tags_47[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P23_constr_47, &asn_PER_type_S1AP_ProtocolIE_Container_6551P23_constr_47, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P23_47, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P23_specs_47 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P24_49[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextReleaseCommand_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P24_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P24_specs_49 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P24), + offsetof(struct S1AP_ProtocolIE_Container_6551P24, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P24 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P24_tags_49, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P24_tags_49) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P24_tags_49[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P24_tags_49, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P24_tags_49) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P24_tags_49[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P24_constr_49, &asn_PER_type_S1AP_ProtocolIE_Container_6551P24_constr_49, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P24_49, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P24_specs_49 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P25_51[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextReleaseComplete_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P25_tags_51[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P25_specs_51 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P25), + offsetof(struct S1AP_ProtocolIE_Container_6551P25, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P25 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P25_tags_51, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P25_tags_51) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P25_tags_51[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P25_tags_51, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P25_tags_51) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P25_tags_51[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P25_constr_51, &asn_PER_type_S1AP_ProtocolIE_Container_6551P25_constr_51, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P25_51, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P25_specs_51 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P26_53[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P26_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P26_specs_53 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P26), + offsetof(struct S1AP_ProtocolIE_Container_6551P26, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P26 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P26_tags_53, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P26_tags_53) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P26_tags_53[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P26_tags_53, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P26_tags_53) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P26_tags_53[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P26_constr_53, &asn_PER_type_S1AP_ProtocolIE_Container_6551P26_constr_53, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P26_53, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P26_specs_53 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P27_55[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P27_tags_55[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P27_specs_55 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P27), + offsetof(struct S1AP_ProtocolIE_Container_6551P27, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P27 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P27_tags_55, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P27_tags_55) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P27_tags_55[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P27_tags_55, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P27_tags_55) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P27_tags_55[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P27_constr_55, &asn_PER_type_S1AP_ProtocolIE_Container_6551P27_constr_55, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P27_55, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P27_specs_55 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P28_57[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P28_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P28_specs_57 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P28), + offsetof(struct S1AP_ProtocolIE_Container_6551P28, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P28 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P28_tags_57, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P28_tags_57) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P28_tags_57[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P28_tags_57, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P28_tags_57) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P28_tags_57[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P28_constr_57, &asn_PER_type_S1AP_ProtocolIE_Container_6551P28_constr_57, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P28_57, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P28_specs_57 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P29_59[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P29_tags_59[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P29_specs_59 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P29), + offsetof(struct S1AP_ProtocolIE_Container_6551P29, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P29 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P29_tags_59, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P29_tags_59) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P29_tags_59[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P29_tags_59, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P29_tags_59) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P29_tags_59[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P29_constr_59, &asn_PER_type_S1AP_ProtocolIE_Container_6551P29_constr_59, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P29_59, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P29_specs_59 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P30_61[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P30_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P30_specs_61 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P30), + offsetof(struct S1AP_ProtocolIE_Container_6551P30, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P30 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P30_tags_61, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P30_tags_61) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P30_tags_61[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P30_tags_61, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P30_tags_61) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P30_tags_61[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P30_constr_61, &asn_PER_type_S1AP_ProtocolIE_Container_6551P30_constr_61, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P30_61, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P30_specs_61 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P31_63[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DownlinkNASTransport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P31_tags_63[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P31_specs_63 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P31), + offsetof(struct S1AP_ProtocolIE_Container_6551P31, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P31 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P31_tags_63, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P31_tags_63) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P31_tags_63[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P31_tags_63, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P31_tags_63) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P31_tags_63[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P31_constr_63, &asn_PER_type_S1AP_ProtocolIE_Container_6551P31_constr_63, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P31_63, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P31_specs_63 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P32_65[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InitialUEMessage_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P32_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P32_specs_65 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P32), + offsetof(struct S1AP_ProtocolIE_Container_6551P32, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P32 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P32_tags_65, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P32_tags_65) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P32_tags_65[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P32_tags_65, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P32_tags_65) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P32_tags_65[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P32_constr_65, &asn_PER_type_S1AP_ProtocolIE_Container_6551P32_constr_65, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P32_65, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P32_specs_65 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P33_67[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UplinkNASTransport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P33_tags_67[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P33_specs_67 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P33), + offsetof(struct S1AP_ProtocolIE_Container_6551P33, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P33 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P33_tags_67, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P33_tags_67) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P33_tags_67[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P33_tags_67, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P33_tags_67) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P33_tags_67[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P33_constr_67, &asn_PER_type_S1AP_ProtocolIE_Container_6551P33_constr_67, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P33_67, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P33_specs_67 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P34_69[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_NASNonDeliveryIndication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P34_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P34_specs_69 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P34), + offsetof(struct S1AP_ProtocolIE_Container_6551P34, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P34 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P34_tags_69, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P34_tags_69) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P34_tags_69[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P34_tags_69, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P34_tags_69) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P34_tags_69[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P34_constr_69, &asn_PER_type_S1AP_ProtocolIE_Container_6551P34_constr_69, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P34_69, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P34_specs_69 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P35_71[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RerouteNASRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P35_tags_71[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P35_specs_71 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P35), + offsetof(struct S1AP_ProtocolIE_Container_6551P35, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P35 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P35_tags_71, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P35_tags_71) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P35_tags_71[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P35_tags_71, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P35_tags_71) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P35_tags_71[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P35_constr_71, &asn_PER_type_S1AP_ProtocolIE_Container_6551P35_constr_71, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P35_71, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P35_specs_71 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P36_73[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_NASDeliveryIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P36_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P36_specs_73 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P36), + offsetof(struct S1AP_ProtocolIE_Container_6551P36, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P36 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P36_tags_73, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P36_tags_73) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P36_tags_73[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P36_tags_73, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P36_tags_73) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P36_tags_73[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P36_constr_73, &asn_PER_type_S1AP_ProtocolIE_Container_6551P36_constr_73, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P36_73, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P36_specs_73 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P37_75[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ResetIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P37_tags_75[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P37_specs_75 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P37), + offsetof(struct S1AP_ProtocolIE_Container_6551P37, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P37 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P37_tags_75, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P37_tags_75) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P37_tags_75[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P37_tags_75, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P37_tags_75) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P37_tags_75[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P37_constr_75, &asn_PER_type_S1AP_ProtocolIE_Container_6551P37_constr_75, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P37_75, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P37_specs_75 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P38_77[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ResetAcknowledgeIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P38_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P38_specs_77 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P38), + offsetof(struct S1AP_ProtocolIE_Container_6551P38, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P38 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P38_tags_77, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P38_tags_77) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P38_tags_77[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P38_tags_77, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P38_tags_77) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P38_tags_77[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P38_constr_77, &asn_PER_type_S1AP_ProtocolIE_Container_6551P38_constr_77, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P38_77, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P38_specs_77 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P39_79[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ErrorIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P39_tags_79[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P39_specs_79 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P39), + offsetof(struct S1AP_ProtocolIE_Container_6551P39, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P39 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P39_tags_79, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P39_tags_79) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P39_tags_79[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P39_tags_79, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P39_tags_79) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P39_tags_79[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P39_constr_79, &asn_PER_type_S1AP_ProtocolIE_Container_6551P39_constr_79, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P39_79, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P39_specs_79 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P40_81[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S1SetupRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P40_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P40_specs_81 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P40), + offsetof(struct S1AP_ProtocolIE_Container_6551P40, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P40 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P40_tags_81, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P40_tags_81) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P40_tags_81[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P40_tags_81, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P40_tags_81) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P40_tags_81[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P40_constr_81, &asn_PER_type_S1AP_ProtocolIE_Container_6551P40_constr_81, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P40_81, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P40_specs_81 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P41_83[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S1SetupResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P41_tags_83[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P41_specs_83 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P41), + offsetof(struct S1AP_ProtocolIE_Container_6551P41, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P41 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P41_tags_83, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P41_tags_83) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P41_tags_83[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P41_tags_83, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P41_tags_83) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P41_tags_83[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P41_constr_83, &asn_PER_type_S1AP_ProtocolIE_Container_6551P41_constr_83, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P41_83, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P41_specs_83 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P42_85[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S1SetupFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P42_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P42_specs_85 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P42), + offsetof(struct S1AP_ProtocolIE_Container_6551P42, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P42 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P42_tags_85, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P42_tags_85) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P42_tags_85[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P42_tags_85, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P42_tags_85) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P42_tags_85[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P42_constr_85, &asn_PER_type_S1AP_ProtocolIE_Container_6551P42_constr_85, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P42_85, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P42_specs_85 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P43_87[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBConfigurationUpdateIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P43_tags_87[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P43_specs_87 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P43), + offsetof(struct S1AP_ProtocolIE_Container_6551P43, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P43 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P43_tags_87, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P43_tags_87) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P43_tags_87[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P43_tags_87, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P43_tags_87) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P43_tags_87[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P43_constr_87, &asn_PER_type_S1AP_ProtocolIE_Container_6551P43_constr_87, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P43_87, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P43_specs_87 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P44_89[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P44_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P44_specs_89 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P44), + offsetof(struct S1AP_ProtocolIE_Container_6551P44, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P44 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P44_tags_89, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P44_tags_89) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P44_tags_89[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P44_tags_89, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P44_tags_89) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P44_tags_89[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P44_constr_89, &asn_PER_type_S1AP_ProtocolIE_Container_6551P44_constr_89, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P44_89, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P44_specs_89 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P45_91[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P45_tags_91[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P45_specs_91 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P45), + offsetof(struct S1AP_ProtocolIE_Container_6551P45, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P45 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P45_tags_91, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P45_tags_91) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P45_tags_91[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P45_tags_91, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P45_tags_91) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P45_tags_91[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P45_constr_91, &asn_PER_type_S1AP_ProtocolIE_Container_6551P45_constr_91, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P45_91, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P45_specs_91 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P46_93[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEConfigurationUpdateIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P46_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P46_specs_93 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P46), + offsetof(struct S1AP_ProtocolIE_Container_6551P46, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P46 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P46_tags_93, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P46_tags_93) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P46_tags_93[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P46_tags_93, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P46_tags_93) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P46_tags_93[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P46_constr_93, &asn_PER_type_S1AP_ProtocolIE_Container_6551P46_constr_93, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P46_93, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P46_specs_93 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P47_95[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P47_tags_95[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P47_specs_95 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P47), + offsetof(struct S1AP_ProtocolIE_Container_6551P47, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P47 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P47_tags_95, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P47_tags_95) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P47_tags_95[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P47_tags_95, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P47_tags_95) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P47_tags_95[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P47_constr_95, &asn_PER_type_S1AP_ProtocolIE_Container_6551P47_constr_95, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P47_95, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P47_specs_95 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P48_97[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P48_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P48_specs_97 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P48), + offsetof(struct S1AP_ProtocolIE_Container_6551P48, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P48 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P48_tags_97, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P48_tags_97) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P48_tags_97[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P48_tags_97, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P48_tags_97) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P48_tags_97[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P48_constr_97, &asn_PER_type_S1AP_ProtocolIE_Container_6551P48_constr_97, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P48_97, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P48_specs_97 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P49_99[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P49_tags_99[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P49_specs_99 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P49), + offsetof(struct S1AP_ProtocolIE_Container_6551P49, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P49 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P49_tags_99, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P49_tags_99) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P49_tags_99[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P49_tags_99, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P49_tags_99) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P49_tags_99[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P49_constr_99, &asn_PER_type_S1AP_ProtocolIE_Container_6551P49_constr_99, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P49_99, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P49_specs_99 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P50_101[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P50_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P50_specs_101 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P50), + offsetof(struct S1AP_ProtocolIE_Container_6551P50, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P50 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P50_tags_101, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P50_tags_101) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P50_tags_101[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P50_tags_101, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P50_tags_101) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P50_tags_101[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P50_constr_101, &asn_PER_type_S1AP_ProtocolIE_Container_6551P50_constr_101, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P50_101, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P50_specs_101 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P51_103[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UECapabilityInfoIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P51_tags_103[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P51_specs_103 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P51), + offsetof(struct S1AP_ProtocolIE_Container_6551P51, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P51 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P51_tags_103, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P51_tags_103) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P51_tags_103[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P51_tags_103, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P51_tags_103) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P51_tags_103[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P51_constr_103, &asn_PER_type_S1AP_ProtocolIE_Container_6551P51_constr_103, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P51_103, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P51_specs_103 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P52_105[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBStatusTransferIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P52_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P52_specs_105 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P52), + offsetof(struct S1AP_ProtocolIE_Container_6551P52, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P52 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P52_tags_105, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P52_tags_105) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P52_tags_105[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P52_tags_105, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P52_tags_105) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P52_tags_105[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P52_constr_105, &asn_PER_type_S1AP_ProtocolIE_Container_6551P52_constr_105, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P52_105, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P52_specs_105 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P53_107[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEStatusTransferIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P53_tags_107[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P53_specs_107 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P53), + offsetof(struct S1AP_ProtocolIE_Container_6551P53, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P53 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P53_tags_107, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P53_tags_107) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P53_tags_107[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P53_tags_107, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P53_tags_107) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P53_tags_107[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P53_constr_107, &asn_PER_type_S1AP_ProtocolIE_Container_6551P53_constr_107, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P53_107, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P53_specs_107 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P54_109[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TraceStartIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P54_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P54_specs_109 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P54), + offsetof(struct S1AP_ProtocolIE_Container_6551P54, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P54 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P54_tags_109, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P54_tags_109) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P54_tags_109[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P54_tags_109, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P54_tags_109) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P54_tags_109[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P54_constr_109, &asn_PER_type_S1AP_ProtocolIE_Container_6551P54_constr_109, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P54_109, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P54_specs_109 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P55_111[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TraceFailureIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P55_tags_111[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P55_specs_111 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P55), + offsetof(struct S1AP_ProtocolIE_Container_6551P55, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P55 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P55_tags_111, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P55_tags_111) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P55_tags_111[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P55_tags_111, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P55_tags_111) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P55_tags_111[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P55_constr_111, &asn_PER_type_S1AP_ProtocolIE_Container_6551P55_constr_111, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P55_111, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P55_specs_111 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P56_113[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DeactivateTraceIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P56_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P56_specs_113 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P56), + offsetof(struct S1AP_ProtocolIE_Container_6551P56, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P56 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P56_tags_113, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P56_tags_113) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P56_tags_113[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P56_tags_113, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P56_tags_113) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P56_tags_113[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P56_constr_113, &asn_PER_type_S1AP_ProtocolIE_Container_6551P56_constr_113, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P56_113, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P56_specs_113 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P57_115[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellTrafficTraceIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P57_tags_115[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P57_specs_115 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P57), + offsetof(struct S1AP_ProtocolIE_Container_6551P57, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P57 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P57_tags_115, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P57_tags_115) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P57_tags_115[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P57_tags_115, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P57_tags_115) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P57_tags_115[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P57_constr_115, &asn_PER_type_S1AP_ProtocolIE_Container_6551P57_constr_115, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P57_115, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P57_specs_115 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P58_117[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LocationReportingControlIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P58_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P58_specs_117 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P58), + offsetof(struct S1AP_ProtocolIE_Container_6551P58, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P58 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P58_tags_117, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P58_tags_117) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P58_tags_117[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P58_tags_117, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P58_tags_117) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P58_tags_117[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P58_constr_117, &asn_PER_type_S1AP_ProtocolIE_Container_6551P58_constr_117, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P58_117, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P58_specs_117 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P59_119[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LocationReportingFailureIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P59_tags_119[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P59_specs_119 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P59), + offsetof(struct S1AP_ProtocolIE_Container_6551P59, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P59 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P59_tags_119, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P59_tags_119) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P59_tags_119[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P59_tags_119, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P59_tags_119) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P59_tags_119[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P59_constr_119, &asn_PER_type_S1AP_ProtocolIE_Container_6551P59_constr_119, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P59_119, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P59_specs_119 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P60_121[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LocationReportIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P60_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P60_specs_121 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P60), + offsetof(struct S1AP_ProtocolIE_Container_6551P60, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P60 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P60_tags_121, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P60_tags_121) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P60_tags_121[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P60_tags_121, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P60_tags_121) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P60_tags_121[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P60_constr_121, &asn_PER_type_S1AP_ProtocolIE_Container_6551P60_constr_121, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P60_121, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P60_specs_121 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P61_123[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_OverloadStartIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P61_tags_123[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P61_specs_123 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P61), + offsetof(struct S1AP_ProtocolIE_Container_6551P61, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P61 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P61_tags_123, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P61_tags_123) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P61_tags_123[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P61_tags_123, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P61_tags_123) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P61_tags_123[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P61_constr_123, &asn_PER_type_S1AP_ProtocolIE_Container_6551P61_constr_123, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P61_123, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P61_specs_123 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P62_125[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_OverloadStopIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P62_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P62_specs_125 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P62), + offsetof(struct S1AP_ProtocolIE_Container_6551P62, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P62 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P62_tags_125, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P62_tags_125) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P62_tags_125[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P62_tags_125, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P62_tags_125) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P62_tags_125[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P62_constr_125, &asn_PER_type_S1AP_ProtocolIE_Container_6551P62_constr_125, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P62_125, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P62_specs_125 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P63_127[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_WriteReplaceWarningRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P63_tags_127[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P63_specs_127 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P63), + offsetof(struct S1AP_ProtocolIE_Container_6551P63, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P63 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P63_tags_127, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P63_tags_127) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P63_tags_127[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P63_tags_127, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P63_tags_127) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P63_tags_127[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P63_constr_127, &asn_PER_type_S1AP_ProtocolIE_Container_6551P63_constr_127, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P63_127, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P63_specs_127 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P64_129[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_WriteReplaceWarningResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P64_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P64_specs_129 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P64), + offsetof(struct S1AP_ProtocolIE_Container_6551P64, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P64 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P64_tags_129, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P64_tags_129) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P64_tags_129[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P64_tags_129, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P64_tags_129) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P64_tags_129[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P64_constr_129, &asn_PER_type_S1AP_ProtocolIE_Container_6551P64_constr_129, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P64_129, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P64_specs_129 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P65_131[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBDirectInformationTransferIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P65_tags_131[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P65_specs_131 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P65), + offsetof(struct S1AP_ProtocolIE_Container_6551P65, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P65 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P65_tags_131, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P65_tags_131) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P65_tags_131[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P65_tags_131, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P65_tags_131) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P65_tags_131[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P65_constr_131, &asn_PER_type_S1AP_ProtocolIE_Container_6551P65_constr_131, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P65_131, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P65_specs_131 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P66_133[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEDirectInformationTransferIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P66_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P66_specs_133 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P66), + offsetof(struct S1AP_ProtocolIE_Container_6551P66, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P66 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P66_tags_133, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P66_tags_133) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P66_tags_133[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P66_tags_133, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P66_tags_133) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P66_tags_133[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P66_constr_133, &asn_PER_type_S1AP_ProtocolIE_Container_6551P66_constr_133, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P66_133, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P66_specs_133 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P67_135[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBConfigurationTransferIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P67_tags_135[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P67_specs_135 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P67), + offsetof(struct S1AP_ProtocolIE_Container_6551P67, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P67 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P67_tags_135, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P67_tags_135) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P67_tags_135[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P67_tags_135, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P67_tags_135) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P67_tags_135[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P67_constr_135, &asn_PER_type_S1AP_ProtocolIE_Container_6551P67_constr_135, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P67_135, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P67_specs_135 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P68_137[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEConfigurationTransferIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P68_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P68_specs_137 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P68), + offsetof(struct S1AP_ProtocolIE_Container_6551P68, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P68 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P68_tags_137, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P68_tags_137) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P68_tags_137[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P68_tags_137, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P68_tags_137) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P68_tags_137[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P68_constr_137, &asn_PER_type_S1AP_ProtocolIE_Container_6551P68_constr_137, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P68_137, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P68_specs_137 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P69_139[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_KillRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P69_tags_139[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P69_specs_139 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P69), + offsetof(struct S1AP_ProtocolIE_Container_6551P69, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P69 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P69_tags_139, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P69_tags_139) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P69_tags_139[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P69_tags_139, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P69_tags_139) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P69_tags_139[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P69_constr_139, &asn_PER_type_S1AP_ProtocolIE_Container_6551P69_constr_139, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P69_139, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P69_specs_139 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P70_141[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_KillResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P70_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P70_specs_141 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P70), + offsetof(struct S1AP_ProtocolIE_Container_6551P70, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P70 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P70_tags_141, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P70_tags_141) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P70_tags_141[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P70_tags_141, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P70_tags_141) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P70_tags_141[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P70_constr_141, &asn_PER_type_S1AP_ProtocolIE_Container_6551P70_constr_141, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P70_141, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P70_specs_141 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P71_143[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PWSRestartIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P71_tags_143[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P71_specs_143 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P71), + offsetof(struct S1AP_ProtocolIE_Container_6551P71, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P71 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P71_tags_143, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P71_tags_143) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P71_tags_143[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P71_tags_143, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P71_tags_143) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P71_tags_143[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P71_constr_143, &asn_PER_type_S1AP_ProtocolIE_Container_6551P71_constr_143, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P71_143, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P71_specs_143 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P72_145[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PWSFailureIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P72_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P72_specs_145 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P72), + offsetof(struct S1AP_ProtocolIE_Container_6551P72, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P72 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P72_tags_145, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P72_tags_145) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P72_tags_145[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P72_tags_145, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P72_tags_145) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P72_tags_145[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P72_constr_145, &asn_PER_type_S1AP_ProtocolIE_Container_6551P72_constr_145, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P72_145, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P72_specs_145 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P73_147[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P73_tags_147[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P73_specs_147 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P73), + offsetof(struct S1AP_ProtocolIE_Container_6551P73, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P73 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P73_tags_147, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P73_tags_147) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P73_tags_147[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P73_tags_147, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P73_tags_147) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P73_tags_147[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P73_constr_147, &asn_PER_type_S1AP_ProtocolIE_Container_6551P73_constr_147, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P73_147, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P73_specs_147 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P74_149[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P74_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P74_specs_149 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P74), + offsetof(struct S1AP_ProtocolIE_Container_6551P74, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P74 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P74_tags_149, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P74_tags_149) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P74_tags_149[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P74_tags_149, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P74_tags_149) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P74_tags_149[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P74_constr_149, &asn_PER_type_S1AP_ProtocolIE_Container_6551P74_constr_149, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P74_149, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P74_specs_149 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P75_151[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P75_tags_151[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P75_specs_151 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P75), + offsetof(struct S1AP_ProtocolIE_Container_6551P75, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P75 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P75_tags_151, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P75_tags_151) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P75_tags_151[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P75_tags_151, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P75_tags_151) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P75_tags_151[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P75_constr_151, &asn_PER_type_S1AP_ProtocolIE_Container_6551P75_constr_151, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P75_151, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P75_specs_151 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P76_153[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P76_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P76_specs_153 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P76), + offsetof(struct S1AP_ProtocolIE_Container_6551P76, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P76 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P76_tags_153, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P76_tags_153) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P76_tags_153[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P76_tags_153, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P76_tags_153) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P76_tags_153[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P76_constr_153, &asn_PER_type_S1AP_ProtocolIE_Container_6551P76_constr_153, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P76_153, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P76_specs_153 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P77_155[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModificationIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P77_tags_155[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P77_specs_155 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P77), + offsetof(struct S1AP_ProtocolIE_Container_6551P77, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P77 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P77_tags_155, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P77_tags_155) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P77_tags_155[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P77_tags_155, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P77_tags_155) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P77_tags_155[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P77_constr_155, &asn_PER_type_S1AP_ProtocolIE_Container_6551P77_constr_155, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P77_155, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P77_specs_155 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P78_157[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModificationConfirmIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P78_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P78_specs_157 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P78), + offsetof(struct S1AP_ProtocolIE_Container_6551P78, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P78 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P78_tags_157, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P78_tags_157) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P78_tags_157[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P78_tags_157, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P78_tags_157) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P78_tags_157[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P78_constr_157, &asn_PER_type_S1AP_ProtocolIE_Container_6551P78_constr_157, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P78_157, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P78_specs_157 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P79_159[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P79_tags_159[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P79_specs_159 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P79), + offsetof(struct S1AP_ProtocolIE_Container_6551P79, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P79 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P79_tags_159, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P79_tags_159) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P79_tags_159[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P79_tags_159, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P79_tags_159) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P79_tags_159[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P79_constr_159, &asn_PER_type_S1AP_ProtocolIE_Container_6551P79_constr_159, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P79_159, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P79_specs_159 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P80_161[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationConfirmIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P80_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P80_specs_161 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P80), + offsetof(struct S1AP_ProtocolIE_Container_6551P80, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P80 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P80_tags_161, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P80_tags_161) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P80_tags_161[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P80_tags_161, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P80_tags_161) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P80_tags_161[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P80_constr_161, &asn_PER_type_S1AP_ProtocolIE_Container_6551P80_constr_161, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P80_161, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P80_specs_161 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P81_163[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextSuspendRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P81_tags_163[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P81_specs_163 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P81), + offsetof(struct S1AP_ProtocolIE_Container_6551P81, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P81 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P81_tags_163, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P81_tags_163) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P81_tags_163[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P81_tags_163, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P81_tags_163) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P81_tags_163[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P81_constr_163, &asn_PER_type_S1AP_ProtocolIE_Container_6551P81_constr_163, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P81_163, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P81_specs_163 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P82_165[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextSuspendResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P82_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P82_specs_165 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P82), + offsetof(struct S1AP_ProtocolIE_Container_6551P82, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P82 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P82_tags_165, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P82_tags_165) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P82_tags_165[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P82_tags_165, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P82_tags_165) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P82_tags_165[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P82_constr_165, &asn_PER_type_S1AP_ProtocolIE_Container_6551P82_constr_165, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P82_165, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P82_specs_165 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P83_167[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextResumeRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P83_tags_167[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P83_specs_167 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P83), + offsetof(struct S1AP_ProtocolIE_Container_6551P83, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P83 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P83_tags_167, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P83_tags_167) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P83_tags_167[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P83_tags_167, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P83_tags_167) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P83_tags_167[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P83_constr_167, &asn_PER_type_S1AP_ProtocolIE_Container_6551P83_constr_167, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P83_167, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P83_specs_167 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P84_169[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextResumeResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P84_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P84_specs_169 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P84), + offsetof(struct S1AP_ProtocolIE_Container_6551P84, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P84 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P84_tags_169, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P84_tags_169) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P84_tags_169[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P84_tags_169, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P84_tags_169) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P84_tags_169[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P84_constr_169, &asn_PER_type_S1AP_ProtocolIE_Container_6551P84_constr_169, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P84_169, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P84_specs_169 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P85_171[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextResumeFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P85_tags_171[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P85_specs_171 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P85), + offsetof(struct S1AP_ProtocolIE_Container_6551P85, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P85 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P85_tags_171, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P85_tags_171) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P85_tags_171[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P85_tags_171, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P85_tags_171) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P85_tags_171[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P85_constr_171, &asn_PER_type_S1AP_ProtocolIE_Container_6551P85_constr_171, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P85_171, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P85_specs_171 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P86_173[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P86_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P86_specs_173 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P86), + offsetof(struct S1AP_ProtocolIE_Container_6551P86, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P86 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P86_tags_173, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P86_tags_173) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P86_tags_173[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P86_tags_173, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P86_tags_173) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P86_tags_173[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P86_constr_173, &asn_PER_type_S1AP_ProtocolIE_Container_6551P86_constr_173, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P86_173, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P86_specs_173 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P87_175[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RetrieveUEInformationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P87_tags_175[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P87_specs_175 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P87), + offsetof(struct S1AP_ProtocolIE_Container_6551P87, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P87 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P87_tags_175, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P87_tags_175) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P87_tags_175[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P87_tags_175, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P87_tags_175) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P87_tags_175[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P87_constr_175, &asn_PER_type_S1AP_ProtocolIE_Container_6551P87_constr_175, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P87_175, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P87_specs_175 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P88_177[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEInformationTransferIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P88_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P88_specs_177 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P88), + offsetof(struct S1AP_ProtocolIE_Container_6551P88, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P88 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P88_tags_177, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P88_tags_177) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P88_tags_177[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P88_tags_177, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P88_tags_177) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P88_tags_177[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P88_constr_177, &asn_PER_type_S1AP_ProtocolIE_Container_6551P88_constr_177, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P88_177, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P88_specs_177 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P89_179[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBCPRelocationIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P89_tags_179[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P89_specs_179 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P89), + offsetof(struct S1AP_ProtocolIE_Container_6551P89, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P89 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P89_tags_179, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P89_tags_179) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P89_tags_179[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P89_tags_179, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P89_tags_179) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P89_tags_179[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P89_constr_179, &asn_PER_type_S1AP_ProtocolIE_Container_6551P89_constr_179, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P89_179, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P89_specs_179 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P90_181[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMECPRelocationIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_Container_6551P90_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P90_specs_181 = { + sizeof(struct S1AP_ProtocolIE_Container_6551P90), + offsetof(struct S1AP_ProtocolIE_Container_6551P90, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P90 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_Container_6551P90_tags_181, + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P90_tags_181) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P90_tags_181[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_Container_6551P90_tags_181, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P90_tags_181) + /sizeof(asn_DEF_S1AP_ProtocolIE_Container_6551P90_tags_181[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_Container_6551P90_constr_181, &asn_PER_type_S1AP_ProtocolIE_Container_6551P90_constr_181, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_Container_6551P90_181, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_Container_6551P90_specs_181 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.h b/lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.h new file mode 100644 index 0000000000..cbc9e1f5b5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-Container.h @@ -0,0 +1,1034 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolIE_Container_H_ +#define _S1AP_ProtocolIE_Container_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_HandoverRequiredIEs; +struct S1AP_HandoverCommandIEs; +struct S1AP_HandoverPreparationFailureIEs; +struct S1AP_HandoverRequestIEs; +struct S1AP_HandoverRequestAcknowledgeIEs; +struct S1AP_HandoverFailureIEs; +struct S1AP_HandoverNotifyIEs; +struct S1AP_PathSwitchRequestIEs; +struct S1AP_PathSwitchRequestAcknowledgeIEs; +struct S1AP_PathSwitchRequestFailureIEs; +struct S1AP_HandoverCancelIEs; +struct S1AP_HandoverCancelAcknowledgeIEs; +struct S1AP_E_RABSetupRequestIEs; +struct S1AP_E_RABSetupResponseIEs; +struct S1AP_E_RABModifyRequestIEs; +struct S1AP_E_RABModifyResponseIEs; +struct S1AP_E_RABReleaseCommandIEs; +struct S1AP_E_RABReleaseResponseIEs; +struct S1AP_E_RABReleaseIndicationIEs; +struct S1AP_InitialContextSetupRequestIEs; +struct S1AP_InitialContextSetupResponseIEs; +struct S1AP_InitialContextSetupFailureIEs; +struct S1AP_PagingIEs; +struct S1AP_UEContextReleaseRequest_IEs; +struct S1AP_UEContextReleaseCommand_IEs; +struct S1AP_UEContextReleaseComplete_IEs; +struct S1AP_UEContextModificationRequestIEs; +struct S1AP_UEContextModificationResponseIEs; +struct S1AP_UEContextModificationFailureIEs; +struct S1AP_UERadioCapabilityMatchRequestIEs; +struct S1AP_UERadioCapabilityMatchResponseIEs; +struct S1AP_DownlinkNASTransport_IEs; +struct S1AP_InitialUEMessage_IEs; +struct S1AP_UplinkNASTransport_IEs; +struct S1AP_NASNonDeliveryIndication_IEs; +struct S1AP_RerouteNASRequest_IEs; +struct S1AP_NASDeliveryIndicationIEs; +struct S1AP_ResetIEs; +struct S1AP_ResetAcknowledgeIEs; +struct S1AP_ErrorIndicationIEs; +struct S1AP_S1SetupRequestIEs; +struct S1AP_S1SetupResponseIEs; +struct S1AP_S1SetupFailureIEs; +struct S1AP_ENBConfigurationUpdateIEs; +struct S1AP_ENBConfigurationUpdateAcknowledgeIEs; +struct S1AP_ENBConfigurationUpdateFailureIEs; +struct S1AP_MMEConfigurationUpdateIEs; +struct S1AP_MMEConfigurationUpdateAcknowledgeIEs; +struct S1AP_MMEConfigurationUpdateFailureIEs; +struct S1AP_DownlinkS1cdma2000tunnellingIEs; +struct S1AP_UplinkS1cdma2000tunnellingIEs; +struct S1AP_UECapabilityInfoIndicationIEs; +struct S1AP_ENBStatusTransferIEs; +struct S1AP_MMEStatusTransferIEs; +struct S1AP_TraceStartIEs; +struct S1AP_TraceFailureIndicationIEs; +struct S1AP_DeactivateTraceIEs; +struct S1AP_CellTrafficTraceIEs; +struct S1AP_LocationReportingControlIEs; +struct S1AP_LocationReportingFailureIndicationIEs; +struct S1AP_LocationReportIEs; +struct S1AP_OverloadStartIEs; +struct S1AP_OverloadStopIEs; +struct S1AP_WriteReplaceWarningRequestIEs; +struct S1AP_WriteReplaceWarningResponseIEs; +struct S1AP_ENBDirectInformationTransferIEs; +struct S1AP_MMEDirectInformationTransferIEs; +struct S1AP_ENBConfigurationTransferIEs; +struct S1AP_MMEConfigurationTransferIEs; +struct S1AP_KillRequestIEs; +struct S1AP_KillResponseIEs; +struct S1AP_PWSRestartIndicationIEs; +struct S1AP_PWSFailureIndicationIEs; +struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs; +struct S1AP_UplinkUEAssociatedLPPaTransport_IEs; +struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs; +struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs; +struct S1AP_E_RABModificationIndicationIEs; +struct S1AP_E_RABModificationConfirmIEs; +struct S1AP_UEContextModificationIndicationIEs; +struct S1AP_UEContextModificationConfirmIEs; +struct S1AP_UEContextSuspendRequestIEs; +struct S1AP_UEContextSuspendResponseIEs; +struct S1AP_UEContextResumeRequestIEs; +struct S1AP_UEContextResumeResponseIEs; +struct S1AP_UEContextResumeFailureIEs; +struct S1AP_ConnectionEstablishmentIndicationIEs; +struct S1AP_RetrieveUEInformationIEs; +struct S1AP_UEInformationTransferIEs; +struct S1AP_ENBCPRelocationIndicationIEs; +struct S1AP_MMECPRelocationIndicationIEs; + +/* S1AP_ProtocolIE-Container */ +typedef struct S1AP_ProtocolIE_Container_6551P0 { + A_SEQUENCE_OF(struct S1AP_HandoverRequiredIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P0_t; +typedef struct S1AP_ProtocolIE_Container_6551P1 { + A_SEQUENCE_OF(struct S1AP_HandoverCommandIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P1_t; +typedef struct S1AP_ProtocolIE_Container_6551P2 { + A_SEQUENCE_OF(struct S1AP_HandoverPreparationFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P2_t; +typedef struct S1AP_ProtocolIE_Container_6551P3 { + A_SEQUENCE_OF(struct S1AP_HandoverRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P3_t; +typedef struct S1AP_ProtocolIE_Container_6551P4 { + A_SEQUENCE_OF(struct S1AP_HandoverRequestAcknowledgeIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P4_t; +typedef struct S1AP_ProtocolIE_Container_6551P5 { + A_SEQUENCE_OF(struct S1AP_HandoverFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P5_t; +typedef struct S1AP_ProtocolIE_Container_6551P6 { + A_SEQUENCE_OF(struct S1AP_HandoverNotifyIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P6_t; +typedef struct S1AP_ProtocolIE_Container_6551P7 { + A_SEQUENCE_OF(struct S1AP_PathSwitchRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P7_t; +typedef struct S1AP_ProtocolIE_Container_6551P8 { + A_SEQUENCE_OF(struct S1AP_PathSwitchRequestAcknowledgeIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P8_t; +typedef struct S1AP_ProtocolIE_Container_6551P9 { + A_SEQUENCE_OF(struct S1AP_PathSwitchRequestFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P9_t; +typedef struct S1AP_ProtocolIE_Container_6551P10 { + A_SEQUENCE_OF(struct S1AP_HandoverCancelIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P10_t; +typedef struct S1AP_ProtocolIE_Container_6551P11 { + A_SEQUENCE_OF(struct S1AP_HandoverCancelAcknowledgeIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P11_t; +typedef struct S1AP_ProtocolIE_Container_6551P12 { + A_SEQUENCE_OF(struct S1AP_E_RABSetupRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P12_t; +typedef struct S1AP_ProtocolIE_Container_6551P13 { + A_SEQUENCE_OF(struct S1AP_E_RABSetupResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P13_t; +typedef struct S1AP_ProtocolIE_Container_6551P14 { + A_SEQUENCE_OF(struct S1AP_E_RABModifyRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P14_t; +typedef struct S1AP_ProtocolIE_Container_6551P15 { + A_SEQUENCE_OF(struct S1AP_E_RABModifyResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P15_t; +typedef struct S1AP_ProtocolIE_Container_6551P16 { + A_SEQUENCE_OF(struct S1AP_E_RABReleaseCommandIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P16_t; +typedef struct S1AP_ProtocolIE_Container_6551P17 { + A_SEQUENCE_OF(struct S1AP_E_RABReleaseResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P17_t; +typedef struct S1AP_ProtocolIE_Container_6551P18 { + A_SEQUENCE_OF(struct S1AP_E_RABReleaseIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P18_t; +typedef struct S1AP_ProtocolIE_Container_6551P19 { + A_SEQUENCE_OF(struct S1AP_InitialContextSetupRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P19_t; +typedef struct S1AP_ProtocolIE_Container_6551P20 { + A_SEQUENCE_OF(struct S1AP_InitialContextSetupResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P20_t; +typedef struct S1AP_ProtocolIE_Container_6551P21 { + A_SEQUENCE_OF(struct S1AP_InitialContextSetupFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P21_t; +typedef struct S1AP_ProtocolIE_Container_6551P22 { + A_SEQUENCE_OF(struct S1AP_PagingIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P22_t; +typedef struct S1AP_ProtocolIE_Container_6551P23 { + A_SEQUENCE_OF(struct S1AP_UEContextReleaseRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P23_t; +typedef struct S1AP_ProtocolIE_Container_6551P24 { + A_SEQUENCE_OF(struct S1AP_UEContextReleaseCommand_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P24_t; +typedef struct S1AP_ProtocolIE_Container_6551P25 { + A_SEQUENCE_OF(struct S1AP_UEContextReleaseComplete_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P25_t; +typedef struct S1AP_ProtocolIE_Container_6551P26 { + A_SEQUENCE_OF(struct S1AP_UEContextModificationRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P26_t; +typedef struct S1AP_ProtocolIE_Container_6551P27 { + A_SEQUENCE_OF(struct S1AP_UEContextModificationResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P27_t; +typedef struct S1AP_ProtocolIE_Container_6551P28 { + A_SEQUENCE_OF(struct S1AP_UEContextModificationFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P28_t; +typedef struct S1AP_ProtocolIE_Container_6551P29 { + A_SEQUENCE_OF(struct S1AP_UERadioCapabilityMatchRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P29_t; +typedef struct S1AP_ProtocolIE_Container_6551P30 { + A_SEQUENCE_OF(struct S1AP_UERadioCapabilityMatchResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P30_t; +typedef struct S1AP_ProtocolIE_Container_6551P31 { + A_SEQUENCE_OF(struct S1AP_DownlinkNASTransport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P31_t; +typedef struct S1AP_ProtocolIE_Container_6551P32 { + A_SEQUENCE_OF(struct S1AP_InitialUEMessage_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P32_t; +typedef struct S1AP_ProtocolIE_Container_6551P33 { + A_SEQUENCE_OF(struct S1AP_UplinkNASTransport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P33_t; +typedef struct S1AP_ProtocolIE_Container_6551P34 { + A_SEQUENCE_OF(struct S1AP_NASNonDeliveryIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P34_t; +typedef struct S1AP_ProtocolIE_Container_6551P35 { + A_SEQUENCE_OF(struct S1AP_RerouteNASRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P35_t; +typedef struct S1AP_ProtocolIE_Container_6551P36 { + A_SEQUENCE_OF(struct S1AP_NASDeliveryIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P36_t; +typedef struct S1AP_ProtocolIE_Container_6551P37 { + A_SEQUENCE_OF(struct S1AP_ResetIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P37_t; +typedef struct S1AP_ProtocolIE_Container_6551P38 { + A_SEQUENCE_OF(struct S1AP_ResetAcknowledgeIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P38_t; +typedef struct S1AP_ProtocolIE_Container_6551P39 { + A_SEQUENCE_OF(struct S1AP_ErrorIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P39_t; +typedef struct S1AP_ProtocolIE_Container_6551P40 { + A_SEQUENCE_OF(struct S1AP_S1SetupRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P40_t; +typedef struct S1AP_ProtocolIE_Container_6551P41 { + A_SEQUENCE_OF(struct S1AP_S1SetupResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P41_t; +typedef struct S1AP_ProtocolIE_Container_6551P42 { + A_SEQUENCE_OF(struct S1AP_S1SetupFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P42_t; +typedef struct S1AP_ProtocolIE_Container_6551P43 { + A_SEQUENCE_OF(struct S1AP_ENBConfigurationUpdateIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P43_t; +typedef struct S1AP_ProtocolIE_Container_6551P44 { + A_SEQUENCE_OF(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P44_t; +typedef struct S1AP_ProtocolIE_Container_6551P45 { + A_SEQUENCE_OF(struct S1AP_ENBConfigurationUpdateFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P45_t; +typedef struct S1AP_ProtocolIE_Container_6551P46 { + A_SEQUENCE_OF(struct S1AP_MMEConfigurationUpdateIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P46_t; +typedef struct S1AP_ProtocolIE_Container_6551P47 { + A_SEQUENCE_OF(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P47_t; +typedef struct S1AP_ProtocolIE_Container_6551P48 { + A_SEQUENCE_OF(struct S1AP_MMEConfigurationUpdateFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P48_t; +typedef struct S1AP_ProtocolIE_Container_6551P49 { + A_SEQUENCE_OF(struct S1AP_DownlinkS1cdma2000tunnellingIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P49_t; +typedef struct S1AP_ProtocolIE_Container_6551P50 { + A_SEQUENCE_OF(struct S1AP_UplinkS1cdma2000tunnellingIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P50_t; +typedef struct S1AP_ProtocolIE_Container_6551P51 { + A_SEQUENCE_OF(struct S1AP_UECapabilityInfoIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P51_t; +typedef struct S1AP_ProtocolIE_Container_6551P52 { + A_SEQUENCE_OF(struct S1AP_ENBStatusTransferIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P52_t; +typedef struct S1AP_ProtocolIE_Container_6551P53 { + A_SEQUENCE_OF(struct S1AP_MMEStatusTransferIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P53_t; +typedef struct S1AP_ProtocolIE_Container_6551P54 { + A_SEQUENCE_OF(struct S1AP_TraceStartIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P54_t; +typedef struct S1AP_ProtocolIE_Container_6551P55 { + A_SEQUENCE_OF(struct S1AP_TraceFailureIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P55_t; +typedef struct S1AP_ProtocolIE_Container_6551P56 { + A_SEQUENCE_OF(struct S1AP_DeactivateTraceIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P56_t; +typedef struct S1AP_ProtocolIE_Container_6551P57 { + A_SEQUENCE_OF(struct S1AP_CellTrafficTraceIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P57_t; +typedef struct S1AP_ProtocolIE_Container_6551P58 { + A_SEQUENCE_OF(struct S1AP_LocationReportingControlIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P58_t; +typedef struct S1AP_ProtocolIE_Container_6551P59 { + A_SEQUENCE_OF(struct S1AP_LocationReportingFailureIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P59_t; +typedef struct S1AP_ProtocolIE_Container_6551P60 { + A_SEQUENCE_OF(struct S1AP_LocationReportIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P60_t; +typedef struct S1AP_ProtocolIE_Container_6551P61 { + A_SEQUENCE_OF(struct S1AP_OverloadStartIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P61_t; +typedef struct S1AP_ProtocolIE_Container_6551P62 { + A_SEQUENCE_OF(struct S1AP_OverloadStopIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P62_t; +typedef struct S1AP_ProtocolIE_Container_6551P63 { + A_SEQUENCE_OF(struct S1AP_WriteReplaceWarningRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P63_t; +typedef struct S1AP_ProtocolIE_Container_6551P64 { + A_SEQUENCE_OF(struct S1AP_WriteReplaceWarningResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P64_t; +typedef struct S1AP_ProtocolIE_Container_6551P65 { + A_SEQUENCE_OF(struct S1AP_ENBDirectInformationTransferIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P65_t; +typedef struct S1AP_ProtocolIE_Container_6551P66 { + A_SEQUENCE_OF(struct S1AP_MMEDirectInformationTransferIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P66_t; +typedef struct S1AP_ProtocolIE_Container_6551P67 { + A_SEQUENCE_OF(struct S1AP_ENBConfigurationTransferIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P67_t; +typedef struct S1AP_ProtocolIE_Container_6551P68 { + A_SEQUENCE_OF(struct S1AP_MMEConfigurationTransferIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P68_t; +typedef struct S1AP_ProtocolIE_Container_6551P69 { + A_SEQUENCE_OF(struct S1AP_KillRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P69_t; +typedef struct S1AP_ProtocolIE_Container_6551P70 { + A_SEQUENCE_OF(struct S1AP_KillResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P70_t; +typedef struct S1AP_ProtocolIE_Container_6551P71 { + A_SEQUENCE_OF(struct S1AP_PWSRestartIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P71_t; +typedef struct S1AP_ProtocolIE_Container_6551P72 { + A_SEQUENCE_OF(struct S1AP_PWSFailureIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P72_t; +typedef struct S1AP_ProtocolIE_Container_6551P73 { + A_SEQUENCE_OF(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P73_t; +typedef struct S1AP_ProtocolIE_Container_6551P74 { + A_SEQUENCE_OF(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P74_t; +typedef struct S1AP_ProtocolIE_Container_6551P75 { + A_SEQUENCE_OF(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P75_t; +typedef struct S1AP_ProtocolIE_Container_6551P76 { + A_SEQUENCE_OF(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P76_t; +typedef struct S1AP_ProtocolIE_Container_6551P77 { + A_SEQUENCE_OF(struct S1AP_E_RABModificationIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P77_t; +typedef struct S1AP_ProtocolIE_Container_6551P78 { + A_SEQUENCE_OF(struct S1AP_E_RABModificationConfirmIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P78_t; +typedef struct S1AP_ProtocolIE_Container_6551P79 { + A_SEQUENCE_OF(struct S1AP_UEContextModificationIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P79_t; +typedef struct S1AP_ProtocolIE_Container_6551P80 { + A_SEQUENCE_OF(struct S1AP_UEContextModificationConfirmIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P80_t; +typedef struct S1AP_ProtocolIE_Container_6551P81 { + A_SEQUENCE_OF(struct S1AP_UEContextSuspendRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P81_t; +typedef struct S1AP_ProtocolIE_Container_6551P82 { + A_SEQUENCE_OF(struct S1AP_UEContextSuspendResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P82_t; +typedef struct S1AP_ProtocolIE_Container_6551P83 { + A_SEQUENCE_OF(struct S1AP_UEContextResumeRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P83_t; +typedef struct S1AP_ProtocolIE_Container_6551P84 { + A_SEQUENCE_OF(struct S1AP_UEContextResumeResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P84_t; +typedef struct S1AP_ProtocolIE_Container_6551P85 { + A_SEQUENCE_OF(struct S1AP_UEContextResumeFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P85_t; +typedef struct S1AP_ProtocolIE_Container_6551P86 { + A_SEQUENCE_OF(struct S1AP_ConnectionEstablishmentIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P86_t; +typedef struct S1AP_ProtocolIE_Container_6551P87 { + A_SEQUENCE_OF(struct S1AP_RetrieveUEInformationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P87_t; +typedef struct S1AP_ProtocolIE_Container_6551P88 { + A_SEQUENCE_OF(struct S1AP_UEInformationTransferIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P88_t; +typedef struct S1AP_ProtocolIE_Container_6551P89 { + A_SEQUENCE_OF(struct S1AP_ENBCPRelocationIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P89_t; +typedef struct S1AP_ProtocolIE_Container_6551P90 { + A_SEQUENCE_OF(struct S1AP_MMECPRelocationIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_Container_6551P90_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P0; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P0_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P0_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P1; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P1_specs_3; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P1_3[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P2; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P2_specs_5; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P2_5[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P3; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P3_specs_7; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P3_7[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P4; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P4_specs_9; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P4_9[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P5; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P5_specs_11; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P5_11[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P6; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P6_specs_13; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P6_13[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P7; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P7_specs_15; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P7_15[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P8; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P8_specs_17; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P8_17[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P9; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P9_specs_19; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P9_19[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P9_constr_19; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P10; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P10_specs_21; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P10_21[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P10_constr_21; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P11; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P11_specs_23; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P11_23[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P11_constr_23; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P12; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P12_specs_25; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P12_25[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P12_constr_25; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P13; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P13_specs_27; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P13_27[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P13_constr_27; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P14; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P14_specs_29; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P14_29[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P14_constr_29; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P15; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P15_specs_31; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P15_31[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P15_constr_31; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P16; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P16_specs_33; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P16_33[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P16_constr_33; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P17; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P17_specs_35; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P17_35[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P17_constr_35; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P18; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P18_specs_37; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P18_37[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P18_constr_37; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P19; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P19_specs_39; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P19_39[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P19_constr_39; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P20; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P20_specs_41; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P20_41[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P20_constr_41; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P21; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P21_specs_43; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P21_43[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P21_constr_43; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P22; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P22_specs_45; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P22_45[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P22_constr_45; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P23; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P23_specs_47; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P23_47[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P23_constr_47; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P24; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P24_specs_49; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P24_49[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P24_constr_49; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P25; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P25_specs_51; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P25_51[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P25_constr_51; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P26; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P26_specs_53; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P26_53[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P26_constr_53; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P27; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P27_specs_55; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P27_55[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P27_constr_55; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P28; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P28_specs_57; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P28_57[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P28_constr_57; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P29; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P29_specs_59; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P29_59[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P29_constr_59; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P30; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P30_specs_61; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P30_61[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P30_constr_61; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P31; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P31_specs_63; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P31_63[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P31_constr_63; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P32; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P32_specs_65; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P32_65[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P32_constr_65; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P33; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P33_specs_67; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P33_67[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P33_constr_67; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P34; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P34_specs_69; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P34_69[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P34_constr_69; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P35; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P35_specs_71; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P35_71[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P35_constr_71; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P36; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P36_specs_73; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P36_73[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P36_constr_73; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P37; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P37_specs_75; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P37_75[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P37_constr_75; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P38; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P38_specs_77; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P38_77[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P38_constr_77; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P39; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P39_specs_79; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P39_79[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P39_constr_79; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P40; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P40_specs_81; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P40_81[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P40_constr_81; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P41; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P41_specs_83; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P41_83[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P41_constr_83; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P42; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P42_specs_85; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P42_85[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P42_constr_85; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P43; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P43_specs_87; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P43_87[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P43_constr_87; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P44; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P44_specs_89; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P44_89[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P44_constr_89; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P45; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P45_specs_91; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P45_91[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P45_constr_91; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P46; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P46_specs_93; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P46_93[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P46_constr_93; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P47; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P47_specs_95; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P47_95[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P47_constr_95; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P48; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P48_specs_97; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P48_97[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P48_constr_97; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P49; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P49_specs_99; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P49_99[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P49_constr_99; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P50; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P50_specs_101; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P50_101[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P50_constr_101; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P51; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P51_specs_103; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P51_103[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P51_constr_103; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P52; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P52_specs_105; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P52_105[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P52_constr_105; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P53; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P53_specs_107; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P53_107[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P53_constr_107; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P54; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P54_specs_109; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P54_109[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P54_constr_109; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P55; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P55_specs_111; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P55_111[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P55_constr_111; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P56; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P56_specs_113; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P56_113[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P56_constr_113; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P57; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P57_specs_115; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P57_115[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P57_constr_115; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P58; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P58_specs_117; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P58_117[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P58_constr_117; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P59; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P59_specs_119; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P59_119[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P59_constr_119; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P60; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P60_specs_121; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P60_121[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P60_constr_121; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P61; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P61_specs_123; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P61_123[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P61_constr_123; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P62; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P62_specs_125; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P62_125[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P62_constr_125; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P63; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P63_specs_127; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P63_127[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P63_constr_127; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P64; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P64_specs_129; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P64_129[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P64_constr_129; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P65; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P65_specs_131; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P65_131[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P65_constr_131; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P66; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P66_specs_133; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P66_133[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P66_constr_133; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P67; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P67_specs_135; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P67_135[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P67_constr_135; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P68; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P68_specs_137; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P68_137[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P68_constr_137; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P69; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P69_specs_139; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P69_139[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P69_constr_139; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P70; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P70_specs_141; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P70_141[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P70_constr_141; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P71; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P71_specs_143; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P71_143[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P71_constr_143; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P72; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P72_specs_145; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P72_145[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P72_constr_145; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P73; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P73_specs_147; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P73_147[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P73_constr_147; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P74; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P74_specs_149; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P74_149[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P74_constr_149; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P75; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P75_specs_151; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P75_151[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P75_constr_151; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P76; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P76_specs_153; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P76_153[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P76_constr_153; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P77; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P77_specs_155; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P77_155[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P77_constr_155; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P78; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P78_specs_157; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P78_157[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P78_constr_157; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P79; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P79_specs_159; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P79_159[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P79_constr_159; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P80; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P80_specs_161; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P80_161[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P80_constr_161; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P81; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P81_specs_163; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P81_163[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P81_constr_163; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P82; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P82_specs_165; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P82_165[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P82_constr_165; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P83; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P83_specs_167; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P83_167[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P83_constr_167; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P84; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P84_specs_169; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P84_169[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P84_constr_169; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P85; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P85_specs_171; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P85_171[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P85_constr_171; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P86; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P86_specs_173; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P86_173[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P86_constr_173; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P87; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P87_specs_175; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P87_175[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P87_constr_175; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P88; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P88_specs_177; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P88_177[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P88_constr_177; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P89; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P89_specs_179; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P89_179[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P89_constr_179; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_Container_6551P90; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_Container_6551P90_specs_181; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_Container_6551P90_181[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_Container_6551P90_constr_181; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolIE_Container_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerList.c b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerList.c new file mode 100644 index 0000000000..e596bdf8f0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerList.c @@ -0,0 +1,440 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProtocolIE-ContainerList.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P0_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P1_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P2_constr_5 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P3_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P4_constr_9 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P5_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P6_constr_13 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P7_constr_15 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P8_constr_17 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P9_constr_19 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P0_specs_1 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P0), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P0 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P0_tags_1, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P0_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P0_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P0_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P0_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P0_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P0_constr_1, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P0_1, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P1_specs_3 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P1), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P1 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P1_tags_3, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P1_tags_3) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P1_tags_3[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P1_tags_3, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P1_tags_3) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P1_tags_3[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P1_constr_3, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P1_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P1_3, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P2_specs_5 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P2), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P2 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P2_tags_5, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P2_tags_5) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P2_tags_5[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P2_tags_5, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P2_tags_5) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P2_tags_5[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P2_constr_5, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P2_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P2_5, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P3_specs_7 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P3), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P3 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P3_tags_7, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P3_tags_7) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P3_tags_7[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P3_tags_7, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P3_tags_7) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P3_tags_7[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P3_constr_7, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P3_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P3_7, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P4_specs_9 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P4), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P4 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P4_tags_9, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P4_tags_9) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P4_tags_9[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P4_tags_9, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P4_tags_9) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P4_tags_9[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P4_constr_9, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P4_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P4_9, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P5_specs_11 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P5), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P5 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P5_tags_11, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P5_tags_11) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P5_tags_11[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P5_tags_11, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P5_tags_11) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P5_tags_11[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P5_constr_11, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P5_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P5_11, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P6_specs_13 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P6), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P6 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P6_tags_13, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P6_tags_13) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P6_tags_13[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P6_tags_13, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P6_tags_13) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P6_tags_13[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P6_constr_13, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P6_constr_13, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P6_13, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P7_specs_15 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P7), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P7 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P7_tags_15, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P7_tags_15) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P7_tags_15[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P7_tags_15, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P7_tags_15) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P7_tags_15[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P7_constr_15, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P7_constr_15, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P7_15, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P8_specs_17 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P8), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P8 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P8_tags_17, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P8_tags_17) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P8_tags_17[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P8_tags_17, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P8_tags_17) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P8_tags_17[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P8_constr_17, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P8_constr_17, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P8_17, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P9_specs_19 = { + sizeof(struct S1AP_ProtocolIE_ContainerList_6588P9), + offsetof(struct S1AP_ProtocolIE_ContainerList_6588P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P9 = { + "ProtocolIE-ContainerList", + "ProtocolIE-ContainerList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P9_tags_19, + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P9_tags_19) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P9_tags_19[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ContainerList_6588P9_tags_19, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P9_tags_19) + /sizeof(asn_DEF_S1AP_ProtocolIE_ContainerList_6588P9_tags_19[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ContainerList_6588P9_constr_19, &asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P9_constr_19, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ProtocolIE_ContainerList_6588P9_19, + 1, /* Single element */ + &asn_SPC_S1AP_ProtocolIE_ContainerList_6588P9_specs_19 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerList.h b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerList.h new file mode 100644 index 0000000000..43a591b3cc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerList.h @@ -0,0 +1,134 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolIE_ContainerList_H_ +#define _S1AP_ProtocolIE_ContainerList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_ProtocolIE-ContainerList */ +typedef struct S1AP_ProtocolIE_ContainerList_6588P0 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P0_t; +typedef struct S1AP_ProtocolIE_ContainerList_6588P1 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P1_t; +typedef struct S1AP_ProtocolIE_ContainerList_6588P2 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P2_t; +typedef struct S1AP_ProtocolIE_ContainerList_6588P3 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P3_t; +typedef struct S1AP_ProtocolIE_ContainerList_6588P4 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P4_t; +typedef struct S1AP_ProtocolIE_ContainerList_6588P5 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P5_t; +typedef struct S1AP_ProtocolIE_ContainerList_6588P6 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P6_t; +typedef struct S1AP_ProtocolIE_ContainerList_6588P7 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P7_t; +typedef struct S1AP_ProtocolIE_ContainerList_6588P8 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P8_t; +typedef struct S1AP_ProtocolIE_ContainerList_6588P9 { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ProtocolIE_ContainerList_6588P9_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P0; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P0_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P0_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P1; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P1_specs_3; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P1_3[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P2; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P2_specs_5; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P2_5[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P3; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P3_specs_7; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P3_7[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P4; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P4_specs_9; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P4_9[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P5; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P5_specs_11; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P5_11[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P6; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P6_specs_13; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P6_13[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P7; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P7_specs_15; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P7_15[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P8; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P8_specs_17; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P8_17[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ContainerList_6588P9; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ProtocolIE_ContainerList_6588P9_specs_19; +extern asn_TYPE_member_t asn_MBR_S1AP_ProtocolIE_ContainerList_6588P9_19[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ContainerList_6588P9_constr_19; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolIE_ContainerList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerPair.h b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerPair.h new file mode 100644 index 0000000000..fdbdc33f73 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerPair.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolIE_ContainerPair_H_ +#define _S1AP_ProtocolIE_ContainerPair_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolIE_ContainerPair_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerPairList.h b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerPairList.h new file mode 100644 index 0000000000..2ecc932549 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ContainerPairList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolIE_ContainerPairList_H_ +#define _S1AP_ProtocolIE_ContainerPairList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolIE_ContainerPairList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.c b/lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.c new file mode 100644 index 0000000000..8a96f5c0d8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.c @@ -0,0 +1,36736 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProtocolIE-Field.h" + +static const long asn_VAL_119_S1AP_id_E_RABToBeSetupItemBearerSUReq = 17; +static const long asn_VAL_119_S1AP_reject = 0; +static const long asn_VAL_119_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_119_S1AP_id_E_RABToBeSetupItemBearerSUReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_119_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_119_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqIEs_1_rows } +}; +static const long asn_VAL_125_S1AP_id_E_RABSetupItemBearerSURes = 39; +static const long asn_VAL_125_S1AP_ignore = 1; +static const long asn_VAL_125_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABSetupItemBearerSUResIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_125_S1AP_id_E_RABSetupItemBearerSURes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_125_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABSetupItemBearerSURes }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_125_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABSetupItemBearerSUResIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABSetupItemBearerSUResIEs_1_rows } +}; +static const long asn_VAL_130_S1AP_id_E_RABToBeModifiedItemBearerModReq = 36; +static const long asn_VAL_130_S1AP_reject = 0; +static const long asn_VAL_130_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeModifiedItemBearerModReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_130_S1AP_id_E_RABToBeModifiedItemBearerModReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_130_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_130_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeModifiedItemBearerModReqIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABToBeModifiedItemBearerModReqIEs_1_rows } +}; +static const long asn_VAL_136_S1AP_id_E_RABModifyItemBearerModRes = 37; +static const long asn_VAL_136_S1AP_ignore = 1; +static const long asn_VAL_136_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABModifyItemBearerModResIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_136_S1AP_id_E_RABModifyItemBearerModRes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_136_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABModifyItemBearerModRes }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_136_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABModifyItemBearerModResIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABModifyItemBearerModResIEs_1_rows } +}; +static const long asn_VAL_148_S1AP_id_E_RABReleaseItemBearerRelComp = 15; +static const long asn_VAL_148_S1AP_ignore = 1; +static const long asn_VAL_148_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABReleaseItemBearerRelCompIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_148_S1AP_id_E_RABReleaseItemBearerRelComp }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_148_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABReleaseItemBearerRelComp }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_148_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABReleaseItemBearerRelCompIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABReleaseItemBearerRelCompIEs_1_rows } +}; +static const long asn_VAL_179_S1AP_id_E_RABToBeSetupItemCtxtSUReq = 52; +static const long asn_VAL_179_S1AP_reject = 0; +static const long asn_VAL_179_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_179_S1AP_id_E_RABToBeSetupItemCtxtSUReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_179_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_179_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_1_rows } +}; +static const long asn_VAL_185_S1AP_id_E_RABSetupItemCtxtSURes = 50; +static const long asn_VAL_185_S1AP_ignore = 1; +static const long asn_VAL_185_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABSetupItemCtxtSUResIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_185_S1AP_id_E_RABSetupItemCtxtSURes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_185_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABSetupItemCtxtSURes }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_185_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABSetupItemCtxtSUResIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABSetupItemCtxtSUResIEs_1_rows } +}; +static const long asn_VAL_203_S1AP_id_TAIItem = 47; +static const long asn_VAL_203_S1AP_ignore = 1; +static const long asn_VAL_203_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_TAIItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_203_S1AP_id_TAIItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_203_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TAIItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_203_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_TAIItemIEs_1[] = { + { 1, 4, asn_IOS_S1AP_TAIItemIEs_1_rows } +}; +static const long asn_VAL_294_S1AP_id_UE_associatedLogicalS1_ConnectionItem = 91; +static const long asn_VAL_294_S1AP_reject = 0; +static const long asn_VAL_294_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemRes_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_294_S1AP_id_UE_associatedLogicalS1_ConnectionItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_294_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_294_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemRes_1[] = { + { 1, 4, asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemRes_1_rows } +}; +static const long asn_VAL_297_S1AP_id_UE_associatedLogicalS1_ConnectionItem = 91; +static const long asn_VAL_297_S1AP_ignore = 1; +static const long asn_VAL_297_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_297_S1AP_id_UE_associatedLogicalS1_ConnectionItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_297_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_297_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_1[] = { + { 1, 4, asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_1_rows } +}; +static const long asn_VAL_452_S1AP_id_E_RABModifyItemBearerModConf = 204; +static const long asn_VAL_452_S1AP_ignore = 1; +static const long asn_VAL_452_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABModifyItemBearerModConfIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_452_S1AP_id_E_RABModifyItemBearerModConf }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_452_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABModifyItemBearerModConf }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_452_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABModifyItemBearerModConfIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABModifyItemBearerModConfIEs_1_rows } +}; +static const long asn_VAL_499_S1AP_id_Bearers_SubjectToStatusTransfer_Item = 89; +static const long asn_VAL_499_S1AP_ignore = 1; +static const long asn_VAL_499_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_499_S1AP_id_Bearers_SubjectToStatusTransfer_Item }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_499_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_499_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_1[] = { + { 1, 4, asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_1_rows } +}; +static const long asn_VAL_500_S1AP_id_E_RABInformationListItem = 78; +static const long asn_VAL_500_S1AP_ignore = 1; +static const long asn_VAL_500_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABInformationListIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_500_S1AP_id_E_RABInformationListItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_500_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABInformationListItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_500_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABInformationListIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABInformationListIEs_1_rows } +}; +static const long asn_VAL_501_S1AP_id_E_RABItem = 35; +static const long asn_VAL_501_S1AP_ignore = 1; +static const long asn_VAL_501_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_501_S1AP_id_E_RABItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_501_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_501_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABItemIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABItemIEs_1_rows } +}; +static const long asn_VAL_502_S1AP_id_LoggedMBSFNMDT = 197; +static const long asn_VAL_502_S1AP_ignore = 1; +static const long asn_VAL_502_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_MDTMode_ExtensionIE_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_502_S1AP_id_LoggedMBSFNMDT }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_502_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_LoggedMBSFNMDT }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_502_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_MDTMode_ExtensionIE_1[] = { + { 1, 4, asn_IOS_S1AP_MDTMode_ExtensionIE_1_rows } +}; +static const long asn_VAL_503_S1AP_id_RecommendedCellItem = 214; +static const long asn_VAL_503_S1AP_ignore = 1; +static const long asn_VAL_503_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_RecommendedCellItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_503_S1AP_id_RecommendedCellItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_503_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_RecommendedCellItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_503_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_RecommendedCellItemIEs_1[] = { + { 1, 4, asn_IOS_S1AP_RecommendedCellItemIEs_1_rows } +}; +static const long asn_VAL_504_S1AP_id_RecommendedENBItem = 215; +static const long asn_VAL_504_S1AP_ignore = 1; +static const long asn_VAL_504_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_RecommendedENBItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_504_S1AP_id_RecommendedENBItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_504_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_RecommendedENBItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_504_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_RecommendedENBItemIEs_1[] = { + { 1, 4, asn_IOS_S1AP_RecommendedENBItemIEs_1_rows } +}; +static const long asn_VAL_505_S1AP_id_SON_Information_Report = 206; +static const long asn_VAL_505_S1AP_ignore = 1; +static const long asn_VAL_505_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_SONInformation_ExtensionIE_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_505_S1AP_id_SON_Information_Report }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_505_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SONInformationReport }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_505_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_SONInformation_ExtensionIE_1[] = { + { 1, 4, asn_IOS_S1AP_SONInformation_ExtensionIE_1_rows } +}; +static const long asn_VAL_1_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_1_S1AP_reject = 0; +static const long asn_VAL_1_S1AP_mandatory = 2; +static const long asn_VAL_2_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_2_S1AP_reject = 0; +static const long asn_VAL_2_S1AP_mandatory = 2; +static const long asn_VAL_3_S1AP_id_HandoverType = 1; +static const long asn_VAL_3_S1AP_reject = 0; +static const long asn_VAL_3_S1AP_mandatory = 2; +static const long asn_VAL_4_S1AP_id_Cause = 2; +static const long asn_VAL_4_S1AP_ignore = 1; +static const long asn_VAL_4_S1AP_mandatory = 2; +static const long asn_VAL_5_S1AP_id_TargetID = 4; +static const long asn_VAL_5_S1AP_reject = 0; +static const long asn_VAL_5_S1AP_mandatory = 2; +static const long asn_VAL_6_S1AP_id_Direct_Forwarding_Path_Availability = 79; +static const long asn_VAL_6_S1AP_ignore = 1; +static const long asn_VAL_6_S1AP_optional = 0; +static const long asn_VAL_7_S1AP_id_SRVCCHOIndication = 125; +static const long asn_VAL_7_S1AP_reject = 0; +static const long asn_VAL_7_S1AP_optional = 0; +static const long asn_VAL_8_S1AP_id_Source_ToTarget_TransparentContainer = 104; +static const long asn_VAL_8_S1AP_reject = 0; +static const long asn_VAL_8_S1AP_mandatory = 2; +static const long asn_VAL_9_S1AP_id_Source_ToTarget_TransparentContainer_Secondary = 138; +static const long asn_VAL_9_S1AP_reject = 0; +static const long asn_VAL_9_S1AP_optional = 0; +static const long asn_VAL_10_S1AP_id_MSClassmark2 = 132; +static const long asn_VAL_10_S1AP_reject = 0; +static const long asn_VAL_10_S1AP_conditional = 1; +static const long asn_VAL_11_S1AP_id_MSClassmark3 = 133; +static const long asn_VAL_11_S1AP_ignore = 1; +static const long asn_VAL_11_S1AP_conditional = 1; +static const long asn_VAL_12_S1AP_id_CSG_Id = 127; +static const long asn_VAL_12_S1AP_reject = 0; +static const long asn_VAL_12_S1AP_optional = 0; +static const long asn_VAL_13_S1AP_id_CellAccessMode = 145; +static const long asn_VAL_13_S1AP_reject = 0; +static const long asn_VAL_13_S1AP_optional = 0; +static const long asn_VAL_14_S1AP_id_PS_ServiceNotAvailable = 150; +static const long asn_VAL_14_S1AP_ignore = 1; +static const long asn_VAL_14_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_HandoverRequiredIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_1_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_1_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_1_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_2_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_2_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_2_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_3_S1AP_id_HandoverType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_3_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_HandoverType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_3_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_4_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_4_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_4_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_5_S1AP_id_TargetID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_5_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_TargetID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_5_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_6_S1AP_id_Direct_Forwarding_Path_Availability }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_6_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Direct_Forwarding_Path_Availability }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_6_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_7_S1AP_id_SRVCCHOIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_7_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SRVCCHOIndication }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_7_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_8_S1AP_id_Source_ToTarget_TransparentContainer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_8_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Source_ToTarget_TransparentContainer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_8_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_9_S1AP_id_Source_ToTarget_TransparentContainer_Secondary }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_9_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Source_ToTarget_TransparentContainer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_9_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_10_S1AP_id_MSClassmark2 }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_10_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MSClassmark2 }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_10_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_11_S1AP_id_MSClassmark3 }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_11_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MSClassmark3 }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_11_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_12_S1AP_id_CSG_Id }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_12_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSG_Id }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_12_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_13_S1AP_id_CellAccessMode }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_13_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CellAccessMode }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_13_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_14_S1AP_id_PS_ServiceNotAvailable }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_14_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_PS_ServiceNotAvailable }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_14_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_HandoverRequiredIEs_1[] = { + { 14, 4, asn_IOS_S1AP_HandoverRequiredIEs_1_rows } +}; +static const long asn_VAL_15_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_15_S1AP_reject = 0; +static const long asn_VAL_15_S1AP_mandatory = 2; +static const long asn_VAL_16_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_16_S1AP_reject = 0; +static const long asn_VAL_16_S1AP_mandatory = 2; +static const long asn_VAL_17_S1AP_id_HandoverType = 1; +static const long asn_VAL_17_S1AP_reject = 0; +static const long asn_VAL_17_S1AP_mandatory = 2; +static const long asn_VAL_18_S1AP_id_NASSecurityParametersfromE_UTRAN = 135; +static const long asn_VAL_18_S1AP_reject = 0; +static const long asn_VAL_18_S1AP_conditional = 1; +static const long asn_VAL_19_S1AP_id_E_RABSubjecttoDataForwardingList = 12; +static const long asn_VAL_19_S1AP_ignore = 1; +static const long asn_VAL_19_S1AP_optional = 0; +static const long asn_VAL_20_S1AP_id_E_RABtoReleaseListHOCmd = 13; +static const long asn_VAL_20_S1AP_ignore = 1; +static const long asn_VAL_20_S1AP_optional = 0; +static const long asn_VAL_21_S1AP_id_Target_ToSource_TransparentContainer = 123; +static const long asn_VAL_21_S1AP_reject = 0; +static const long asn_VAL_21_S1AP_mandatory = 2; +static const long asn_VAL_22_S1AP_id_Target_ToSource_TransparentContainer_Secondary = 139; +static const long asn_VAL_22_S1AP_reject = 0; +static const long asn_VAL_22_S1AP_optional = 0; +static const long asn_VAL_23_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_23_S1AP_ignore = 1; +static const long asn_VAL_23_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_HandoverCommandIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_15_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_15_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_15_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_16_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_16_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_16_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_17_S1AP_id_HandoverType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_17_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_HandoverType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_17_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_18_S1AP_id_NASSecurityParametersfromE_UTRAN }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_18_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_18_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_19_S1AP_id_E_RABSubjecttoDataForwardingList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_19_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABSubjecttoDataForwardingList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_19_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_20_S1AP_id_E_RABtoReleaseListHOCmd }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_20_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_20_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_21_S1AP_id_Target_ToSource_TransparentContainer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_21_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Target_ToSource_TransparentContainer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_21_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_22_S1AP_id_Target_ToSource_TransparentContainer_Secondary }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_22_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Target_ToSource_TransparentContainer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_22_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_23_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_23_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_23_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_HandoverCommandIEs_1[] = { + { 9, 4, asn_IOS_S1AP_HandoverCommandIEs_1_rows } +}; +static const long asn_VAL_25_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_25_S1AP_ignore = 1; +static const long asn_VAL_25_S1AP_mandatory = 2; +static const long asn_VAL_26_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_26_S1AP_ignore = 1; +static const long asn_VAL_26_S1AP_mandatory = 2; +static const long asn_VAL_27_S1AP_id_Cause = 2; +static const long asn_VAL_27_S1AP_ignore = 1; +static const long asn_VAL_27_S1AP_mandatory = 2; +static const long asn_VAL_28_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_28_S1AP_ignore = 1; +static const long asn_VAL_28_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_HandoverPreparationFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_25_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_25_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_25_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_26_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_26_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_26_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_27_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_27_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_27_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_28_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_28_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_28_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_HandoverPreparationFailureIEs_1[] = { + { 4, 4, asn_IOS_S1AP_HandoverPreparationFailureIEs_1_rows } +}; +static const long asn_VAL_29_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_29_S1AP_reject = 0; +static const long asn_VAL_29_S1AP_mandatory = 2; +static const long asn_VAL_30_S1AP_id_HandoverType = 1; +static const long asn_VAL_30_S1AP_reject = 0; +static const long asn_VAL_30_S1AP_mandatory = 2; +static const long asn_VAL_31_S1AP_id_Cause = 2; +static const long asn_VAL_31_S1AP_ignore = 1; +static const long asn_VAL_31_S1AP_mandatory = 2; +static const long asn_VAL_32_S1AP_id_uEaggregateMaximumBitrate = 66; +static const long asn_VAL_32_S1AP_reject = 0; +static const long asn_VAL_32_S1AP_mandatory = 2; +static const long asn_VAL_33_S1AP_id_E_RABToBeSetupListHOReq = 53; +static const long asn_VAL_33_S1AP_reject = 0; +static const long asn_VAL_33_S1AP_mandatory = 2; +static const long asn_VAL_34_S1AP_id_Source_ToTarget_TransparentContainer = 104; +static const long asn_VAL_34_S1AP_reject = 0; +static const long asn_VAL_34_S1AP_mandatory = 2; +static const long asn_VAL_35_S1AP_id_UESecurityCapabilities = 107; +static const long asn_VAL_35_S1AP_reject = 0; +static const long asn_VAL_35_S1AP_mandatory = 2; +static const long asn_VAL_36_S1AP_id_HandoverRestrictionList = 41; +static const long asn_VAL_36_S1AP_ignore = 1; +static const long asn_VAL_36_S1AP_optional = 0; +static const long asn_VAL_37_S1AP_id_TraceActivation = 25; +static const long asn_VAL_37_S1AP_ignore = 1; +static const long asn_VAL_37_S1AP_optional = 0; +static const long asn_VAL_38_S1AP_id_RequestType = 98; +static const long asn_VAL_38_S1AP_ignore = 1; +static const long asn_VAL_38_S1AP_optional = 0; +static const long asn_VAL_39_S1AP_id_SRVCCOperationPossible = 124; +static const long asn_VAL_39_S1AP_ignore = 1; +static const long asn_VAL_39_S1AP_optional = 0; +static const long asn_VAL_40_S1AP_id_SecurityContext = 40; +static const long asn_VAL_40_S1AP_reject = 0; +static const long asn_VAL_40_S1AP_mandatory = 2; +static const long asn_VAL_41_S1AP_id_NASSecurityParameterstoE_UTRAN = 136; +static const long asn_VAL_41_S1AP_reject = 0; +static const long asn_VAL_41_S1AP_conditional = 1; +static const long asn_VAL_42_S1AP_id_CSG_Id = 127; +static const long asn_VAL_42_S1AP_reject = 0; +static const long asn_VAL_42_S1AP_optional = 0; +static const long asn_VAL_43_S1AP_id_CSGMembershipStatus = 146; +static const long asn_VAL_43_S1AP_ignore = 1; +static const long asn_VAL_43_S1AP_optional = 0; +static const long asn_VAL_44_S1AP_id_GUMMEI_ID = 75; +static const long asn_VAL_44_S1AP_ignore = 1; +static const long asn_VAL_44_S1AP_optional = 0; +static const long asn_VAL_45_S1AP_id_MME_UE_S1AP_ID_2 = 158; +static const long asn_VAL_45_S1AP_ignore = 1; +static const long asn_VAL_45_S1AP_optional = 0; +static const long asn_VAL_46_S1AP_id_ManagementBasedMDTAllowed = 165; +static const long asn_VAL_46_S1AP_ignore = 1; +static const long asn_VAL_46_S1AP_optional = 0; +static const long asn_VAL_47_S1AP_id_ManagementBasedMDTPLMNList = 177; +static const long asn_VAL_47_S1AP_ignore = 1; +static const long asn_VAL_47_S1AP_optional = 0; +static const long asn_VAL_48_S1AP_id_Masked_IMEISV = 192; +static const long asn_VAL_48_S1AP_ignore = 1; +static const long asn_VAL_48_S1AP_optional = 0; +static const long asn_VAL_49_S1AP_id_ExpectedUEBehaviour = 196; +static const long asn_VAL_49_S1AP_ignore = 1; +static const long asn_VAL_49_S1AP_optional = 0; +static const long asn_VAL_50_S1AP_id_ProSeAuthorized = 195; +static const long asn_VAL_50_S1AP_ignore = 1; +static const long asn_VAL_50_S1AP_optional = 0; +static const long asn_VAL_51_S1AP_id_UEUserPlaneCIoTSupportIndicator = 241; +static const long asn_VAL_51_S1AP_ignore = 1; +static const long asn_VAL_51_S1AP_optional = 0; +static const long asn_VAL_52_S1AP_id_V2XServicesAuthorized = 240; +static const long asn_VAL_52_S1AP_ignore = 1; +static const long asn_VAL_52_S1AP_optional = 0; +static const long asn_VAL_53_S1AP_id_UESidelinkAggregateMaximumBitrate = 248; +static const long asn_VAL_53_S1AP_ignore = 1; +static const long asn_VAL_53_S1AP_optional = 0; +static const long asn_VAL_54_S1AP_id_EnhancedCoverageRestricted = 251; +static const long asn_VAL_54_S1AP_ignore = 1; +static const long asn_VAL_54_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_HandoverRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_29_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_29_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_29_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_30_S1AP_id_HandoverType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_30_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_HandoverType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_30_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_31_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_31_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_31_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_32_S1AP_id_uEaggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_32_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_32_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_33_S1AP_id_E_RABToBeSetupListHOReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_33_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSetupListHOReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_33_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_34_S1AP_id_Source_ToTarget_TransparentContainer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_34_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Source_ToTarget_TransparentContainer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_34_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_35_S1AP_id_UESecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_35_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_35_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_36_S1AP_id_HandoverRestrictionList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_36_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_HandoverRestrictionList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_36_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_37_S1AP_id_TraceActivation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_37_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TraceActivation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_37_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_38_S1AP_id_RequestType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_38_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_RequestType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_38_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_39_S1AP_id_SRVCCOperationPossible }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_39_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SRVCCOperationPossible }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_39_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_40_S1AP_id_SecurityContext }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_40_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SecurityContext }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_40_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_41_S1AP_id_NASSecurityParameterstoE_UTRAN }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_41_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_41_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_42_S1AP_id_CSG_Id }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_42_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSG_Id }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_42_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_43_S1AP_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_43_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_43_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_44_S1AP_id_GUMMEI_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_44_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_GUMMEI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_44_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_45_S1AP_id_MME_UE_S1AP_ID_2 }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_45_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_45_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_46_S1AP_id_ManagementBasedMDTAllowed }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_46_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ManagementBasedMDTAllowed }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_46_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_47_S1AP_id_ManagementBasedMDTPLMNList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_47_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MDTPLMNList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_47_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_48_S1AP_id_Masked_IMEISV }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_48_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Masked_IMEISV }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_48_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_49_S1AP_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_49_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_49_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_50_S1AP_id_ProSeAuthorized }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_50_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ProSeAuthorized }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_50_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_51_S1AP_id_UEUserPlaneCIoTSupportIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_51_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_51_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_52_S1AP_id_V2XServicesAuthorized }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_52_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_V2XServicesAuthorized }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_52_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_53_S1AP_id_UESidelinkAggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_53_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_53_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_54_S1AP_id_EnhancedCoverageRestricted }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_54_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EnhancedCoverageRestricted }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_54_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_HandoverRequestIEs_1[] = { + { 26, 4, asn_IOS_S1AP_HandoverRequestIEs_1_rows } +}; +static const long asn_VAL_56_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_56_S1AP_ignore = 1; +static const long asn_VAL_56_S1AP_mandatory = 2; +static const long asn_VAL_57_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_57_S1AP_ignore = 1; +static const long asn_VAL_57_S1AP_mandatory = 2; +static const long asn_VAL_58_S1AP_id_E_RABAdmittedList = 18; +static const long asn_VAL_58_S1AP_ignore = 1; +static const long asn_VAL_58_S1AP_mandatory = 2; +static const long asn_VAL_59_S1AP_id_E_RABFailedToSetupListHOReqAck = 19; +static const long asn_VAL_59_S1AP_ignore = 1; +static const long asn_VAL_59_S1AP_optional = 0; +static const long asn_VAL_60_S1AP_id_Target_ToSource_TransparentContainer = 123; +static const long asn_VAL_60_S1AP_reject = 0; +static const long asn_VAL_60_S1AP_mandatory = 2; +static const long asn_VAL_61_S1AP_id_CSG_Id = 127; +static const long asn_VAL_61_S1AP_ignore = 1; +static const long asn_VAL_61_S1AP_optional = 0; +static const long asn_VAL_62_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_62_S1AP_ignore = 1; +static const long asn_VAL_62_S1AP_optional = 0; +static const long asn_VAL_63_S1AP_id_CellAccessMode = 145; +static const long asn_VAL_63_S1AP_ignore = 1; +static const long asn_VAL_63_S1AP_optional = 0; +static const long asn_VAL_64_S1AP_id_CE_mode_B_SupportIndicator = 242; +static const long asn_VAL_64_S1AP_ignore = 1; +static const long asn_VAL_64_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_HandoverRequestAcknowledgeIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_56_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_56_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_56_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_57_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_57_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_57_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_58_S1AP_id_E_RABAdmittedList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_58_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABAdmittedList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_58_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_59_S1AP_id_E_RABFailedToSetupListHOReqAck }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_59_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_59_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_60_S1AP_id_Target_ToSource_TransparentContainer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_60_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Target_ToSource_TransparentContainer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_60_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_61_S1AP_id_CSG_Id }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_61_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSG_Id }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_61_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_62_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_62_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_62_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_63_S1AP_id_CellAccessMode }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_63_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CellAccessMode }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_63_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_64_S1AP_id_CE_mode_B_SupportIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_64_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CE_mode_B_SupportIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_64_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_HandoverRequestAcknowledgeIEs_1[] = { + { 9, 4, asn_IOS_S1AP_HandoverRequestAcknowledgeIEs_1_rows } +}; +static const long asn_VAL_67_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_67_S1AP_ignore = 1; +static const long asn_VAL_67_S1AP_mandatory = 2; +static const long asn_VAL_68_S1AP_id_Cause = 2; +static const long asn_VAL_68_S1AP_ignore = 1; +static const long asn_VAL_68_S1AP_mandatory = 2; +static const long asn_VAL_69_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_69_S1AP_ignore = 1; +static const long asn_VAL_69_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_HandoverFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_67_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_67_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_67_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_68_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_68_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_68_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_69_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_69_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_69_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_HandoverFailureIEs_1[] = { + { 3, 4, asn_IOS_S1AP_HandoverFailureIEs_1_rows } +}; +static const long asn_VAL_70_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_70_S1AP_reject = 0; +static const long asn_VAL_70_S1AP_mandatory = 2; +static const long asn_VAL_71_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_71_S1AP_reject = 0; +static const long asn_VAL_71_S1AP_mandatory = 2; +static const long asn_VAL_72_S1AP_id_EUTRAN_CGI = 100; +static const long asn_VAL_72_S1AP_ignore = 1; +static const long asn_VAL_72_S1AP_mandatory = 2; +static const long asn_VAL_73_S1AP_id_TAI = 67; +static const long asn_VAL_73_S1AP_ignore = 1; +static const long asn_VAL_73_S1AP_mandatory = 2; +static const long asn_VAL_74_S1AP_id_Tunnel_Information_for_BBF = 176; +static const long asn_VAL_74_S1AP_ignore = 1; +static const long asn_VAL_74_S1AP_optional = 0; +static const long asn_VAL_75_S1AP_id_LHN_ID = 186; +static const long asn_VAL_75_S1AP_ignore = 1; +static const long asn_VAL_75_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_HandoverNotifyIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_70_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_70_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_70_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_71_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_71_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_71_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_72_S1AP_id_EUTRAN_CGI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_72_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EUTRAN_CGI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_72_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_73_S1AP_id_TAI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_73_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TAI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_73_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_74_S1AP_id_Tunnel_Information_for_BBF }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_74_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TunnelInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_74_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_75_S1AP_id_LHN_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_75_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_LHN_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_75_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_HandoverNotifyIEs_1[] = { + { 6, 4, asn_IOS_S1AP_HandoverNotifyIEs_1_rows } +}; +static const long asn_VAL_76_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_76_S1AP_reject = 0; +static const long asn_VAL_76_S1AP_mandatory = 2; +static const long asn_VAL_77_S1AP_id_E_RABToBeSwitchedDLList = 22; +static const long asn_VAL_77_S1AP_reject = 0; +static const long asn_VAL_77_S1AP_mandatory = 2; +static const long asn_VAL_78_S1AP_id_SourceMME_UE_S1AP_ID = 88; +static const long asn_VAL_78_S1AP_reject = 0; +static const long asn_VAL_78_S1AP_mandatory = 2; +static const long asn_VAL_79_S1AP_id_EUTRAN_CGI = 100; +static const long asn_VAL_79_S1AP_ignore = 1; +static const long asn_VAL_79_S1AP_mandatory = 2; +static const long asn_VAL_80_S1AP_id_TAI = 67; +static const long asn_VAL_80_S1AP_ignore = 1; +static const long asn_VAL_80_S1AP_mandatory = 2; +static const long asn_VAL_81_S1AP_id_UESecurityCapabilities = 107; +static const long asn_VAL_81_S1AP_ignore = 1; +static const long asn_VAL_81_S1AP_mandatory = 2; +static const long asn_VAL_82_S1AP_id_CSG_Id = 127; +static const long asn_VAL_82_S1AP_ignore = 1; +static const long asn_VAL_82_S1AP_optional = 0; +static const long asn_VAL_83_S1AP_id_CellAccessMode = 145; +static const long asn_VAL_83_S1AP_ignore = 1; +static const long asn_VAL_83_S1AP_optional = 0; +static const long asn_VAL_84_S1AP_id_SourceMME_GUMMEI = 157; +static const long asn_VAL_84_S1AP_ignore = 1; +static const long asn_VAL_84_S1AP_optional = 0; +static const long asn_VAL_85_S1AP_id_CSGMembershipStatus = 146; +static const long asn_VAL_85_S1AP_ignore = 1; +static const long asn_VAL_85_S1AP_optional = 0; +static const long asn_VAL_86_S1AP_id_Tunnel_Information_for_BBF = 176; +static const long asn_VAL_86_S1AP_ignore = 1; +static const long asn_VAL_86_S1AP_optional = 0; +static const long asn_VAL_87_S1AP_id_LHN_ID = 186; +static const long asn_VAL_87_S1AP_ignore = 1; +static const long asn_VAL_87_S1AP_optional = 0; +static const long asn_VAL_88_S1AP_id_RRC_Resume_Cause = 245; +static const long asn_VAL_88_S1AP_ignore = 1; +static const long asn_VAL_88_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_PathSwitchRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_76_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_76_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_76_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_77_S1AP_id_E_RABToBeSwitchedDLList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_77_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSwitchedDLList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_77_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_78_S1AP_id_SourceMME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_78_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_78_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_79_S1AP_id_EUTRAN_CGI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_79_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EUTRAN_CGI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_79_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_80_S1AP_id_TAI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_80_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TAI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_80_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_81_S1AP_id_UESecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_81_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_81_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_82_S1AP_id_CSG_Id }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_82_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSG_Id }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_82_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_83_S1AP_id_CellAccessMode }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_83_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CellAccessMode }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_83_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_84_S1AP_id_SourceMME_GUMMEI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_84_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_GUMMEI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_84_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_85_S1AP_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_85_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_85_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_86_S1AP_id_Tunnel_Information_for_BBF }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_86_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TunnelInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_86_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_87_S1AP_id_LHN_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_87_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_LHN_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_87_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_88_S1AP_id_RRC_Resume_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_88_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_RRC_Establishment_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_88_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_PathSwitchRequestIEs_1[] = { + { 13, 4, asn_IOS_S1AP_PathSwitchRequestIEs_1_rows } +}; +static const long asn_VAL_90_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_90_S1AP_ignore = 1; +static const long asn_VAL_90_S1AP_mandatory = 2; +static const long asn_VAL_91_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_91_S1AP_ignore = 1; +static const long asn_VAL_91_S1AP_mandatory = 2; +static const long asn_VAL_92_S1AP_id_uEaggregateMaximumBitrate = 66; +static const long asn_VAL_92_S1AP_ignore = 1; +static const long asn_VAL_92_S1AP_optional = 0; +static const long asn_VAL_93_S1AP_id_E_RABToBeSwitchedULList = 95; +static const long asn_VAL_93_S1AP_ignore = 1; +static const long asn_VAL_93_S1AP_optional = 0; +static const long asn_VAL_94_S1AP_id_E_RABToBeReleasedList = 33; +static const long asn_VAL_94_S1AP_ignore = 1; +static const long asn_VAL_94_S1AP_optional = 0; +static const long asn_VAL_95_S1AP_id_SecurityContext = 40; +static const long asn_VAL_95_S1AP_reject = 0; +static const long asn_VAL_95_S1AP_mandatory = 2; +static const long asn_VAL_96_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_96_S1AP_ignore = 1; +static const long asn_VAL_96_S1AP_optional = 0; +static const long asn_VAL_97_S1AP_id_MME_UE_S1AP_ID_2 = 158; +static const long asn_VAL_97_S1AP_ignore = 1; +static const long asn_VAL_97_S1AP_optional = 0; +static const long asn_VAL_98_S1AP_id_CSGMembershipStatus = 146; +static const long asn_VAL_98_S1AP_ignore = 1; +static const long asn_VAL_98_S1AP_optional = 0; +static const long asn_VAL_99_S1AP_id_ProSeAuthorized = 195; +static const long asn_VAL_99_S1AP_ignore = 1; +static const long asn_VAL_99_S1AP_optional = 0; +static const long asn_VAL_100_S1AP_id_UEUserPlaneCIoTSupportIndicator = 241; +static const long asn_VAL_100_S1AP_ignore = 1; +static const long asn_VAL_100_S1AP_optional = 0; +static const long asn_VAL_101_S1AP_id_V2XServicesAuthorized = 240; +static const long asn_VAL_101_S1AP_ignore = 1; +static const long asn_VAL_101_S1AP_optional = 0; +static const long asn_VAL_102_S1AP_id_UESidelinkAggregateMaximumBitrate = 248; +static const long asn_VAL_102_S1AP_ignore = 1; +static const long asn_VAL_102_S1AP_optional = 0; +static const long asn_VAL_103_S1AP_id_EnhancedCoverageRestricted = 251; +static const long asn_VAL_103_S1AP_ignore = 1; +static const long asn_VAL_103_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_PathSwitchRequestAcknowledgeIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_90_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_90_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_90_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_91_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_91_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_91_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_92_S1AP_id_uEaggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_92_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_92_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_93_S1AP_id_E_RABToBeSwitchedULList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_93_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSwitchedULList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_93_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_94_S1AP_id_E_RABToBeReleasedList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_94_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_94_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_95_S1AP_id_SecurityContext }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_95_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SecurityContext }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_95_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_96_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_96_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_96_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_97_S1AP_id_MME_UE_S1AP_ID_2 }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_97_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_97_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_98_S1AP_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_98_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_98_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_99_S1AP_id_ProSeAuthorized }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_99_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ProSeAuthorized }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_99_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_100_S1AP_id_UEUserPlaneCIoTSupportIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_100_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_100_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_101_S1AP_id_V2XServicesAuthorized }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_101_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_V2XServicesAuthorized }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_101_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_102_S1AP_id_UESidelinkAggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_102_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_102_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_103_S1AP_id_EnhancedCoverageRestricted }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_103_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EnhancedCoverageRestricted }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_103_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_PathSwitchRequestAcknowledgeIEs_1[] = { + { 14, 4, asn_IOS_S1AP_PathSwitchRequestAcknowledgeIEs_1_rows } +}; +static const long asn_VAL_105_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_105_S1AP_ignore = 1; +static const long asn_VAL_105_S1AP_mandatory = 2; +static const long asn_VAL_106_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_106_S1AP_ignore = 1; +static const long asn_VAL_106_S1AP_mandatory = 2; +static const long asn_VAL_107_S1AP_id_Cause = 2; +static const long asn_VAL_107_S1AP_ignore = 1; +static const long asn_VAL_107_S1AP_mandatory = 2; +static const long asn_VAL_108_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_108_S1AP_ignore = 1; +static const long asn_VAL_108_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_PathSwitchRequestFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_105_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_105_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_105_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_106_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_106_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_106_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_107_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_107_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_107_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_108_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_108_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_108_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_PathSwitchRequestFailureIEs_1[] = { + { 4, 4, asn_IOS_S1AP_PathSwitchRequestFailureIEs_1_rows } +}; +static const long asn_VAL_109_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_109_S1AP_reject = 0; +static const long asn_VAL_109_S1AP_mandatory = 2; +static const long asn_VAL_110_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_110_S1AP_reject = 0; +static const long asn_VAL_110_S1AP_mandatory = 2; +static const long asn_VAL_111_S1AP_id_Cause = 2; +static const long asn_VAL_111_S1AP_ignore = 1; +static const long asn_VAL_111_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_HandoverCancelIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_109_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_109_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_109_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_110_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_110_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_110_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_111_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_111_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_111_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_HandoverCancelIEs_1[] = { + { 3, 4, asn_IOS_S1AP_HandoverCancelIEs_1_rows } +}; +static const long asn_VAL_112_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_112_S1AP_ignore = 1; +static const long asn_VAL_112_S1AP_mandatory = 2; +static const long asn_VAL_113_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_113_S1AP_ignore = 1; +static const long asn_VAL_113_S1AP_mandatory = 2; +static const long asn_VAL_114_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_114_S1AP_ignore = 1; +static const long asn_VAL_114_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_HandoverCancelAcknowledgeIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_112_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_112_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_112_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_113_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_113_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_113_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_114_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_114_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_114_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_HandoverCancelAcknowledgeIEs_1[] = { + { 3, 4, asn_IOS_S1AP_HandoverCancelAcknowledgeIEs_1_rows } +}; +static const long asn_VAL_115_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_115_S1AP_reject = 0; +static const long asn_VAL_115_S1AP_mandatory = 2; +static const long asn_VAL_116_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_116_S1AP_reject = 0; +static const long asn_VAL_116_S1AP_mandatory = 2; +static const long asn_VAL_117_S1AP_id_uEaggregateMaximumBitrate = 66; +static const long asn_VAL_117_S1AP_reject = 0; +static const long asn_VAL_117_S1AP_optional = 0; +static const long asn_VAL_118_S1AP_id_E_RABToBeSetupListBearerSUReq = 16; +static const long asn_VAL_118_S1AP_reject = 0; +static const long asn_VAL_118_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABSetupRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_115_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_115_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_115_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_116_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_116_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_116_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_117_S1AP_id_uEaggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_117_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_117_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_118_S1AP_id_E_RABToBeSetupListBearerSUReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_118_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_118_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABSetupRequestIEs_1[] = { + { 4, 4, asn_IOS_S1AP_E_RABSetupRequestIEs_1_rows } +}; +static const long asn_VAL_120_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_120_S1AP_ignore = 1; +static const long asn_VAL_120_S1AP_mandatory = 2; +static const long asn_VAL_121_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_121_S1AP_ignore = 1; +static const long asn_VAL_121_S1AP_mandatory = 2; +static const long asn_VAL_122_S1AP_id_E_RABSetupListBearerSURes = 28; +static const long asn_VAL_122_S1AP_ignore = 1; +static const long asn_VAL_122_S1AP_optional = 0; +static const long asn_VAL_123_S1AP_id_E_RABFailedToSetupListBearerSURes = 29; +static const long asn_VAL_123_S1AP_ignore = 1; +static const long asn_VAL_123_S1AP_optional = 0; +static const long asn_VAL_124_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_124_S1AP_ignore = 1; +static const long asn_VAL_124_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABSetupResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_120_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_120_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_120_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_121_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_121_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_121_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_122_S1AP_id_E_RABSetupListBearerSURes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_122_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABSetupListBearerSURes }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_122_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_123_S1AP_id_E_RABFailedToSetupListBearerSURes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_123_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_123_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_124_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_124_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_124_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABSetupResponseIEs_1[] = { + { 5, 4, asn_IOS_S1AP_E_RABSetupResponseIEs_1_rows } +}; +static const long asn_VAL_126_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_126_S1AP_reject = 0; +static const long asn_VAL_126_S1AP_mandatory = 2; +static const long asn_VAL_127_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_127_S1AP_reject = 0; +static const long asn_VAL_127_S1AP_mandatory = 2; +static const long asn_VAL_128_S1AP_id_uEaggregateMaximumBitrate = 66; +static const long asn_VAL_128_S1AP_reject = 0; +static const long asn_VAL_128_S1AP_optional = 0; +static const long asn_VAL_129_S1AP_id_E_RABToBeModifiedListBearerModReq = 30; +static const long asn_VAL_129_S1AP_reject = 0; +static const long asn_VAL_129_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABModifyRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_126_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_126_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_126_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_127_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_127_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_127_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_128_S1AP_id_uEaggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_128_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_128_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_129_S1AP_id_E_RABToBeModifiedListBearerModReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_129_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_129_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABModifyRequestIEs_1[] = { + { 4, 4, asn_IOS_S1AP_E_RABModifyRequestIEs_1_rows } +}; +static const long asn_VAL_131_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_131_S1AP_ignore = 1; +static const long asn_VAL_131_S1AP_mandatory = 2; +static const long asn_VAL_132_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_132_S1AP_ignore = 1; +static const long asn_VAL_132_S1AP_mandatory = 2; +static const long asn_VAL_133_S1AP_id_E_RABModifyListBearerModRes = 31; +static const long asn_VAL_133_S1AP_ignore = 1; +static const long asn_VAL_133_S1AP_optional = 0; +static const long asn_VAL_134_S1AP_id_E_RABFailedToModifyList = 32; +static const long asn_VAL_134_S1AP_ignore = 1; +static const long asn_VAL_134_S1AP_optional = 0; +static const long asn_VAL_135_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_135_S1AP_ignore = 1; +static const long asn_VAL_135_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABModifyResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_131_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_131_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_131_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_132_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_132_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_132_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_133_S1AP_id_E_RABModifyListBearerModRes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_133_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABModifyListBearerModRes }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_133_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_134_S1AP_id_E_RABFailedToModifyList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_134_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_134_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_135_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_135_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_135_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABModifyResponseIEs_1[] = { + { 5, 4, asn_IOS_S1AP_E_RABModifyResponseIEs_1_rows } +}; +static const long asn_VAL_137_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_137_S1AP_reject = 0; +static const long asn_VAL_137_S1AP_mandatory = 2; +static const long asn_VAL_138_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_138_S1AP_reject = 0; +static const long asn_VAL_138_S1AP_mandatory = 2; +static const long asn_VAL_139_S1AP_id_uEaggregateMaximumBitrate = 66; +static const long asn_VAL_139_S1AP_reject = 0; +static const long asn_VAL_139_S1AP_optional = 0; +static const long asn_VAL_140_S1AP_id_E_RABToBeReleasedList = 33; +static const long asn_VAL_140_S1AP_ignore = 1; +static const long asn_VAL_140_S1AP_mandatory = 2; +static const long asn_VAL_141_S1AP_id_NAS_PDU = 26; +static const long asn_VAL_141_S1AP_ignore = 1; +static const long asn_VAL_141_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABReleaseCommandIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_137_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_137_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_137_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_138_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_138_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_138_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_139_S1AP_id_uEaggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_139_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_139_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_140_S1AP_id_E_RABToBeReleasedList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_140_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_140_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_141_S1AP_id_NAS_PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_141_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_NAS_PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_141_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABReleaseCommandIEs_1[] = { + { 5, 4, asn_IOS_S1AP_E_RABReleaseCommandIEs_1_rows } +}; +static const long asn_VAL_142_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_142_S1AP_ignore = 1; +static const long asn_VAL_142_S1AP_mandatory = 2; +static const long asn_VAL_143_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_143_S1AP_ignore = 1; +static const long asn_VAL_143_S1AP_mandatory = 2; +static const long asn_VAL_144_S1AP_id_E_RABReleaseListBearerRelComp = 69; +static const long asn_VAL_144_S1AP_ignore = 1; +static const long asn_VAL_144_S1AP_optional = 0; +static const long asn_VAL_145_S1AP_id_E_RABFailedToReleaseList = 34; +static const long asn_VAL_145_S1AP_ignore = 1; +static const long asn_VAL_145_S1AP_optional = 0; +static const long asn_VAL_146_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_146_S1AP_ignore = 1; +static const long asn_VAL_146_S1AP_optional = 0; +static const long asn_VAL_147_S1AP_id_UserLocationInformation = 189; +static const long asn_VAL_147_S1AP_ignore = 1; +static const long asn_VAL_147_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABReleaseResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_142_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_142_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_142_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_143_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_143_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_143_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_144_S1AP_id_E_RABReleaseListBearerRelComp }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_144_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABReleaseListBearerRelComp }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_144_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_145_S1AP_id_E_RABFailedToReleaseList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_145_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_145_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_146_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_146_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_146_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_147_S1AP_id_UserLocationInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_147_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UserLocationInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_147_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABReleaseResponseIEs_1[] = { + { 6, 4, asn_IOS_S1AP_E_RABReleaseResponseIEs_1_rows } +}; +static const long asn_VAL_149_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_149_S1AP_reject = 0; +static const long asn_VAL_149_S1AP_mandatory = 2; +static const long asn_VAL_150_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_150_S1AP_reject = 0; +static const long asn_VAL_150_S1AP_mandatory = 2; +static const long asn_VAL_151_S1AP_id_E_RABReleasedList = 110; +static const long asn_VAL_151_S1AP_ignore = 1; +static const long asn_VAL_151_S1AP_mandatory = 2; +static const long asn_VAL_152_S1AP_id_UserLocationInformation = 189; +static const long asn_VAL_152_S1AP_ignore = 1; +static const long asn_VAL_152_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABReleaseIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_149_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_149_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_149_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_150_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_150_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_150_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_151_S1AP_id_E_RABReleasedList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_151_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_151_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_152_S1AP_id_UserLocationInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_152_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UserLocationInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_152_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABReleaseIndicationIEs_1[] = { + { 4, 4, asn_IOS_S1AP_E_RABReleaseIndicationIEs_1_rows } +}; +static const long asn_VAL_153_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_153_S1AP_reject = 0; +static const long asn_VAL_153_S1AP_mandatory = 2; +static const long asn_VAL_154_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_154_S1AP_reject = 0; +static const long asn_VAL_154_S1AP_mandatory = 2; +static const long asn_VAL_155_S1AP_id_uEaggregateMaximumBitrate = 66; +static const long asn_VAL_155_S1AP_reject = 0; +static const long asn_VAL_155_S1AP_mandatory = 2; +static const long asn_VAL_156_S1AP_id_E_RABToBeSetupListCtxtSUReq = 24; +static const long asn_VAL_156_S1AP_reject = 0; +static const long asn_VAL_156_S1AP_mandatory = 2; +static const long asn_VAL_157_S1AP_id_UESecurityCapabilities = 107; +static const long asn_VAL_157_S1AP_reject = 0; +static const long asn_VAL_157_S1AP_mandatory = 2; +static const long asn_VAL_158_S1AP_id_SecurityKey = 73; +static const long asn_VAL_158_S1AP_reject = 0; +static const long asn_VAL_158_S1AP_mandatory = 2; +static const long asn_VAL_159_S1AP_id_TraceActivation = 25; +static const long asn_VAL_159_S1AP_ignore = 1; +static const long asn_VAL_159_S1AP_optional = 0; +static const long asn_VAL_160_S1AP_id_HandoverRestrictionList = 41; +static const long asn_VAL_160_S1AP_ignore = 1; +static const long asn_VAL_160_S1AP_optional = 0; +static const long asn_VAL_161_S1AP_id_UERadioCapability = 74; +static const long asn_VAL_161_S1AP_ignore = 1; +static const long asn_VAL_161_S1AP_optional = 0; +static const long asn_VAL_162_S1AP_id_SubscriberProfileIDforRFP = 106; +static const long asn_VAL_162_S1AP_ignore = 1; +static const long asn_VAL_162_S1AP_optional = 0; +static const long asn_VAL_163_S1AP_id_CSFallbackIndicator = 108; +static const long asn_VAL_163_S1AP_reject = 0; +static const long asn_VAL_163_S1AP_optional = 0; +static const long asn_VAL_164_S1AP_id_SRVCCOperationPossible = 124; +static const long asn_VAL_164_S1AP_ignore = 1; +static const long asn_VAL_164_S1AP_optional = 0; +static const long asn_VAL_165_S1AP_id_CSGMembershipStatus = 146; +static const long asn_VAL_165_S1AP_ignore = 1; +static const long asn_VAL_165_S1AP_optional = 0; +static const long asn_VAL_166_S1AP_id_RegisteredLAI = 159; +static const long asn_VAL_166_S1AP_ignore = 1; +static const long asn_VAL_166_S1AP_optional = 0; +static const long asn_VAL_167_S1AP_id_GUMMEI_ID = 75; +static const long asn_VAL_167_S1AP_ignore = 1; +static const long asn_VAL_167_S1AP_optional = 0; +static const long asn_VAL_168_S1AP_id_MME_UE_S1AP_ID_2 = 158; +static const long asn_VAL_168_S1AP_ignore = 1; +static const long asn_VAL_168_S1AP_optional = 0; +static const long asn_VAL_169_S1AP_id_ManagementBasedMDTAllowed = 165; +static const long asn_VAL_169_S1AP_ignore = 1; +static const long asn_VAL_169_S1AP_optional = 0; +static const long asn_VAL_170_S1AP_id_ManagementBasedMDTPLMNList = 177; +static const long asn_VAL_170_S1AP_ignore = 1; +static const long asn_VAL_170_S1AP_optional = 0; +static const long asn_VAL_171_S1AP_id_AdditionalCSFallbackIndicator = 187; +static const long asn_VAL_171_S1AP_ignore = 1; +static const long asn_VAL_171_S1AP_conditional = 1; +static const long asn_VAL_172_S1AP_id_Masked_IMEISV = 192; +static const long asn_VAL_172_S1AP_ignore = 1; +static const long asn_VAL_172_S1AP_optional = 0; +static const long asn_VAL_173_S1AP_id_ExpectedUEBehaviour = 196; +static const long asn_VAL_173_S1AP_ignore = 1; +static const long asn_VAL_173_S1AP_optional = 0; +static const long asn_VAL_174_S1AP_id_ProSeAuthorized = 195; +static const long asn_VAL_174_S1AP_ignore = 1; +static const long asn_VAL_174_S1AP_optional = 0; +static const long asn_VAL_175_S1AP_id_UEUserPlaneCIoTSupportIndicator = 241; +static const long asn_VAL_175_S1AP_ignore = 1; +static const long asn_VAL_175_S1AP_optional = 0; +static const long asn_VAL_176_S1AP_id_V2XServicesAuthorized = 240; +static const long asn_VAL_176_S1AP_ignore = 1; +static const long asn_VAL_176_S1AP_optional = 0; +static const long asn_VAL_177_S1AP_id_UESidelinkAggregateMaximumBitrate = 248; +static const long asn_VAL_177_S1AP_ignore = 1; +static const long asn_VAL_177_S1AP_optional = 0; +static const long asn_VAL_178_S1AP_id_EnhancedCoverageRestricted = 251; +static const long asn_VAL_178_S1AP_ignore = 1; +static const long asn_VAL_178_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_InitialContextSetupRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_153_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_153_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_153_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_154_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_154_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_154_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_155_S1AP_id_uEaggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_155_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_155_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_156_S1AP_id_E_RABToBeSetupListCtxtSUReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_156_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_156_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_157_S1AP_id_UESecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_157_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_157_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_158_S1AP_id_SecurityKey }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_158_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SecurityKey }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_158_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_159_S1AP_id_TraceActivation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_159_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TraceActivation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_159_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_160_S1AP_id_HandoverRestrictionList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_160_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_HandoverRestrictionList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_160_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_161_S1AP_id_UERadioCapability }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_161_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UERadioCapability }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_161_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_162_S1AP_id_SubscriberProfileIDforRFP }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_162_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SubscriberProfileIDforRFP }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_162_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_163_S1AP_id_CSFallbackIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_163_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSFallbackIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_163_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_164_S1AP_id_SRVCCOperationPossible }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_164_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SRVCCOperationPossible }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_164_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_165_S1AP_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_165_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_165_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_166_S1AP_id_RegisteredLAI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_166_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_LAI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_166_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_167_S1AP_id_GUMMEI_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_167_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_GUMMEI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_167_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_168_S1AP_id_MME_UE_S1AP_ID_2 }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_168_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_168_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_169_S1AP_id_ManagementBasedMDTAllowed }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_169_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ManagementBasedMDTAllowed }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_169_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_170_S1AP_id_ManagementBasedMDTPLMNList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_170_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MDTPLMNList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_170_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_171_S1AP_id_AdditionalCSFallbackIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_171_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_AdditionalCSFallbackIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_171_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_172_S1AP_id_Masked_IMEISV }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_172_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Masked_IMEISV }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_172_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_173_S1AP_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_173_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_173_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_174_S1AP_id_ProSeAuthorized }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_174_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ProSeAuthorized }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_174_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_175_S1AP_id_UEUserPlaneCIoTSupportIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_175_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_175_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_176_S1AP_id_V2XServicesAuthorized }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_176_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_V2XServicesAuthorized }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_176_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_177_S1AP_id_UESidelinkAggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_177_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_177_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_178_S1AP_id_EnhancedCoverageRestricted }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_178_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EnhancedCoverageRestricted }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_178_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_InitialContextSetupRequestIEs_1[] = { + { 26, 4, asn_IOS_S1AP_InitialContextSetupRequestIEs_1_rows } +}; +static const long asn_VAL_180_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_180_S1AP_ignore = 1; +static const long asn_VAL_180_S1AP_mandatory = 2; +static const long asn_VAL_181_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_181_S1AP_ignore = 1; +static const long asn_VAL_181_S1AP_mandatory = 2; +static const long asn_VAL_182_S1AP_id_E_RABSetupListCtxtSURes = 51; +static const long asn_VAL_182_S1AP_ignore = 1; +static const long asn_VAL_182_S1AP_mandatory = 2; +static const long asn_VAL_183_S1AP_id_E_RABFailedToSetupListCtxtSURes = 48; +static const long asn_VAL_183_S1AP_ignore = 1; +static const long asn_VAL_183_S1AP_optional = 0; +static const long asn_VAL_184_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_184_S1AP_ignore = 1; +static const long asn_VAL_184_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_InitialContextSetupResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_180_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_180_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_180_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_181_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_181_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_181_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_182_S1AP_id_E_RABSetupListCtxtSURes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_182_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABSetupListCtxtSURes }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_182_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_183_S1AP_id_E_RABFailedToSetupListCtxtSURes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_183_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_183_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_184_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_184_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_184_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_InitialContextSetupResponseIEs_1[] = { + { 5, 4, asn_IOS_S1AP_InitialContextSetupResponseIEs_1_rows } +}; +static const long asn_VAL_186_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_186_S1AP_ignore = 1; +static const long asn_VAL_186_S1AP_mandatory = 2; +static const long asn_VAL_187_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_187_S1AP_ignore = 1; +static const long asn_VAL_187_S1AP_mandatory = 2; +static const long asn_VAL_188_S1AP_id_Cause = 2; +static const long asn_VAL_188_S1AP_ignore = 1; +static const long asn_VAL_188_S1AP_mandatory = 2; +static const long asn_VAL_189_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_189_S1AP_ignore = 1; +static const long asn_VAL_189_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_InitialContextSetupFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_186_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_186_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_186_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_187_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_187_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_187_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_188_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_188_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_188_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_189_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_189_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_189_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_InitialContextSetupFailureIEs_1[] = { + { 4, 4, asn_IOS_S1AP_InitialContextSetupFailureIEs_1_rows } +}; +static const long asn_VAL_190_S1AP_id_UEIdentityIndexValue = 80; +static const long asn_VAL_190_S1AP_ignore = 1; +static const long asn_VAL_190_S1AP_mandatory = 2; +static const long asn_VAL_191_S1AP_id_UEPagingID = 43; +static const long asn_VAL_191_S1AP_ignore = 1; +static const long asn_VAL_191_S1AP_mandatory = 2; +static const long asn_VAL_192_S1AP_id_pagingDRX = 44; +static const long asn_VAL_192_S1AP_ignore = 1; +static const long asn_VAL_192_S1AP_optional = 0; +static const long asn_VAL_193_S1AP_id_CNDomain = 109; +static const long asn_VAL_193_S1AP_ignore = 1; +static const long asn_VAL_193_S1AP_mandatory = 2; +static const long asn_VAL_194_S1AP_id_TAIList = 46; +static const long asn_VAL_194_S1AP_ignore = 1; +static const long asn_VAL_194_S1AP_mandatory = 2; +static const long asn_VAL_195_S1AP_id_CSG_IdList = 128; +static const long asn_VAL_195_S1AP_ignore = 1; +static const long asn_VAL_195_S1AP_optional = 0; +static const long asn_VAL_196_S1AP_id_PagingPriority = 151; +static const long asn_VAL_196_S1AP_ignore = 1; +static const long asn_VAL_196_S1AP_optional = 0; +static const long asn_VAL_197_S1AP_id_UERadioCapabilityForPaging = 198; +static const long asn_VAL_197_S1AP_ignore = 1; +static const long asn_VAL_197_S1AP_optional = 0; +static const long asn_VAL_198_S1AP_id_AssistanceDataForPaging = 211; +static const long asn_VAL_198_S1AP_ignore = 1; +static const long asn_VAL_198_S1AP_optional = 0; +static const long asn_VAL_199_S1AP_id_Paging_eDRXInformation = 227; +static const long asn_VAL_199_S1AP_ignore = 1; +static const long asn_VAL_199_S1AP_optional = 0; +static const long asn_VAL_200_S1AP_id_extended_UEIdentityIndexValue = 231; +static const long asn_VAL_200_S1AP_ignore = 1; +static const long asn_VAL_200_S1AP_optional = 0; +static const long asn_VAL_201_S1AP_id_NB_IoT_Paging_eDRXInformation = 239; +static const long asn_VAL_201_S1AP_ignore = 1; +static const long asn_VAL_201_S1AP_optional = 0; +static const long asn_VAL_202_S1AP_id_NB_IoT_UEIdentityIndexValue = 244; +static const long asn_VAL_202_S1AP_ignore = 1; +static const long asn_VAL_202_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_PagingIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_190_S1AP_id_UEIdentityIndexValue }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_190_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEIdentityIndexValue }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_190_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_191_S1AP_id_UEPagingID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_191_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEPagingID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_191_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_192_S1AP_id_pagingDRX }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_192_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_PagingDRX }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_192_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_193_S1AP_id_CNDomain }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_193_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CNDomain }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_193_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_194_S1AP_id_TAIList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_194_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TAIList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_194_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_195_S1AP_id_CSG_IdList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_195_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSG_IdList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_195_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_196_S1AP_id_PagingPriority }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_196_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_PagingPriority }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_196_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_197_S1AP_id_UERadioCapabilityForPaging }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_197_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UERadioCapabilityForPaging }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_197_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_198_S1AP_id_AssistanceDataForPaging }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_198_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_AssistanceDataForPaging }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_198_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_199_S1AP_id_Paging_eDRXInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_199_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Paging_eDRXInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_199_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_200_S1AP_id_extended_UEIdentityIndexValue }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_200_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Extended_UEIdentityIndexValue }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_200_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_201_S1AP_id_NB_IoT_Paging_eDRXInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_201_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_201_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_202_S1AP_id_NB_IoT_UEIdentityIndexValue }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_202_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_202_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_PagingIEs_1[] = { + { 13, 4, asn_IOS_S1AP_PagingIEs_1_rows } +}; +static const long asn_VAL_204_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_204_S1AP_reject = 0; +static const long asn_VAL_204_S1AP_mandatory = 2; +static const long asn_VAL_205_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_205_S1AP_reject = 0; +static const long asn_VAL_205_S1AP_mandatory = 2; +static const long asn_VAL_206_S1AP_id_Cause = 2; +static const long asn_VAL_206_S1AP_ignore = 1; +static const long asn_VAL_206_S1AP_mandatory = 2; +static const long asn_VAL_207_S1AP_id_GWContextReleaseIndication = 164; +static const long asn_VAL_207_S1AP_reject = 0; +static const long asn_VAL_207_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextReleaseRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_204_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_204_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_204_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_205_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_205_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_205_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_206_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_206_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_206_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_207_S1AP_id_GWContextReleaseIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_207_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_GWContextReleaseIndication }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_207_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextReleaseRequest_IEs_1[] = { + { 4, 4, asn_IOS_S1AP_UEContextReleaseRequest_IEs_1_rows } +}; +static const long asn_VAL_208_S1AP_id_UE_S1AP_IDs = 99; +static const long asn_VAL_208_S1AP_reject = 0; +static const long asn_VAL_208_S1AP_mandatory = 2; +static const long asn_VAL_209_S1AP_id_Cause = 2; +static const long asn_VAL_209_S1AP_ignore = 1; +static const long asn_VAL_209_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextReleaseCommand_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_208_S1AP_id_UE_S1AP_IDs }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_208_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UE_S1AP_IDs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_208_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_209_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_209_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_209_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextReleaseCommand_IEs_1[] = { + { 2, 4, asn_IOS_S1AP_UEContextReleaseCommand_IEs_1_rows } +}; +static const long asn_VAL_210_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_210_S1AP_ignore = 1; +static const long asn_VAL_210_S1AP_mandatory = 2; +static const long asn_VAL_211_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_211_S1AP_ignore = 1; +static const long asn_VAL_211_S1AP_mandatory = 2; +static const long asn_VAL_212_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_212_S1AP_ignore = 1; +static const long asn_VAL_212_S1AP_optional = 0; +static const long asn_VAL_213_S1AP_id_UserLocationInformation = 189; +static const long asn_VAL_213_S1AP_ignore = 1; +static const long asn_VAL_213_S1AP_optional = 0; +static const long asn_VAL_214_S1AP_id_InformationOnRecommendedCellsAndENBsForPaging = 213; +static const long asn_VAL_214_S1AP_ignore = 1; +static const long asn_VAL_214_S1AP_optional = 0; +static const long asn_VAL_215_S1AP_id_CellIdentifierAndCELevelForCECapableUEs = 212; +static const long asn_VAL_215_S1AP_ignore = 1; +static const long asn_VAL_215_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextReleaseComplete_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_210_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_210_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_210_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_211_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_211_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_211_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_212_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_212_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_212_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_213_S1AP_id_UserLocationInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_213_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UserLocationInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_213_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_214_S1AP_id_InformationOnRecommendedCellsAndENBsForPaging }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_214_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_214_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_215_S1AP_id_CellIdentifierAndCELevelForCECapableUEs }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_215_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_215_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextReleaseComplete_IEs_1[] = { + { 6, 4, asn_IOS_S1AP_UEContextReleaseComplete_IEs_1_rows } +}; +static const long asn_VAL_216_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_216_S1AP_reject = 0; +static const long asn_VAL_216_S1AP_mandatory = 2; +static const long asn_VAL_217_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_217_S1AP_reject = 0; +static const long asn_VAL_217_S1AP_mandatory = 2; +static const long asn_VAL_218_S1AP_id_SecurityKey = 73; +static const long asn_VAL_218_S1AP_reject = 0; +static const long asn_VAL_218_S1AP_optional = 0; +static const long asn_VAL_219_S1AP_id_SubscriberProfileIDforRFP = 106; +static const long asn_VAL_219_S1AP_ignore = 1; +static const long asn_VAL_219_S1AP_optional = 0; +static const long asn_VAL_220_S1AP_id_uEaggregateMaximumBitrate = 66; +static const long asn_VAL_220_S1AP_ignore = 1; +static const long asn_VAL_220_S1AP_optional = 0; +static const long asn_VAL_221_S1AP_id_CSFallbackIndicator = 108; +static const long asn_VAL_221_S1AP_reject = 0; +static const long asn_VAL_221_S1AP_optional = 0; +static const long asn_VAL_222_S1AP_id_UESecurityCapabilities = 107; +static const long asn_VAL_222_S1AP_reject = 0; +static const long asn_VAL_222_S1AP_optional = 0; +static const long asn_VAL_223_S1AP_id_CSGMembershipStatus = 146; +static const long asn_VAL_223_S1AP_ignore = 1; +static const long asn_VAL_223_S1AP_optional = 0; +static const long asn_VAL_224_S1AP_id_RegisteredLAI = 159; +static const long asn_VAL_224_S1AP_ignore = 1; +static const long asn_VAL_224_S1AP_optional = 0; +static const long asn_VAL_225_S1AP_id_AdditionalCSFallbackIndicator = 187; +static const long asn_VAL_225_S1AP_ignore = 1; +static const long asn_VAL_225_S1AP_conditional = 1; +static const long asn_VAL_226_S1AP_id_ProSeAuthorized = 195; +static const long asn_VAL_226_S1AP_ignore = 1; +static const long asn_VAL_226_S1AP_optional = 0; +static const long asn_VAL_227_S1AP_id_SRVCCOperationPossible = 124; +static const long asn_VAL_227_S1AP_ignore = 1; +static const long asn_VAL_227_S1AP_optional = 0; +static const long asn_VAL_228_S1AP_id_SRVCCOperationNotPossible = 243; +static const long asn_VAL_228_S1AP_ignore = 1; +static const long asn_VAL_228_S1AP_optional = 0; +static const long asn_VAL_229_S1AP_id_V2XServicesAuthorized = 240; +static const long asn_VAL_229_S1AP_ignore = 1; +static const long asn_VAL_229_S1AP_optional = 0; +static const long asn_VAL_230_S1AP_id_UESidelinkAggregateMaximumBitrate = 248; +static const long asn_VAL_230_S1AP_ignore = 1; +static const long asn_VAL_230_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextModificationRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_216_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_216_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_216_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_217_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_217_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_217_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_218_S1AP_id_SecurityKey }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_218_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SecurityKey }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_218_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_219_S1AP_id_SubscriberProfileIDforRFP }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_219_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SubscriberProfileIDforRFP }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_219_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_220_S1AP_id_uEaggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_220_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UEAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_220_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_221_S1AP_id_CSFallbackIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_221_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSFallbackIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_221_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_222_S1AP_id_UESecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_222_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_222_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_223_S1AP_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_223_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_223_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_224_S1AP_id_RegisteredLAI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_224_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_LAI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_224_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_225_S1AP_id_AdditionalCSFallbackIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_225_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_AdditionalCSFallbackIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_225_S1AP_conditional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_226_S1AP_id_ProSeAuthorized }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_226_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ProSeAuthorized }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_226_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_227_S1AP_id_SRVCCOperationPossible }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_227_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SRVCCOperationPossible }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_227_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_228_S1AP_id_SRVCCOperationNotPossible }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_228_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SRVCCOperationNotPossible }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_228_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_229_S1AP_id_V2XServicesAuthorized }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_229_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_V2XServicesAuthorized }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_229_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_230_S1AP_id_UESidelinkAggregateMaximumBitrate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_230_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_230_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextModificationRequestIEs_1[] = { + { 15, 4, asn_IOS_S1AP_UEContextModificationRequestIEs_1_rows } +}; +static const long asn_VAL_231_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_231_S1AP_ignore = 1; +static const long asn_VAL_231_S1AP_mandatory = 2; +static const long asn_VAL_232_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_232_S1AP_ignore = 1; +static const long asn_VAL_232_S1AP_mandatory = 2; +static const long asn_VAL_233_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_233_S1AP_ignore = 1; +static const long asn_VAL_233_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextModificationResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_231_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_231_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_231_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_232_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_232_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_232_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_233_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_233_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_233_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextModificationResponseIEs_1[] = { + { 3, 4, asn_IOS_S1AP_UEContextModificationResponseIEs_1_rows } +}; +static const long asn_VAL_234_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_234_S1AP_ignore = 1; +static const long asn_VAL_234_S1AP_mandatory = 2; +static const long asn_VAL_235_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_235_S1AP_ignore = 1; +static const long asn_VAL_235_S1AP_mandatory = 2; +static const long asn_VAL_236_S1AP_id_Cause = 2; +static const long asn_VAL_236_S1AP_ignore = 1; +static const long asn_VAL_236_S1AP_mandatory = 2; +static const long asn_VAL_237_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_237_S1AP_ignore = 1; +static const long asn_VAL_237_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextModificationFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_234_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_234_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_234_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_235_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_235_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_235_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_236_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_236_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_236_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_237_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_237_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_237_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextModificationFailureIEs_1[] = { + { 4, 4, asn_IOS_S1AP_UEContextModificationFailureIEs_1_rows } +}; +static const long asn_VAL_238_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_238_S1AP_reject = 0; +static const long asn_VAL_238_S1AP_mandatory = 2; +static const long asn_VAL_239_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_239_S1AP_reject = 0; +static const long asn_VAL_239_S1AP_mandatory = 2; +static const long asn_VAL_240_S1AP_id_UERadioCapability = 74; +static const long asn_VAL_240_S1AP_ignore = 1; +static const long asn_VAL_240_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UERadioCapabilityMatchRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_238_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_238_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_238_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_239_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_239_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_239_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_240_S1AP_id_UERadioCapability }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_240_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UERadioCapability }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_240_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UERadioCapabilityMatchRequestIEs_1[] = { + { 3, 4, asn_IOS_S1AP_UERadioCapabilityMatchRequestIEs_1_rows } +}; +static const long asn_VAL_241_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_241_S1AP_ignore = 1; +static const long asn_VAL_241_S1AP_mandatory = 2; +static const long asn_VAL_242_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_242_S1AP_ignore = 1; +static const long asn_VAL_242_S1AP_mandatory = 2; +static const long asn_VAL_243_S1AP_id_VoiceSupportMatchIndicator = 169; +static const long asn_VAL_243_S1AP_reject = 0; +static const long asn_VAL_243_S1AP_mandatory = 2; +static const long asn_VAL_244_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_244_S1AP_ignore = 1; +static const long asn_VAL_244_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UERadioCapabilityMatchResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_241_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_241_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_241_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_242_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_242_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_242_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_243_S1AP_id_VoiceSupportMatchIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_243_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_VoiceSupportMatchIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_243_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_244_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_244_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_244_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UERadioCapabilityMatchResponseIEs_1[] = { + { 4, 4, asn_IOS_S1AP_UERadioCapabilityMatchResponseIEs_1_rows } +}; +static const long asn_VAL_245_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_245_S1AP_reject = 0; +static const long asn_VAL_245_S1AP_mandatory = 2; +static const long asn_VAL_246_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_246_S1AP_reject = 0; +static const long asn_VAL_246_S1AP_mandatory = 2; +static const long asn_VAL_247_S1AP_id_NAS_PDU = 26; +static const long asn_VAL_247_S1AP_reject = 0; +static const long asn_VAL_247_S1AP_mandatory = 2; +static const long asn_VAL_248_S1AP_id_HandoverRestrictionList = 41; +static const long asn_VAL_248_S1AP_ignore = 1; +static const long asn_VAL_248_S1AP_optional = 0; +static const long asn_VAL_249_S1AP_id_SubscriberProfileIDforRFP = 106; +static const long asn_VAL_249_S1AP_ignore = 1; +static const long asn_VAL_249_S1AP_optional = 0; +static const long asn_VAL_250_S1AP_id_SRVCCOperationPossible = 124; +static const long asn_VAL_250_S1AP_ignore = 1; +static const long asn_VAL_250_S1AP_optional = 0; +static const long asn_VAL_251_S1AP_id_UERadioCapability = 74; +static const long asn_VAL_251_S1AP_ignore = 1; +static const long asn_VAL_251_S1AP_optional = 0; +static const long asn_VAL_252_S1AP_id_DLNASPDUDeliveryAckRequest = 249; +static const long asn_VAL_252_S1AP_ignore = 1; +static const long asn_VAL_252_S1AP_optional = 0; +static const long asn_VAL_253_S1AP_id_EnhancedCoverageRestricted = 251; +static const long asn_VAL_253_S1AP_ignore = 1; +static const long asn_VAL_253_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_DownlinkNASTransport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_245_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_245_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_245_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_246_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_246_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_246_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_247_S1AP_id_NAS_PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_247_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_NAS_PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_247_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_248_S1AP_id_HandoverRestrictionList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_248_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_HandoverRestrictionList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_248_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_249_S1AP_id_SubscriberProfileIDforRFP }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_249_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SubscriberProfileIDforRFP }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_249_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_250_S1AP_id_SRVCCOperationPossible }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_250_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SRVCCOperationPossible }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_250_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_251_S1AP_id_UERadioCapability }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_251_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UERadioCapability }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_251_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_252_S1AP_id_DLNASPDUDeliveryAckRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_252_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_DLNASPDUDeliveryAckRequest }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_252_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_253_S1AP_id_EnhancedCoverageRestricted }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_253_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EnhancedCoverageRestricted }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_253_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_DownlinkNASTransport_IEs_1[] = { + { 9, 4, asn_IOS_S1AP_DownlinkNASTransport_IEs_1_rows } +}; +static const long asn_VAL_254_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_254_S1AP_reject = 0; +static const long asn_VAL_254_S1AP_mandatory = 2; +static const long asn_VAL_255_S1AP_id_NAS_PDU = 26; +static const long asn_VAL_255_S1AP_reject = 0; +static const long asn_VAL_255_S1AP_mandatory = 2; +static const long asn_VAL_256_S1AP_id_TAI = 67; +static const long asn_VAL_256_S1AP_reject = 0; +static const long asn_VAL_256_S1AP_mandatory = 2; +static const long asn_VAL_257_S1AP_id_EUTRAN_CGI = 100; +static const long asn_VAL_257_S1AP_ignore = 1; +static const long asn_VAL_257_S1AP_mandatory = 2; +static const long asn_VAL_258_S1AP_id_RRC_Establishment_Cause = 134; +static const long asn_VAL_258_S1AP_ignore = 1; +static const long asn_VAL_258_S1AP_mandatory = 2; +static const long asn_VAL_259_S1AP_id_S_TMSI = 96; +static const long asn_VAL_259_S1AP_reject = 0; +static const long asn_VAL_259_S1AP_optional = 0; +static const long asn_VAL_260_S1AP_id_CSG_Id = 127; +static const long asn_VAL_260_S1AP_reject = 0; +static const long asn_VAL_260_S1AP_optional = 0; +static const long asn_VAL_261_S1AP_id_GUMMEI_ID = 75; +static const long asn_VAL_261_S1AP_reject = 0; +static const long asn_VAL_261_S1AP_optional = 0; +static const long asn_VAL_262_S1AP_id_CellAccessMode = 145; +static const long asn_VAL_262_S1AP_reject = 0; +static const long asn_VAL_262_S1AP_optional = 0; +static const long asn_VAL_263_S1AP_id_GW_TransportLayerAddress = 155; +static const long asn_VAL_263_S1AP_ignore = 1; +static const long asn_VAL_263_S1AP_optional = 0; +static const long asn_VAL_264_S1AP_id_RelayNode_Indicator = 160; +static const long asn_VAL_264_S1AP_reject = 0; +static const long asn_VAL_264_S1AP_optional = 0; +static const long asn_VAL_265_S1AP_id_GUMMEIType = 170; +static const long asn_VAL_265_S1AP_ignore = 1; +static const long asn_VAL_265_S1AP_optional = 0; +static const long asn_VAL_266_S1AP_id_Tunnel_Information_for_BBF = 176; +static const long asn_VAL_266_S1AP_ignore = 1; +static const long asn_VAL_266_S1AP_optional = 0; +static const long asn_VAL_267_S1AP_id_SIPTO_L_GW_TransportLayerAddress = 184; +static const long asn_VAL_267_S1AP_ignore = 1; +static const long asn_VAL_267_S1AP_optional = 0; +static const long asn_VAL_268_S1AP_id_LHN_ID = 186; +static const long asn_VAL_268_S1AP_ignore = 1; +static const long asn_VAL_268_S1AP_optional = 0; +static const long asn_VAL_269_S1AP_id_MME_Group_ID = 223; +static const long asn_VAL_269_S1AP_ignore = 1; +static const long asn_VAL_269_S1AP_optional = 0; +static const long asn_VAL_270_S1AP_id_UE_Usage_Type = 230; +static const long asn_VAL_270_S1AP_ignore = 1; +static const long asn_VAL_270_S1AP_optional = 0; +static const long asn_VAL_271_S1AP_id_CE_mode_B_SupportIndicator = 242; +static const long asn_VAL_271_S1AP_ignore = 1; +static const long asn_VAL_271_S1AP_optional = 0; +static const long asn_VAL_272_S1AP_id_DCN_ID = 246; +static const long asn_VAL_272_S1AP_ignore = 1; +static const long asn_VAL_272_S1AP_optional = 0; +static const long asn_VAL_273_S1AP_id_Coverage_Level = 250; +static const long asn_VAL_273_S1AP_ignore = 1; +static const long asn_VAL_273_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_InitialUEMessage_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_254_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_254_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_254_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_255_S1AP_id_NAS_PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_255_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_NAS_PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_255_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_256_S1AP_id_TAI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_256_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_TAI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_256_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_257_S1AP_id_EUTRAN_CGI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_257_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EUTRAN_CGI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_257_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_258_S1AP_id_RRC_Establishment_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_258_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_RRC_Establishment_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_258_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_259_S1AP_id_S_TMSI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_259_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_S_TMSI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_259_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_260_S1AP_id_CSG_Id }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_260_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSG_Id }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_260_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_261_S1AP_id_GUMMEI_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_261_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_GUMMEI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_261_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_262_S1AP_id_CellAccessMode }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_262_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CellAccessMode }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_262_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_263_S1AP_id_GW_TransportLayerAddress }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_263_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TransportLayerAddress }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_263_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_264_S1AP_id_RelayNode_Indicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_264_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_RelayNode_Indicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_264_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_265_S1AP_id_GUMMEIType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_265_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_GUMMEIType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_265_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_266_S1AP_id_Tunnel_Information_for_BBF }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_266_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TunnelInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_266_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_267_S1AP_id_SIPTO_L_GW_TransportLayerAddress }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_267_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TransportLayerAddress }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_267_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_268_S1AP_id_LHN_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_268_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_LHN_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_268_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_269_S1AP_id_MME_Group_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_269_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_Group_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_269_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_270_S1AP_id_UE_Usage_Type }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_270_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UE_Usage_Type }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_270_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_271_S1AP_id_CE_mode_B_SupportIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_271_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CE_mode_B_SupportIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_271_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_272_S1AP_id_DCN_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_272_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_DCN_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_272_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_273_S1AP_id_Coverage_Level }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_273_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Coverage_Level }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_273_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_InitialUEMessage_IEs_1[] = { + { 20, 4, asn_IOS_S1AP_InitialUEMessage_IEs_1_rows } +}; +static const long asn_VAL_274_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_274_S1AP_reject = 0; +static const long asn_VAL_274_S1AP_mandatory = 2; +static const long asn_VAL_275_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_275_S1AP_reject = 0; +static const long asn_VAL_275_S1AP_mandatory = 2; +static const long asn_VAL_276_S1AP_id_NAS_PDU = 26; +static const long asn_VAL_276_S1AP_reject = 0; +static const long asn_VAL_276_S1AP_mandatory = 2; +static const long asn_VAL_277_S1AP_id_EUTRAN_CGI = 100; +static const long asn_VAL_277_S1AP_ignore = 1; +static const long asn_VAL_277_S1AP_mandatory = 2; +static const long asn_VAL_278_S1AP_id_TAI = 67; +static const long asn_VAL_278_S1AP_ignore = 1; +static const long asn_VAL_278_S1AP_mandatory = 2; +static const long asn_VAL_279_S1AP_id_GW_TransportLayerAddress = 155; +static const long asn_VAL_279_S1AP_ignore = 1; +static const long asn_VAL_279_S1AP_optional = 0; +static const long asn_VAL_280_S1AP_id_SIPTO_L_GW_TransportLayerAddress = 184; +static const long asn_VAL_280_S1AP_ignore = 1; +static const long asn_VAL_280_S1AP_optional = 0; +static const long asn_VAL_281_S1AP_id_LHN_ID = 186; +static const long asn_VAL_281_S1AP_ignore = 1; +static const long asn_VAL_281_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UplinkNASTransport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_274_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_274_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_274_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_275_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_275_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_275_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_276_S1AP_id_NAS_PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_276_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_NAS_PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_276_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_277_S1AP_id_EUTRAN_CGI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_277_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EUTRAN_CGI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_277_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_278_S1AP_id_TAI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_278_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TAI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_278_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_279_S1AP_id_GW_TransportLayerAddress }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_279_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TransportLayerAddress }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_279_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_280_S1AP_id_SIPTO_L_GW_TransportLayerAddress }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_280_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TransportLayerAddress }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_280_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_281_S1AP_id_LHN_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_281_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_LHN_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_281_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UplinkNASTransport_IEs_1[] = { + { 8, 4, asn_IOS_S1AP_UplinkNASTransport_IEs_1_rows } +}; +static const long asn_VAL_282_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_282_S1AP_reject = 0; +static const long asn_VAL_282_S1AP_mandatory = 2; +static const long asn_VAL_283_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_283_S1AP_reject = 0; +static const long asn_VAL_283_S1AP_mandatory = 2; +static const long asn_VAL_284_S1AP_id_NAS_PDU = 26; +static const long asn_VAL_284_S1AP_ignore = 1; +static const long asn_VAL_284_S1AP_mandatory = 2; +static const long asn_VAL_285_S1AP_id_Cause = 2; +static const long asn_VAL_285_S1AP_ignore = 1; +static const long asn_VAL_285_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_NASNonDeliveryIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_282_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_282_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_282_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_283_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_283_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_283_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_284_S1AP_id_NAS_PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_284_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_NAS_PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_284_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_285_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_285_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_285_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_NASNonDeliveryIndication_IEs_1[] = { + { 4, 4, asn_IOS_S1AP_NASNonDeliveryIndication_IEs_1_rows } +}; +static const long asn_VAL_286_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_286_S1AP_reject = 0; +static const long asn_VAL_286_S1AP_mandatory = 2; +static const long asn_VAL_287_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_287_S1AP_ignore = 1; +static const long asn_VAL_287_S1AP_optional = 0; +static const long asn_VAL_288_S1AP_id_S1_Message = 225; +static const long asn_VAL_288_S1AP_reject = 0; +static const long asn_VAL_288_S1AP_mandatory = 2; +static const long asn_VAL_289_S1AP_id_MME_Group_ID = 223; +static const long asn_VAL_289_S1AP_reject = 0; +static const long asn_VAL_289_S1AP_mandatory = 2; +static const long asn_VAL_290_S1AP_id_Additional_GUTI = 224; +static const long asn_VAL_290_S1AP_ignore = 1; +static const long asn_VAL_290_S1AP_optional = 0; +static const long asn_VAL_291_S1AP_id_UE_Usage_Type = 230; +static const long asn_VAL_291_S1AP_ignore = 1; +static const long asn_VAL_291_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_RerouteNASRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_286_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_286_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_286_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_287_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_287_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_287_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_288_S1AP_id_S1_Message }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_288_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_OCTET_STRING }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_288_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_289_S1AP_id_MME_Group_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_289_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_Group_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_289_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_290_S1AP_id_Additional_GUTI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_290_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Additional_GUTI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_290_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_291_S1AP_id_UE_Usage_Type }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_291_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UE_Usage_Type }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_291_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_RerouteNASRequest_IEs_1[] = { + { 6, 4, asn_IOS_S1AP_RerouteNASRequest_IEs_1_rows } +}; +static const long asn_VAL_292_S1AP_id_Cause = 2; +static const long asn_VAL_292_S1AP_ignore = 1; +static const long asn_VAL_292_S1AP_mandatory = 2; +static const long asn_VAL_293_S1AP_id_ResetType = 92; +static const long asn_VAL_293_S1AP_reject = 0; +static const long asn_VAL_293_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_ResetIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_292_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_292_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_292_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_293_S1AP_id_ResetType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_293_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ResetType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_293_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ResetIEs_1[] = { + { 2, 4, asn_IOS_S1AP_ResetIEs_1_rows } +}; +static const long asn_VAL_295_S1AP_id_UE_associatedLogicalS1_ConnectionListResAck = 93; +static const long asn_VAL_295_S1AP_ignore = 1; +static const long asn_VAL_295_S1AP_optional = 0; +static const long asn_VAL_296_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_296_S1AP_ignore = 1; +static const long asn_VAL_296_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_ResetAcknowledgeIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_295_S1AP_id_UE_associatedLogicalS1_ConnectionListResAck }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_295_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_295_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_296_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_296_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_296_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ResetAcknowledgeIEs_1[] = { + { 2, 4, asn_IOS_S1AP_ResetAcknowledgeIEs_1_rows } +}; +static const long asn_VAL_298_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_298_S1AP_ignore = 1; +static const long asn_VAL_298_S1AP_optional = 0; +static const long asn_VAL_299_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_299_S1AP_ignore = 1; +static const long asn_VAL_299_S1AP_optional = 0; +static const long asn_VAL_300_S1AP_id_Cause = 2; +static const long asn_VAL_300_S1AP_ignore = 1; +static const long asn_VAL_300_S1AP_optional = 0; +static const long asn_VAL_301_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_301_S1AP_ignore = 1; +static const long asn_VAL_301_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_ErrorIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_298_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_298_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_298_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_299_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_299_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_299_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_300_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_300_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_300_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_301_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_301_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_301_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ErrorIndicationIEs_1[] = { + { 4, 4, asn_IOS_S1AP_ErrorIndicationIEs_1_rows } +}; +static const long asn_VAL_302_S1AP_id_Global_ENB_ID = 59; +static const long asn_VAL_302_S1AP_reject = 0; +static const long asn_VAL_302_S1AP_mandatory = 2; +static const long asn_VAL_303_S1AP_id_eNBname = 60; +static const long asn_VAL_303_S1AP_ignore = 1; +static const long asn_VAL_303_S1AP_optional = 0; +static const long asn_VAL_304_S1AP_id_SupportedTAs = 64; +static const long asn_VAL_304_S1AP_reject = 0; +static const long asn_VAL_304_S1AP_mandatory = 2; +static const long asn_VAL_305_S1AP_id_DefaultPagingDRX = 137; +static const long asn_VAL_305_S1AP_ignore = 1; +static const long asn_VAL_305_S1AP_mandatory = 2; +static const long asn_VAL_306_S1AP_id_CSG_IdList = 128; +static const long asn_VAL_306_S1AP_reject = 0; +static const long asn_VAL_306_S1AP_optional = 0; +static const long asn_VAL_307_S1AP_id_UE_RetentionInformation = 228; +static const long asn_VAL_307_S1AP_ignore = 1; +static const long asn_VAL_307_S1AP_optional = 0; +static const long asn_VAL_308_S1AP_id_NB_IoT_DefaultPagingDRX = 234; +static const long asn_VAL_308_S1AP_ignore = 1; +static const long asn_VAL_308_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_S1SetupRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_302_S1AP_id_Global_ENB_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_302_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Global_ENB_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_302_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_303_S1AP_id_eNBname }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_303_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENBname }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_303_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_304_S1AP_id_SupportedTAs }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_304_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SupportedTAs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_304_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_305_S1AP_id_DefaultPagingDRX }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_305_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_PagingDRX }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_305_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_306_S1AP_id_CSG_IdList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_306_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSG_IdList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_306_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_307_S1AP_id_UE_RetentionInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_307_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UE_RetentionInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_307_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_308_S1AP_id_NB_IoT_DefaultPagingDRX }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_308_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_NB_IoT_DefaultPagingDRX }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_308_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_S1SetupRequestIEs_1[] = { + { 7, 4, asn_IOS_S1AP_S1SetupRequestIEs_1_rows } +}; +static const long asn_VAL_309_S1AP_id_MMEname = 61; +static const long asn_VAL_309_S1AP_ignore = 1; +static const long asn_VAL_309_S1AP_optional = 0; +static const long asn_VAL_310_S1AP_id_ServedGUMMEIs = 105; +static const long asn_VAL_310_S1AP_reject = 0; +static const long asn_VAL_310_S1AP_mandatory = 2; +static const long asn_VAL_311_S1AP_id_RelativeMMECapacity = 87; +static const long asn_VAL_311_S1AP_ignore = 1; +static const long asn_VAL_311_S1AP_mandatory = 2; +static const long asn_VAL_312_S1AP_id_MMERelaySupportIndicator = 163; +static const long asn_VAL_312_S1AP_ignore = 1; +static const long asn_VAL_312_S1AP_optional = 0; +static const long asn_VAL_313_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_313_S1AP_ignore = 1; +static const long asn_VAL_313_S1AP_optional = 0; +static const long asn_VAL_314_S1AP_id_UE_RetentionInformation = 228; +static const long asn_VAL_314_S1AP_ignore = 1; +static const long asn_VAL_314_S1AP_optional = 0; +static const long asn_VAL_315_S1AP_id_ServedDCNs = 247; +static const long asn_VAL_315_S1AP_ignore = 1; +static const long asn_VAL_315_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_S1SetupResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_309_S1AP_id_MMEname }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_309_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MMEname }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_309_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_310_S1AP_id_ServedGUMMEIs }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_310_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ServedGUMMEIs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_310_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_311_S1AP_id_RelativeMMECapacity }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_311_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_RelativeMMECapacity }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_311_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_312_S1AP_id_MMERelaySupportIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_312_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MMERelaySupportIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_312_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_313_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_313_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_313_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_314_S1AP_id_UE_RetentionInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_314_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UE_RetentionInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_314_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_315_S1AP_id_ServedDCNs }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_315_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ServedDCNs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_315_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_S1SetupResponseIEs_1[] = { + { 7, 4, asn_IOS_S1AP_S1SetupResponseIEs_1_rows } +}; +static const long asn_VAL_316_S1AP_id_Cause = 2; +static const long asn_VAL_316_S1AP_ignore = 1; +static const long asn_VAL_316_S1AP_mandatory = 2; +static const long asn_VAL_317_S1AP_id_TimeToWait = 65; +static const long asn_VAL_317_S1AP_ignore = 1; +static const long asn_VAL_317_S1AP_optional = 0; +static const long asn_VAL_318_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_318_S1AP_ignore = 1; +static const long asn_VAL_318_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_S1SetupFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_316_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_316_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_316_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_317_S1AP_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_317_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_317_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_318_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_318_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_318_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_S1SetupFailureIEs_1[] = { + { 3, 4, asn_IOS_S1AP_S1SetupFailureIEs_1_rows } +}; +static const long asn_VAL_319_S1AP_id_eNBname = 60; +static const long asn_VAL_319_S1AP_ignore = 1; +static const long asn_VAL_319_S1AP_optional = 0; +static const long asn_VAL_320_S1AP_id_SupportedTAs = 64; +static const long asn_VAL_320_S1AP_reject = 0; +static const long asn_VAL_320_S1AP_optional = 0; +static const long asn_VAL_321_S1AP_id_CSG_IdList = 128; +static const long asn_VAL_321_S1AP_reject = 0; +static const long asn_VAL_321_S1AP_optional = 0; +static const long asn_VAL_322_S1AP_id_DefaultPagingDRX = 137; +static const long asn_VAL_322_S1AP_ignore = 1; +static const long asn_VAL_322_S1AP_optional = 0; +static const long asn_VAL_323_S1AP_id_NB_IoT_DefaultPagingDRX = 234; +static const long asn_VAL_323_S1AP_ignore = 1; +static const long asn_VAL_323_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_ENBConfigurationUpdateIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_319_S1AP_id_eNBname }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_319_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENBname }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_319_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_320_S1AP_id_SupportedTAs }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_320_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SupportedTAs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_320_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_321_S1AP_id_CSG_IdList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_321_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSG_IdList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_321_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_322_S1AP_id_DefaultPagingDRX }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_322_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_PagingDRX }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_322_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_323_S1AP_id_NB_IoT_DefaultPagingDRX }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_323_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_NB_IoT_DefaultPagingDRX }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_323_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ENBConfigurationUpdateIEs_1[] = { + { 5, 4, asn_IOS_S1AP_ENBConfigurationUpdateIEs_1_rows } +}; +static const long asn_VAL_324_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_324_S1AP_ignore = 1; +static const long asn_VAL_324_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_ENBConfigurationUpdateAcknowledgeIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_324_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_324_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_324_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ENBConfigurationUpdateAcknowledgeIEs_1[] = { + { 1, 4, asn_IOS_S1AP_ENBConfigurationUpdateAcknowledgeIEs_1_rows } +}; +static const long asn_VAL_325_S1AP_id_Cause = 2; +static const long asn_VAL_325_S1AP_ignore = 1; +static const long asn_VAL_325_S1AP_mandatory = 2; +static const long asn_VAL_326_S1AP_id_TimeToWait = 65; +static const long asn_VAL_326_S1AP_ignore = 1; +static const long asn_VAL_326_S1AP_optional = 0; +static const long asn_VAL_327_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_327_S1AP_ignore = 1; +static const long asn_VAL_327_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_ENBConfigurationUpdateFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_325_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_325_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_325_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_326_S1AP_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_326_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_326_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_327_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_327_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_327_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ENBConfigurationUpdateFailureIEs_1[] = { + { 3, 4, asn_IOS_S1AP_ENBConfigurationUpdateFailureIEs_1_rows } +}; +static const long asn_VAL_328_S1AP_id_MMEname = 61; +static const long asn_VAL_328_S1AP_ignore = 1; +static const long asn_VAL_328_S1AP_optional = 0; +static const long asn_VAL_329_S1AP_id_ServedGUMMEIs = 105; +static const long asn_VAL_329_S1AP_reject = 0; +static const long asn_VAL_329_S1AP_optional = 0; +static const long asn_VAL_330_S1AP_id_RelativeMMECapacity = 87; +static const long asn_VAL_330_S1AP_reject = 0; +static const long asn_VAL_330_S1AP_optional = 0; +static const long asn_VAL_331_S1AP_id_ServedDCNs = 247; +static const long asn_VAL_331_S1AP_ignore = 1; +static const long asn_VAL_331_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_MMEConfigurationUpdateIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_328_S1AP_id_MMEname }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_328_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MMEname }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_328_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_329_S1AP_id_ServedGUMMEIs }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_329_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ServedGUMMEIs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_329_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_330_S1AP_id_RelativeMMECapacity }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_330_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_RelativeMMECapacity }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_330_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_331_S1AP_id_ServedDCNs }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_331_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ServedDCNs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_331_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_MMEConfigurationUpdateIEs_1[] = { + { 4, 4, asn_IOS_S1AP_MMEConfigurationUpdateIEs_1_rows } +}; +static const long asn_VAL_332_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_332_S1AP_ignore = 1; +static const long asn_VAL_332_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_MMEConfigurationUpdateAcknowledgeIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_332_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_332_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_332_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_MMEConfigurationUpdateAcknowledgeIEs_1[] = { + { 1, 4, asn_IOS_S1AP_MMEConfigurationUpdateAcknowledgeIEs_1_rows } +}; +static const long asn_VAL_333_S1AP_id_Cause = 2; +static const long asn_VAL_333_S1AP_ignore = 1; +static const long asn_VAL_333_S1AP_mandatory = 2; +static const long asn_VAL_334_S1AP_id_TimeToWait = 65; +static const long asn_VAL_334_S1AP_ignore = 1; +static const long asn_VAL_334_S1AP_optional = 0; +static const long asn_VAL_335_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_335_S1AP_ignore = 1; +static const long asn_VAL_335_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_MMEConfigurationUpdateFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_333_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_333_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_333_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_334_S1AP_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_334_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_334_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_335_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_335_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_335_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_MMEConfigurationUpdateFailureIEs_1[] = { + { 3, 4, asn_IOS_S1AP_MMEConfigurationUpdateFailureIEs_1_rows } +}; +static const long asn_VAL_336_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_336_S1AP_reject = 0; +static const long asn_VAL_336_S1AP_mandatory = 2; +static const long asn_VAL_337_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_337_S1AP_reject = 0; +static const long asn_VAL_337_S1AP_mandatory = 2; +static const long asn_VAL_338_S1AP_id_E_RABSubjecttoDataForwardingList = 12; +static const long asn_VAL_338_S1AP_ignore = 1; +static const long asn_VAL_338_S1AP_optional = 0; +static const long asn_VAL_339_S1AP_id_cdma2000HOStatus = 83; +static const long asn_VAL_339_S1AP_ignore = 1; +static const long asn_VAL_339_S1AP_optional = 0; +static const long asn_VAL_340_S1AP_id_cdma2000RATType = 71; +static const long asn_VAL_340_S1AP_reject = 0; +static const long asn_VAL_340_S1AP_mandatory = 2; +static const long asn_VAL_341_S1AP_id_cdma2000PDU = 70; +static const long asn_VAL_341_S1AP_reject = 0; +static const long asn_VAL_341_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_DownlinkS1cdma2000tunnellingIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_336_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_336_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_336_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_337_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_337_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_337_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_338_S1AP_id_E_RABSubjecttoDataForwardingList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_338_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABSubjecttoDataForwardingList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_338_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_339_S1AP_id_cdma2000HOStatus }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_339_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cdma2000HOStatus }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_339_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_340_S1AP_id_cdma2000RATType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_340_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cdma2000RATType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_340_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_341_S1AP_id_cdma2000PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_341_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cdma2000PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_341_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_DownlinkS1cdma2000tunnellingIEs_1[] = { + { 6, 4, asn_IOS_S1AP_DownlinkS1cdma2000tunnellingIEs_1_rows } +}; +static const long asn_VAL_342_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_342_S1AP_reject = 0; +static const long asn_VAL_342_S1AP_mandatory = 2; +static const long asn_VAL_343_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_343_S1AP_reject = 0; +static const long asn_VAL_343_S1AP_mandatory = 2; +static const long asn_VAL_344_S1AP_id_cdma2000RATType = 71; +static const long asn_VAL_344_S1AP_reject = 0; +static const long asn_VAL_344_S1AP_mandatory = 2; +static const long asn_VAL_345_S1AP_id_cdma2000SectorID = 72; +static const long asn_VAL_345_S1AP_reject = 0; +static const long asn_VAL_345_S1AP_mandatory = 2; +static const long asn_VAL_346_S1AP_id_cdma2000HORequiredIndication = 84; +static const long asn_VAL_346_S1AP_ignore = 1; +static const long asn_VAL_346_S1AP_optional = 0; +static const long asn_VAL_347_S1AP_id_cdma2000OneXSRVCCInfo = 102; +static const long asn_VAL_347_S1AP_reject = 0; +static const long asn_VAL_347_S1AP_optional = 0; +static const long asn_VAL_348_S1AP_id_cdma2000OneXRAND = 97; +static const long asn_VAL_348_S1AP_reject = 0; +static const long asn_VAL_348_S1AP_optional = 0; +static const long asn_VAL_349_S1AP_id_cdma2000PDU = 70; +static const long asn_VAL_349_S1AP_reject = 0; +static const long asn_VAL_349_S1AP_mandatory = 2; +static const long asn_VAL_350_S1AP_id_EUTRANRoundTripDelayEstimationInfo = 140; +static const long asn_VAL_350_S1AP_ignore = 1; +static const long asn_VAL_350_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UplinkS1cdma2000tunnellingIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_342_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_342_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_342_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_343_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_343_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_343_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_344_S1AP_id_cdma2000RATType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_344_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cdma2000RATType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_344_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_345_S1AP_id_cdma2000SectorID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_345_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cdma2000SectorID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_345_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_346_S1AP_id_cdma2000HORequiredIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_346_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cdma2000HORequiredIndication }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_346_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_347_S1AP_id_cdma2000OneXSRVCCInfo }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_347_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cdma2000OneXSRVCCInfo }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_347_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_348_S1AP_id_cdma2000OneXRAND }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_348_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cdma2000OneXRAND }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_348_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_349_S1AP_id_cdma2000PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_349_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cdma2000PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_349_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_350_S1AP_id_EUTRANRoundTripDelayEstimationInfo }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_350_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_350_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UplinkS1cdma2000tunnellingIEs_1[] = { + { 9, 4, asn_IOS_S1AP_UplinkS1cdma2000tunnellingIEs_1_rows } +}; +static const long asn_VAL_351_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_351_S1AP_reject = 0; +static const long asn_VAL_351_S1AP_mandatory = 2; +static const long asn_VAL_352_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_352_S1AP_reject = 0; +static const long asn_VAL_352_S1AP_mandatory = 2; +static const long asn_VAL_353_S1AP_id_UERadioCapability = 74; +static const long asn_VAL_353_S1AP_ignore = 1; +static const long asn_VAL_353_S1AP_mandatory = 2; +static const long asn_VAL_354_S1AP_id_UERadioCapabilityForPaging = 198; +static const long asn_VAL_354_S1AP_ignore = 1; +static const long asn_VAL_354_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UECapabilityInfoIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_351_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_351_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_351_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_352_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_352_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_352_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_353_S1AP_id_UERadioCapability }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_353_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UERadioCapability }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_353_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_354_S1AP_id_UERadioCapabilityForPaging }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_354_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UERadioCapabilityForPaging }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_354_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UECapabilityInfoIndicationIEs_1[] = { + { 4, 4, asn_IOS_S1AP_UECapabilityInfoIndicationIEs_1_rows } +}; +static const long asn_VAL_355_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_355_S1AP_reject = 0; +static const long asn_VAL_355_S1AP_mandatory = 2; +static const long asn_VAL_356_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_356_S1AP_reject = 0; +static const long asn_VAL_356_S1AP_mandatory = 2; +static const long asn_VAL_357_S1AP_id_eNB_StatusTransfer_TransparentContainer = 90; +static const long asn_VAL_357_S1AP_reject = 0; +static const long asn_VAL_357_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_ENBStatusTransferIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_355_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_355_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_355_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_356_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_356_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_356_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_357_S1AP_id_eNB_StatusTransfer_TransparentContainer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_357_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_357_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ENBStatusTransferIEs_1[] = { + { 3, 4, asn_IOS_S1AP_ENBStatusTransferIEs_1_rows } +}; +static const long asn_VAL_358_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_358_S1AP_reject = 0; +static const long asn_VAL_358_S1AP_mandatory = 2; +static const long asn_VAL_359_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_359_S1AP_reject = 0; +static const long asn_VAL_359_S1AP_mandatory = 2; +static const long asn_VAL_360_S1AP_id_eNB_StatusTransfer_TransparentContainer = 90; +static const long asn_VAL_360_S1AP_reject = 0; +static const long asn_VAL_360_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_MMEStatusTransferIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_358_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_358_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_358_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_359_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_359_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_359_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_360_S1AP_id_eNB_StatusTransfer_TransparentContainer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_360_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_360_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_MMEStatusTransferIEs_1[] = { + { 3, 4, asn_IOS_S1AP_MMEStatusTransferIEs_1_rows } +}; +static const long asn_VAL_361_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_361_S1AP_reject = 0; +static const long asn_VAL_361_S1AP_mandatory = 2; +static const long asn_VAL_362_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_362_S1AP_reject = 0; +static const long asn_VAL_362_S1AP_mandatory = 2; +static const long asn_VAL_363_S1AP_id_TraceActivation = 25; +static const long asn_VAL_363_S1AP_ignore = 1; +static const long asn_VAL_363_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_TraceStartIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_361_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_361_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_361_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_362_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_362_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_362_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_363_S1AP_id_TraceActivation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_363_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TraceActivation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_363_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_TraceStartIEs_1[] = { + { 3, 4, asn_IOS_S1AP_TraceStartIEs_1_rows } +}; +static const long asn_VAL_364_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_364_S1AP_reject = 0; +static const long asn_VAL_364_S1AP_mandatory = 2; +static const long asn_VAL_365_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_365_S1AP_reject = 0; +static const long asn_VAL_365_S1AP_mandatory = 2; +static const long asn_VAL_366_S1AP_id_E_UTRAN_Trace_ID = 86; +static const long asn_VAL_366_S1AP_ignore = 1; +static const long asn_VAL_366_S1AP_mandatory = 2; +static const long asn_VAL_367_S1AP_id_Cause = 2; +static const long asn_VAL_367_S1AP_ignore = 1; +static const long asn_VAL_367_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_TraceFailureIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_364_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_364_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_364_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_365_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_365_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_365_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_366_S1AP_id_E_UTRAN_Trace_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_366_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_UTRAN_Trace_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_366_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_367_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_367_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_367_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_TraceFailureIndicationIEs_1[] = { + { 4, 4, asn_IOS_S1AP_TraceFailureIndicationIEs_1_rows } +}; +static const long asn_VAL_368_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_368_S1AP_reject = 0; +static const long asn_VAL_368_S1AP_mandatory = 2; +static const long asn_VAL_369_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_369_S1AP_reject = 0; +static const long asn_VAL_369_S1AP_mandatory = 2; +static const long asn_VAL_370_S1AP_id_E_UTRAN_Trace_ID = 86; +static const long asn_VAL_370_S1AP_ignore = 1; +static const long asn_VAL_370_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_DeactivateTraceIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_368_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_368_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_368_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_369_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_369_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_369_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_370_S1AP_id_E_UTRAN_Trace_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_370_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_UTRAN_Trace_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_370_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_DeactivateTraceIEs_1[] = { + { 3, 4, asn_IOS_S1AP_DeactivateTraceIEs_1_rows } +}; +static const long asn_VAL_371_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_371_S1AP_reject = 0; +static const long asn_VAL_371_S1AP_mandatory = 2; +static const long asn_VAL_372_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_372_S1AP_reject = 0; +static const long asn_VAL_372_S1AP_mandatory = 2; +static const long asn_VAL_373_S1AP_id_E_UTRAN_Trace_ID = 86; +static const long asn_VAL_373_S1AP_ignore = 1; +static const long asn_VAL_373_S1AP_mandatory = 2; +static const long asn_VAL_374_S1AP_id_EUTRAN_CGI = 100; +static const long asn_VAL_374_S1AP_ignore = 1; +static const long asn_VAL_374_S1AP_mandatory = 2; +static const long asn_VAL_375_S1AP_id_TraceCollectionEntityIPAddress = 131; +static const long asn_VAL_375_S1AP_ignore = 1; +static const long asn_VAL_375_S1AP_mandatory = 2; +static const long asn_VAL_376_S1AP_id_PrivacyIndicator = 166; +static const long asn_VAL_376_S1AP_ignore = 1; +static const long asn_VAL_376_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_CellTrafficTraceIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_371_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_371_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_371_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_372_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_372_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_372_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_373_S1AP_id_E_UTRAN_Trace_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_373_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_UTRAN_Trace_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_373_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_374_S1AP_id_EUTRAN_CGI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_374_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EUTRAN_CGI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_374_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_375_S1AP_id_TraceCollectionEntityIPAddress }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_375_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TransportLayerAddress }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_375_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_376_S1AP_id_PrivacyIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_376_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_PrivacyIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_376_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_CellTrafficTraceIEs_1[] = { + { 6, 4, asn_IOS_S1AP_CellTrafficTraceIEs_1_rows } +}; +static const long asn_VAL_377_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_377_S1AP_reject = 0; +static const long asn_VAL_377_S1AP_mandatory = 2; +static const long asn_VAL_378_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_378_S1AP_reject = 0; +static const long asn_VAL_378_S1AP_mandatory = 2; +static const long asn_VAL_379_S1AP_id_RequestType = 98; +static const long asn_VAL_379_S1AP_ignore = 1; +static const long asn_VAL_379_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_LocationReportingControlIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_377_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_377_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_377_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_378_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_378_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_378_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_379_S1AP_id_RequestType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_379_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_RequestType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_379_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_LocationReportingControlIEs_1[] = { + { 3, 4, asn_IOS_S1AP_LocationReportingControlIEs_1_rows } +}; +static const long asn_VAL_380_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_380_S1AP_reject = 0; +static const long asn_VAL_380_S1AP_mandatory = 2; +static const long asn_VAL_381_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_381_S1AP_reject = 0; +static const long asn_VAL_381_S1AP_mandatory = 2; +static const long asn_VAL_382_S1AP_id_Cause = 2; +static const long asn_VAL_382_S1AP_ignore = 1; +static const long asn_VAL_382_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_LocationReportingFailureIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_380_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_380_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_380_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_381_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_381_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_381_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_382_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_382_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_382_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_LocationReportingFailureIndicationIEs_1[] = { + { 3, 4, asn_IOS_S1AP_LocationReportingFailureIndicationIEs_1_rows } +}; +static const long asn_VAL_383_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_383_S1AP_reject = 0; +static const long asn_VAL_383_S1AP_mandatory = 2; +static const long asn_VAL_384_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_384_S1AP_reject = 0; +static const long asn_VAL_384_S1AP_mandatory = 2; +static const long asn_VAL_385_S1AP_id_EUTRAN_CGI = 100; +static const long asn_VAL_385_S1AP_ignore = 1; +static const long asn_VAL_385_S1AP_mandatory = 2; +static const long asn_VAL_386_S1AP_id_TAI = 67; +static const long asn_VAL_386_S1AP_ignore = 1; +static const long asn_VAL_386_S1AP_mandatory = 2; +static const long asn_VAL_387_S1AP_id_RequestType = 98; +static const long asn_VAL_387_S1AP_ignore = 1; +static const long asn_VAL_387_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_LocationReportIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_383_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_383_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_383_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_384_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_384_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_384_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_385_S1AP_id_EUTRAN_CGI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_385_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EUTRAN_CGI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_385_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_386_S1AP_id_TAI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_386_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TAI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_386_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_387_S1AP_id_RequestType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_387_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_RequestType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_387_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_LocationReportIEs_1[] = { + { 5, 4, asn_IOS_S1AP_LocationReportIEs_1_rows } +}; +static const long asn_VAL_388_S1AP_id_OverloadResponse = 101; +static const long asn_VAL_388_S1AP_reject = 0; +static const long asn_VAL_388_S1AP_mandatory = 2; +static const long asn_VAL_389_S1AP_id_GUMMEIList = 154; +static const long asn_VAL_389_S1AP_ignore = 1; +static const long asn_VAL_389_S1AP_optional = 0; +static const long asn_VAL_390_S1AP_id_TrafficLoadReductionIndication = 161; +static const long asn_VAL_390_S1AP_ignore = 1; +static const long asn_VAL_390_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_OverloadStartIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_388_S1AP_id_OverloadResponse }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_388_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_OverloadResponse }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_388_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_389_S1AP_id_GUMMEIList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_389_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_GUMMEIList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_389_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_390_S1AP_id_TrafficLoadReductionIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_390_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TrafficLoadReductionIndication }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_390_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_OverloadStartIEs_1[] = { + { 3, 4, asn_IOS_S1AP_OverloadStartIEs_1_rows } +}; +static const long asn_VAL_391_S1AP_id_GUMMEIList = 154; +static const long asn_VAL_391_S1AP_ignore = 1; +static const long asn_VAL_391_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_OverloadStopIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_391_S1AP_id_GUMMEIList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_391_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_GUMMEIList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_391_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_OverloadStopIEs_1[] = { + { 1, 4, asn_IOS_S1AP_OverloadStopIEs_1_rows } +}; +static const long asn_VAL_392_S1AP_id_MessageIdentifier = 111; +static const long asn_VAL_392_S1AP_reject = 0; +static const long asn_VAL_392_S1AP_mandatory = 2; +static const long asn_VAL_393_S1AP_id_SerialNumber = 112; +static const long asn_VAL_393_S1AP_reject = 0; +static const long asn_VAL_393_S1AP_mandatory = 2; +static const long asn_VAL_394_S1AP_id_WarningAreaList = 113; +static const long asn_VAL_394_S1AP_ignore = 1; +static const long asn_VAL_394_S1AP_optional = 0; +static const long asn_VAL_395_S1AP_id_RepetitionPeriod = 114; +static const long asn_VAL_395_S1AP_reject = 0; +static const long asn_VAL_395_S1AP_mandatory = 2; +static const long asn_VAL_396_S1AP_id_ExtendedRepetitionPeriod = 144; +static const long asn_VAL_396_S1AP_reject = 0; +static const long asn_VAL_396_S1AP_optional = 0; +static const long asn_VAL_397_S1AP_id_NumberofBroadcastRequest = 115; +static const long asn_VAL_397_S1AP_reject = 0; +static const long asn_VAL_397_S1AP_mandatory = 2; +static const long asn_VAL_398_S1AP_id_WarningType = 116; +static const long asn_VAL_398_S1AP_ignore = 1; +static const long asn_VAL_398_S1AP_optional = 0; +static const long asn_VAL_399_S1AP_id_WarningSecurityInfo = 117; +static const long asn_VAL_399_S1AP_ignore = 1; +static const long asn_VAL_399_S1AP_optional = 0; +static const long asn_VAL_400_S1AP_id_DataCodingScheme = 118; +static const long asn_VAL_400_S1AP_ignore = 1; +static const long asn_VAL_400_S1AP_optional = 0; +static const long asn_VAL_401_S1AP_id_WarningMessageContents = 119; +static const long asn_VAL_401_S1AP_ignore = 1; +static const long asn_VAL_401_S1AP_optional = 0; +static const long asn_VAL_402_S1AP_id_ConcurrentWarningMessageIndicator = 142; +static const long asn_VAL_402_S1AP_reject = 0; +static const long asn_VAL_402_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_WriteReplaceWarningRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_392_S1AP_id_MessageIdentifier }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_392_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MessageIdentifier }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_392_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_393_S1AP_id_SerialNumber }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_393_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SerialNumber }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_393_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_394_S1AP_id_WarningAreaList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_394_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_WarningAreaList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_394_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_395_S1AP_id_RepetitionPeriod }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_395_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_RepetitionPeriod }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_395_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_396_S1AP_id_ExtendedRepetitionPeriod }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_396_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ExtendedRepetitionPeriod }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_396_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_397_S1AP_id_NumberofBroadcastRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_397_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_NumberofBroadcastRequest }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_397_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_398_S1AP_id_WarningType }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_398_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_WarningType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_398_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_399_S1AP_id_WarningSecurityInfo }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_399_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_WarningSecurityInfo }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_399_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_400_S1AP_id_DataCodingScheme }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_400_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_DataCodingScheme }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_400_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_401_S1AP_id_WarningMessageContents }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_401_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_WarningMessageContents }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_401_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_402_S1AP_id_ConcurrentWarningMessageIndicator }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_402_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ConcurrentWarningMessageIndicator }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_402_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_WriteReplaceWarningRequestIEs_1[] = { + { 11, 4, asn_IOS_S1AP_WriteReplaceWarningRequestIEs_1_rows } +}; +static const long asn_VAL_403_S1AP_id_MessageIdentifier = 111; +static const long asn_VAL_403_S1AP_reject = 0; +static const long asn_VAL_403_S1AP_mandatory = 2; +static const long asn_VAL_404_S1AP_id_SerialNumber = 112; +static const long asn_VAL_404_S1AP_reject = 0; +static const long asn_VAL_404_S1AP_mandatory = 2; +static const long asn_VAL_405_S1AP_id_BroadcastCompletedAreaList = 120; +static const long asn_VAL_405_S1AP_ignore = 1; +static const long asn_VAL_405_S1AP_optional = 0; +static const long asn_VAL_406_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_406_S1AP_ignore = 1; +static const long asn_VAL_406_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_WriteReplaceWarningResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_403_S1AP_id_MessageIdentifier }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_403_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MessageIdentifier }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_403_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_404_S1AP_id_SerialNumber }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_404_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SerialNumber }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_404_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_405_S1AP_id_BroadcastCompletedAreaList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_405_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_BroadcastCompletedAreaList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_405_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_406_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_406_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_406_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_WriteReplaceWarningResponseIEs_1[] = { + { 4, 4, asn_IOS_S1AP_WriteReplaceWarningResponseIEs_1_rows } +}; +static const long asn_VAL_407_S1AP_id_Inter_SystemInformationTransferTypeEDT = 121; +static const long asn_VAL_407_S1AP_reject = 0; +static const long asn_VAL_407_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_ENBDirectInformationTransferIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_407_S1AP_id_Inter_SystemInformationTransferTypeEDT }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_407_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Inter_SystemInformationTransferType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_407_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ENBDirectInformationTransferIEs_1[] = { + { 1, 4, asn_IOS_S1AP_ENBDirectInformationTransferIEs_1_rows } +}; +static const long asn_VAL_408_S1AP_id_Inter_SystemInformationTransferTypeMDT = 122; +static const long asn_VAL_408_S1AP_reject = 0; +static const long asn_VAL_408_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_MMEDirectInformationTransferIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_408_S1AP_id_Inter_SystemInformationTransferTypeMDT }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_408_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Inter_SystemInformationTransferType }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_408_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_MMEDirectInformationTransferIEs_1[] = { + { 1, 4, asn_IOS_S1AP_MMEDirectInformationTransferIEs_1_rows } +}; +static const long asn_VAL_409_S1AP_id_SONConfigurationTransferECT = 129; +static const long asn_VAL_409_S1AP_ignore = 1; +static const long asn_VAL_409_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_ENBConfigurationTransferIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_409_S1AP_id_SONConfigurationTransferECT }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_409_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SONConfigurationTransfer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_409_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ENBConfigurationTransferIEs_1[] = { + { 1, 4, asn_IOS_S1AP_ENBConfigurationTransferIEs_1_rows } +}; +static const long asn_VAL_410_S1AP_id_SONConfigurationTransferMCT = 130; +static const long asn_VAL_410_S1AP_ignore = 1; +static const long asn_VAL_410_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_MMEConfigurationTransferIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_410_S1AP_id_SONConfigurationTransferMCT }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_410_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_SONConfigurationTransfer }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_410_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_MMEConfigurationTransferIEs_1[] = { + { 1, 4, asn_IOS_S1AP_MMEConfigurationTransferIEs_1_rows } +}; +static const long asn_VAL_411_S1AP_id_MessageIdentifier = 111; +static const long asn_VAL_411_S1AP_reject = 0; +static const long asn_VAL_411_S1AP_mandatory = 2; +static const long asn_VAL_412_S1AP_id_SerialNumber = 112; +static const long asn_VAL_412_S1AP_reject = 0; +static const long asn_VAL_412_S1AP_mandatory = 2; +static const long asn_VAL_413_S1AP_id_WarningAreaList = 113; +static const long asn_VAL_413_S1AP_ignore = 1; +static const long asn_VAL_413_S1AP_optional = 0; +static const long asn_VAL_414_S1AP_id_KillAllWarningMessages = 191; +static const long asn_VAL_414_S1AP_reject = 0; +static const long asn_VAL_414_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_KillRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_411_S1AP_id_MessageIdentifier }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_411_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MessageIdentifier }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_411_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_412_S1AP_id_SerialNumber }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_412_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SerialNumber }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_412_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_413_S1AP_id_WarningAreaList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_413_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_WarningAreaList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_413_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_414_S1AP_id_KillAllWarningMessages }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_414_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_KillAllWarningMessages }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_414_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_KillRequestIEs_1[] = { + { 4, 4, asn_IOS_S1AP_KillRequestIEs_1_rows } +}; +static const long asn_VAL_415_S1AP_id_MessageIdentifier = 111; +static const long asn_VAL_415_S1AP_reject = 0; +static const long asn_VAL_415_S1AP_mandatory = 2; +static const long asn_VAL_416_S1AP_id_SerialNumber = 112; +static const long asn_VAL_416_S1AP_reject = 0; +static const long asn_VAL_416_S1AP_mandatory = 2; +static const long asn_VAL_417_S1AP_id_BroadcastCancelledAreaList = 141; +static const long asn_VAL_417_S1AP_ignore = 1; +static const long asn_VAL_417_S1AP_optional = 0; +static const long asn_VAL_418_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_418_S1AP_ignore = 1; +static const long asn_VAL_418_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_KillResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_415_S1AP_id_MessageIdentifier }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_415_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MessageIdentifier }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_415_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_416_S1AP_id_SerialNumber }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_416_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SerialNumber }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_416_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_417_S1AP_id_BroadcastCancelledAreaList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_417_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_BroadcastCancelledAreaList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_417_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_418_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_418_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_418_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_KillResponseIEs_1[] = { + { 4, 4, asn_IOS_S1AP_KillResponseIEs_1_rows } +}; +static const long asn_VAL_419_S1AP_id_ECGIListForRestart = 182; +static const long asn_VAL_419_S1AP_reject = 0; +static const long asn_VAL_419_S1AP_mandatory = 2; +static const long asn_VAL_420_S1AP_id_Global_ENB_ID = 59; +static const long asn_VAL_420_S1AP_reject = 0; +static const long asn_VAL_420_S1AP_mandatory = 2; +static const long asn_VAL_421_S1AP_id_TAIListForRestart = 188; +static const long asn_VAL_421_S1AP_reject = 0; +static const long asn_VAL_421_S1AP_mandatory = 2; +static const long asn_VAL_422_S1AP_id_EmergencyAreaIDListForRestart = 190; +static const long asn_VAL_422_S1AP_reject = 0; +static const long asn_VAL_422_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_PWSRestartIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_419_S1AP_id_ECGIListForRestart }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_419_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ECGIListForRestart }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_419_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_420_S1AP_id_Global_ENB_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_420_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Global_ENB_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_420_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_421_S1AP_id_TAIListForRestart }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_421_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_TAIListForRestart }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_421_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_422_S1AP_id_EmergencyAreaIDListForRestart }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_422_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_EmergencyAreaIDListForRestart }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_422_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_PWSRestartIndicationIEs_1[] = { + { 4, 4, asn_IOS_S1AP_PWSRestartIndicationIEs_1_rows } +}; +static const long asn_VAL_423_S1AP_id_PWSfailedECGIList = 222; +static const long asn_VAL_423_S1AP_reject = 0; +static const long asn_VAL_423_S1AP_mandatory = 2; +static const long asn_VAL_424_S1AP_id_Global_ENB_ID = 59; +static const long asn_VAL_424_S1AP_reject = 0; +static const long asn_VAL_424_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_PWSFailureIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_423_S1AP_id_PWSfailedECGIList }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_423_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_PWSfailedECGIList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_423_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_424_S1AP_id_Global_ENB_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_424_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Global_ENB_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_424_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_PWSFailureIndicationIEs_1[] = { + { 2, 4, asn_IOS_S1AP_PWSFailureIndicationIEs_1_rows } +}; +static const long asn_VAL_425_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_425_S1AP_reject = 0; +static const long asn_VAL_425_S1AP_mandatory = 2; +static const long asn_VAL_426_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_426_S1AP_reject = 0; +static const long asn_VAL_426_S1AP_mandatory = 2; +static const long asn_VAL_427_S1AP_id_Routing_ID = 148; +static const long asn_VAL_427_S1AP_reject = 0; +static const long asn_VAL_427_S1AP_mandatory = 2; +static const long asn_VAL_428_S1AP_id_LPPa_PDU = 147; +static const long asn_VAL_428_S1AP_reject = 0; +static const long asn_VAL_428_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_425_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_425_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_425_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_426_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_426_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_426_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_427_S1AP_id_Routing_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_427_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Routing_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_427_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_428_S1AP_id_LPPa_PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_428_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_LPPa_PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_428_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_1[] = { + { 4, 4, asn_IOS_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_1_rows } +}; +static const long asn_VAL_429_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_429_S1AP_reject = 0; +static const long asn_VAL_429_S1AP_mandatory = 2; +static const long asn_VAL_430_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_430_S1AP_reject = 0; +static const long asn_VAL_430_S1AP_mandatory = 2; +static const long asn_VAL_431_S1AP_id_Routing_ID = 148; +static const long asn_VAL_431_S1AP_reject = 0; +static const long asn_VAL_431_S1AP_mandatory = 2; +static const long asn_VAL_432_S1AP_id_LPPa_PDU = 147; +static const long asn_VAL_432_S1AP_reject = 0; +static const long asn_VAL_432_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_UplinkUEAssociatedLPPaTransport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_429_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_429_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_429_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_430_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_430_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_430_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_431_S1AP_id_Routing_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_431_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Routing_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_431_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_432_S1AP_id_LPPa_PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_432_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_LPPa_PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_432_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UplinkUEAssociatedLPPaTransport_IEs_1[] = { + { 4, 4, asn_IOS_S1AP_UplinkUEAssociatedLPPaTransport_IEs_1_rows } +}; +static const long asn_VAL_433_S1AP_id_Routing_ID = 148; +static const long asn_VAL_433_S1AP_reject = 0; +static const long asn_VAL_433_S1AP_mandatory = 2; +static const long asn_VAL_434_S1AP_id_LPPa_PDU = 147; +static const long asn_VAL_434_S1AP_reject = 0; +static const long asn_VAL_434_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_433_S1AP_id_Routing_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_433_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Routing_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_433_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_434_S1AP_id_LPPa_PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_434_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_LPPa_PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_434_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_1[] = { + { 2, 4, asn_IOS_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_1_rows } +}; +static const long asn_VAL_435_S1AP_id_Routing_ID = 148; +static const long asn_VAL_435_S1AP_reject = 0; +static const long asn_VAL_435_S1AP_mandatory = 2; +static const long asn_VAL_436_S1AP_id_LPPa_PDU = 147; +static const long asn_VAL_436_S1AP_reject = 0; +static const long asn_VAL_436_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_435_S1AP_id_Routing_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_435_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_Routing_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_435_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_436_S1AP_id_LPPa_PDU }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_436_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_LPPa_PDU }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_436_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_1[] = { + { 2, 4, asn_IOS_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_1_rows } +}; +static const long asn_VAL_437_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_437_S1AP_reject = 0; +static const long asn_VAL_437_S1AP_mandatory = 2; +static const long asn_VAL_438_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_438_S1AP_reject = 0; +static const long asn_VAL_438_S1AP_mandatory = 2; +static const long asn_VAL_439_S1AP_id_E_RABToBeModifiedListBearerModInd = 199; +static const long asn_VAL_439_S1AP_reject = 0; +static const long asn_VAL_439_S1AP_mandatory = 2; +static const long asn_VAL_440_S1AP_id_E_RABNotToBeModifiedListBearerModInd = 201; +static const long asn_VAL_440_S1AP_reject = 0; +static const long asn_VAL_440_S1AP_optional = 0; +static const long asn_VAL_441_S1AP_id_CSGMembershipInfo = 226; +static const long asn_VAL_441_S1AP_reject = 0; +static const long asn_VAL_441_S1AP_optional = 0; +static const long asn_VAL_442_S1AP_id_Tunnel_Information_for_BBF = 176; +static const long asn_VAL_442_S1AP_ignore = 1; +static const long asn_VAL_442_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABModificationIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_437_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_437_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_437_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_438_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_438_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_438_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_439_S1AP_id_E_RABToBeModifiedListBearerModInd }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_439_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_439_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_440_S1AP_id_E_RABNotToBeModifiedListBearerModInd }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_440_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_440_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_441_S1AP_id_CSGMembershipInfo }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_441_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSGMembershipInfo }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_441_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_442_S1AP_id_Tunnel_Information_for_BBF }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_442_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TunnelInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_442_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABModificationIndicationIEs_1[] = { + { 6, 4, asn_IOS_S1AP_E_RABModificationIndicationIEs_1_rows } +}; +static const long asn_VAL_445_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_445_S1AP_ignore = 1; +static const long asn_VAL_445_S1AP_mandatory = 2; +static const long asn_VAL_446_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_446_S1AP_ignore = 1; +static const long asn_VAL_446_S1AP_mandatory = 2; +static const long asn_VAL_447_S1AP_id_E_RABModifyListBearerModConf = 203; +static const long asn_VAL_447_S1AP_ignore = 1; +static const long asn_VAL_447_S1AP_optional = 0; +static const long asn_VAL_448_S1AP_id_E_RABFailedToModifyListBearerModConf = 205; +static const long asn_VAL_448_S1AP_ignore = 1; +static const long asn_VAL_448_S1AP_optional = 0; +static const long asn_VAL_449_S1AP_id_E_RABToBeReleasedListBearerModConf = 210; +static const long asn_VAL_449_S1AP_ignore = 1; +static const long asn_VAL_449_S1AP_optional = 0; +static const long asn_VAL_450_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_450_S1AP_ignore = 1; +static const long asn_VAL_450_S1AP_optional = 0; +static const long asn_VAL_451_S1AP_id_CSGMembershipStatus = 146; +static const long asn_VAL_451_S1AP_ignore = 1; +static const long asn_VAL_451_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABModificationConfirmIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_445_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_445_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_445_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_446_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_446_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_446_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_447_S1AP_id_E_RABModifyListBearerModConf }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_447_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABModifyListBearerModConf }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_447_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_448_S1AP_id_E_RABFailedToModifyListBearerModConf }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_448_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_448_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_449_S1AP_id_E_RABToBeReleasedListBearerModConf }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_449_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABList }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_449_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_450_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_450_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_450_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_451_S1AP_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_451_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_451_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABModificationConfirmIEs_1[] = { + { 7, 4, asn_IOS_S1AP_E_RABModificationConfirmIEs_1_rows } +}; +static const long asn_VAL_453_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_453_S1AP_reject = 0; +static const long asn_VAL_453_S1AP_mandatory = 2; +static const long asn_VAL_454_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_454_S1AP_reject = 0; +static const long asn_VAL_454_S1AP_mandatory = 2; +static const long asn_VAL_455_S1AP_id_CSGMembershipInfo = 226; +static const long asn_VAL_455_S1AP_reject = 0; +static const long asn_VAL_455_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextModificationIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_453_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_453_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_453_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_454_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_454_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_454_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_455_S1AP_id_CSGMembershipInfo }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_455_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSGMembershipInfo }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_455_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextModificationIndicationIEs_1[] = { + { 3, 4, asn_IOS_S1AP_UEContextModificationIndicationIEs_1_rows } +}; +static const long asn_VAL_456_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_456_S1AP_ignore = 1; +static const long asn_VAL_456_S1AP_mandatory = 2; +static const long asn_VAL_457_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_457_S1AP_ignore = 1; +static const long asn_VAL_457_S1AP_mandatory = 2; +static const long asn_VAL_458_S1AP_id_CSGMembershipStatus = 146; +static const long asn_VAL_458_S1AP_ignore = 1; +static const long asn_VAL_458_S1AP_optional = 0; +static const long asn_VAL_459_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_459_S1AP_ignore = 1; +static const long asn_VAL_459_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextModificationConfirmIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_456_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_456_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_456_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_457_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_457_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_457_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_458_S1AP_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_458_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_458_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_459_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_459_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_459_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextModificationConfirmIEs_1[] = { + { 4, 4, asn_IOS_S1AP_UEContextModificationConfirmIEs_1_rows } +}; +static const long asn_VAL_460_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_460_S1AP_reject = 0; +static const long asn_VAL_460_S1AP_mandatory = 2; +static const long asn_VAL_461_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_461_S1AP_reject = 0; +static const long asn_VAL_461_S1AP_mandatory = 2; +static const long asn_VAL_462_S1AP_id_InformationOnRecommendedCellsAndENBsForPaging = 213; +static const long asn_VAL_462_S1AP_ignore = 1; +static const long asn_VAL_462_S1AP_optional = 0; +static const long asn_VAL_463_S1AP_id_CellIdentifierAndCELevelForCECapableUEs = 212; +static const long asn_VAL_463_S1AP_ignore = 1; +static const long asn_VAL_463_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextSuspendRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_460_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_460_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_460_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_461_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_461_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_461_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_462_S1AP_id_InformationOnRecommendedCellsAndENBsForPaging }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_462_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_462_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_463_S1AP_id_CellIdentifierAndCELevelForCECapableUEs }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_463_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_463_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextSuspendRequestIEs_1[] = { + { 4, 4, asn_IOS_S1AP_UEContextSuspendRequestIEs_1_rows } +}; +static const long asn_VAL_464_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_464_S1AP_ignore = 1; +static const long asn_VAL_464_S1AP_mandatory = 2; +static const long asn_VAL_465_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_465_S1AP_ignore = 1; +static const long asn_VAL_465_S1AP_mandatory = 2; +static const long asn_VAL_466_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_466_S1AP_ignore = 1; +static const long asn_VAL_466_S1AP_optional = 0; +static const long asn_VAL_467_S1AP_id_SecurityContext = 40; +static const long asn_VAL_467_S1AP_reject = 0; +static const long asn_VAL_467_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextSuspendResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_464_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_464_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_464_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_465_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_465_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_465_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_466_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_466_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_466_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_467_S1AP_id_SecurityContext }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_467_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SecurityContext }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_467_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextSuspendResponseIEs_1[] = { + { 4, 4, asn_IOS_S1AP_UEContextSuspendResponseIEs_1_rows } +}; +static const long asn_VAL_468_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_468_S1AP_reject = 0; +static const long asn_VAL_468_S1AP_mandatory = 2; +static const long asn_VAL_469_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_469_S1AP_reject = 0; +static const long asn_VAL_469_S1AP_mandatory = 2; +static const long asn_VAL_470_S1AP_id_E_RABFailedToResumeListResumeReq = 235; +static const long asn_VAL_470_S1AP_reject = 0; +static const long asn_VAL_470_S1AP_optional = 0; +static const long asn_VAL_471_S1AP_id_RRC_Resume_Cause = 245; +static const long asn_VAL_471_S1AP_ignore = 1; +static const long asn_VAL_471_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextResumeRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_468_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_468_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_468_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_469_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_469_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_469_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_470_S1AP_id_E_RABFailedToResumeListResumeReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_470_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABFailedToResumeListResumeReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_470_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_471_S1AP_id_RRC_Resume_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_471_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_RRC_Establishment_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_471_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextResumeRequestIEs_1[] = { + { 4, 4, asn_IOS_S1AP_UEContextResumeRequestIEs_1_rows } +}; +static const long asn_VAL_473_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_473_S1AP_ignore = 1; +static const long asn_VAL_473_S1AP_mandatory = 2; +static const long asn_VAL_474_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_474_S1AP_ignore = 1; +static const long asn_VAL_474_S1AP_mandatory = 2; +static const long asn_VAL_475_S1AP_id_E_RABFailedToResumeListResumeRes = 237; +static const long asn_VAL_475_S1AP_reject = 0; +static const long asn_VAL_475_S1AP_optional = 0; +static const long asn_VAL_476_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_476_S1AP_ignore = 1; +static const long asn_VAL_476_S1AP_optional = 0; +static const long asn_VAL_477_S1AP_id_SecurityContext = 40; +static const long asn_VAL_477_S1AP_reject = 0; +static const long asn_VAL_477_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextResumeResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_473_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_473_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_473_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_474_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_474_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_474_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_475_S1AP_id_E_RABFailedToResumeListResumeRes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_475_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABFailedToResumeListResumeRes }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_475_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_476_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_476_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_476_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_477_S1AP_id_SecurityContext }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_477_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_SecurityContext }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_477_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextResumeResponseIEs_1[] = { + { 5, 4, asn_IOS_S1AP_UEContextResumeResponseIEs_1_rows } +}; +static const long asn_VAL_479_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_479_S1AP_ignore = 1; +static const long asn_VAL_479_S1AP_mandatory = 2; +static const long asn_VAL_480_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_480_S1AP_ignore = 1; +static const long asn_VAL_480_S1AP_mandatory = 2; +static const long asn_VAL_481_S1AP_id_Cause = 2; +static const long asn_VAL_481_S1AP_ignore = 1; +static const long asn_VAL_481_S1AP_mandatory = 2; +static const long asn_VAL_482_S1AP_id_CriticalityDiagnostics = 58; +static const long asn_VAL_482_S1AP_ignore = 1; +static const long asn_VAL_482_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEContextResumeFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_479_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_479_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_479_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_480_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_480_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_480_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_481_S1AP_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_481_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_Cause }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_481_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_482_S1AP_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_482_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_482_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEContextResumeFailureIEs_1[] = { + { 4, 4, asn_IOS_S1AP_UEContextResumeFailureIEs_1_rows } +}; +static const long asn_VAL_483_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_483_S1AP_ignore = 1; +static const long asn_VAL_483_S1AP_mandatory = 2; +static const long asn_VAL_484_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_484_S1AP_ignore = 1; +static const long asn_VAL_484_S1AP_mandatory = 2; +static const long asn_VAL_485_S1AP_id_UERadioCapability = 74; +static const long asn_VAL_485_S1AP_ignore = 1; +static const long asn_VAL_485_S1AP_optional = 0; +static const long asn_VAL_486_S1AP_id_EnhancedCoverageRestricted = 251; +static const long asn_VAL_486_S1AP_ignore = 1; +static const long asn_VAL_486_S1AP_optional = 0; +static const long asn_VAL_487_S1AP_id_DL_CP_SecurityInformation = 253; +static const long asn_VAL_487_S1AP_ignore = 1; +static const long asn_VAL_487_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_ConnectionEstablishmentIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_483_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_483_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_483_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_484_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_484_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_484_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_485_S1AP_id_UERadioCapability }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_485_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UERadioCapability }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_485_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_486_S1AP_id_EnhancedCoverageRestricted }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_486_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EnhancedCoverageRestricted }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_486_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_487_S1AP_id_DL_CP_SecurityInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_487_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_DL_CP_SecurityInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_487_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ConnectionEstablishmentIndicationIEs_1[] = { + { 5, 4, asn_IOS_S1AP_ConnectionEstablishmentIndicationIEs_1_rows } +}; +static const long asn_VAL_488_S1AP_id_S_TMSI = 96; +static const long asn_VAL_488_S1AP_reject = 0; +static const long asn_VAL_488_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_RetrieveUEInformationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_488_S1AP_id_S_TMSI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_488_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_S_TMSI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_488_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_RetrieveUEInformationIEs_1[] = { + { 1, 4, asn_IOS_S1AP_RetrieveUEInformationIEs_1_rows } +}; +static const long asn_VAL_489_S1AP_id_S_TMSI = 96; +static const long asn_VAL_489_S1AP_reject = 0; +static const long asn_VAL_489_S1AP_mandatory = 2; +static const long asn_VAL_490_S1AP_id_UE_Level_QoS_Parameters = 252; +static const long asn_VAL_490_S1AP_ignore = 1; +static const long asn_VAL_490_S1AP_optional = 0; +static const long asn_VAL_491_S1AP_id_UERadioCapability = 74; +static const long asn_VAL_491_S1AP_ignore = 1; +static const long asn_VAL_491_S1AP_optional = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_UEInformationTransferIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_489_S1AP_id_S_TMSI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_489_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_S_TMSI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_489_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_490_S1AP_id_UE_Level_QoS_Parameters }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_490_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABLevelQoSParameters }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_490_S1AP_optional }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_491_S1AP_id_UERadioCapability }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_491_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_UERadioCapability }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_491_S1AP_optional } +}; +static const asn_ioc_set_t asn_IOS_S1AP_UEInformationTransferIEs_1[] = { + { 3, 4, asn_IOS_S1AP_UEInformationTransferIEs_1_rows } +}; +static const long asn_VAL_492_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_492_S1AP_reject = 0; +static const long asn_VAL_492_S1AP_mandatory = 2; +static const long asn_VAL_493_S1AP_id_S_TMSI = 96; +static const long asn_VAL_493_S1AP_reject = 0; +static const long asn_VAL_493_S1AP_mandatory = 2; +static const long asn_VAL_494_S1AP_id_EUTRAN_CGI = 100; +static const long asn_VAL_494_S1AP_ignore = 1; +static const long asn_VAL_494_S1AP_mandatory = 2; +static const long asn_VAL_495_S1AP_id_TAI = 67; +static const long asn_VAL_495_S1AP_ignore = 1; +static const long asn_VAL_495_S1AP_mandatory = 2; +static const long asn_VAL_496_S1AP_id_UL_CP_SecurityInformation = 254; +static const long asn_VAL_496_S1AP_reject = 0; +static const long asn_VAL_496_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_ENBCPRelocationIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_492_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_492_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_492_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_493_S1AP_id_S_TMSI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_493_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_S_TMSI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_493_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_494_S1AP_id_EUTRAN_CGI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_494_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_EUTRAN_CGI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_494_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_495_S1AP_id_TAI }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_495_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_TAI }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_495_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_496_S1AP_id_UL_CP_SecurityInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_496_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_UL_CP_SecurityInformation }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_496_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_ENBCPRelocationIndicationIEs_1[] = { + { 5, 4, asn_IOS_S1AP_ENBCPRelocationIndicationIEs_1_rows } +}; +static const long asn_VAL_497_S1AP_id_MME_UE_S1AP_ID = 0; +static const long asn_VAL_497_S1AP_reject = 0; +static const long asn_VAL_497_S1AP_mandatory = 2; +static const long asn_VAL_498_S1AP_id_eNB_UE_S1AP_ID = 8; +static const long asn_VAL_498_S1AP_reject = 0; +static const long asn_VAL_498_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_MMECPRelocationIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_497_S1AP_id_MME_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_497_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_MME_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_497_S1AP_mandatory }, + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_498_S1AP_id_eNB_UE_S1AP_ID }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_498_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_ENB_UE_S1AP_ID }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_498_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_MMECPRelocationIndicationIEs_1[] = { + { 2, 4, asn_IOS_S1AP_MMECPRelocationIndicationIEs_1_rows } +}; +static const long asn_VAL_24_S1AP_id_E_RABDataForwardingItem = 14; +static const long asn_VAL_24_S1AP_ignore = 1; +static const long asn_VAL_24_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABDataForwardingItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_24_S1AP_id_E_RABDataForwardingItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_24_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABDataForwardingItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_24_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABDataForwardingItemIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABDataForwardingItemIEs_1_rows } +}; +static const long asn_VAL_55_S1AP_id_E_RABToBeSetupItemHOReq = 27; +static const long asn_VAL_55_S1AP_reject = 0; +static const long asn_VAL_55_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeSetupItemHOReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_55_S1AP_id_E_RABToBeSetupItemHOReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_55_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSetupItemHOReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_55_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeSetupItemHOReqIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABToBeSetupItemHOReqIEs_1_rows } +}; +static const long asn_VAL_65_S1AP_id_E_RABAdmittedItem = 20; +static const long asn_VAL_65_S1AP_ignore = 1; +static const long asn_VAL_65_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABAdmittedItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_65_S1AP_id_E_RABAdmittedItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_65_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABAdmittedItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_65_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABAdmittedItemIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABAdmittedItemIEs_1_rows } +}; +static const long asn_VAL_66_S1AP_id_E_RABFailedtoSetupItemHOReqAck = 21; +static const long asn_VAL_66_S1AP_ignore = 1; +static const long asn_VAL_66_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_66_S1AP_id_E_RABFailedtoSetupItemHOReqAck }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_66_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_66_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_1_rows } +}; +static const long asn_VAL_89_S1AP_id_E_RABToBeSwitchedDLItem = 23; +static const long asn_VAL_89_S1AP_reject = 0; +static const long asn_VAL_89_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeSwitchedDLItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_89_S1AP_id_E_RABToBeSwitchedDLItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_89_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSwitchedDLItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_89_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeSwitchedDLItemIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABToBeSwitchedDLItemIEs_1_rows } +}; +static const long asn_VAL_104_S1AP_id_E_RABToBeSwitchedULItem = 94; +static const long asn_VAL_104_S1AP_ignore = 1; +static const long asn_VAL_104_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeSwitchedULItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_104_S1AP_id_E_RABToBeSwitchedULItem }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_104_S1AP_ignore }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeSwitchedULItem }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_104_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeSwitchedULItemIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABToBeSwitchedULItemIEs_1_rows } +}; +static const long asn_VAL_443_S1AP_id_E_RABToBeModifiedItemBearerModInd = 200; +static const long asn_VAL_443_S1AP_reject = 0; +static const long asn_VAL_443_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABToBeModifiedItemBearerModIndIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_443_S1AP_id_E_RABToBeModifiedItemBearerModInd }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_443_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_443_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABToBeModifiedItemBearerModIndIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABToBeModifiedItemBearerModIndIEs_1_rows } +}; +static const long asn_VAL_444_S1AP_id_E_RABNotToBeModifiedItemBearerModInd = 202; +static const long asn_VAL_444_S1AP_reject = 0; +static const long asn_VAL_444_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_444_S1AP_id_E_RABNotToBeModifiedItemBearerModInd }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_444_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_444_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_1_rows } +}; +static const long asn_VAL_472_S1AP_id_E_RABFailedToResumeItemResumeReq = 236; +static const long asn_VAL_472_S1AP_reject = 0; +static const long asn_VAL_472_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABFailedToResumeItemResumeReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_472_S1AP_id_E_RABFailedToResumeItemResumeReq }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_472_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_472_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABFailedToResumeItemResumeReqIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABFailedToResumeItemResumeReqIEs_1_rows } +}; +static const long asn_VAL_478_S1AP_id_E_RABFailedToResumeItemResumeRes = 238; +static const long asn_VAL_478_S1AP_reject = 0; +static const long asn_VAL_478_S1AP_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_S1AP_E_RABFailedToResumeItemResumeResIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_S1AP_ProtocolIE_ID, &asn_VAL_478_S1AP_id_E_RABFailedToResumeItemResumeRes }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_478_S1AP_reject }, + { "&Value", aioc__type, &asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes }, + { "&presence", aioc__value, &asn_DEF_S1AP_Presence, &asn_VAL_478_S1AP_mandatory } +}; +static const asn_ioc_set_t asn_IOS_S1AP_E_RABFailedToResumeItemResumeResIEs_1[] = { + { 1, 4, asn_IOS_S1AP_E_RABFailedToResumeItemResumeResIEs_1_rows } +}; +static int +memb_S1AP_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemBearerSUReqIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemBearerSUReqIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemBearerSUReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABSetupItemBearerSUResIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABSetupItemBearerSUResIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABSetupItemBearerSUResIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABSetupItemBearerSUResIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABSetupItemBearerSUResIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABSetupItemBearerSUResIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeModifiedItemBearerModReqIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeModifiedItemBearerModReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeModifiedItemBearerModReqIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeModifiedItemBearerModReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABModifyItemBearerModResIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModifyItemBearerModResIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModifyItemBearerModResIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABModifyItemBearerModResIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModifyItemBearerModResIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModifyItemBearerModResIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABReleaseItemBearerRelCompIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABReleaseItemBearerRelCompIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABReleaseItemBearerRelCompIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABReleaseItemBearerRelCompIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABReleaseItemBearerRelCompIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABReleaseItemBearerRelCompIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemCtxtSUReqIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemCtxtSUReqIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABSetupItemCtxtSUResIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABSetupItemCtxtSUResIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABSetupItemCtxtSUResIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABSetupItemCtxtSUResIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABSetupItemCtxtSUResIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABSetupItemCtxtSUResIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_TAIItemIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TAIItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TAIItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_TAIItemIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TAIItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TAIItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UE_associatedLogicalS1_ConnectionItemRes_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemRes_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UE_associatedLogicalS1_ConnectionItemRes_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemRes_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UE_associatedLogicalS1_ConnectionItemResAck_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UE_associatedLogicalS1_ConnectionItemResAck_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABModifyItemBearerModConfIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModifyItemBearerModConfIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModifyItemBearerModConfIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABModifyItemBearerModConfIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModifyItemBearerModConfIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModifyItemBearerModConfIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Bearers_SubjectToStatusTransfer_ItemIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_Bearers_SubjectToStatusTransfer_ItemIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABInformationListIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABInformationListIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABInformationListIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABInformationListIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABInformationListIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABInformationListIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABItemIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABItemIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MDTMode_ExtensionIE_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MDTMode_ExtensionIE_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MDTMode_ExtensionIE, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MDTMode_ExtensionIE_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MDTMode_ExtensionIE_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MDTMode_ExtensionIE, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RecommendedCellItemIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_RecommendedCellItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_RecommendedCellItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RecommendedCellItemIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_RecommendedCellItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_RecommendedCellItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RecommendedENBItemIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_RecommendedENBItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_RecommendedENBItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RecommendedENBItemIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_RecommendedENBItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_RecommendedENBItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SONInformation_ExtensionIE_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SONInformation_ExtensionIE_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SONInformation_ExtensionIE, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SONInformation_ExtensionIE_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_SONInformation_ExtensionIE_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SONInformation_ExtensionIE, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverRequiredIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverRequiredIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverRequiredIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverRequiredIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverRequiredIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverRequiredIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverCommandIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverCommandIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverCommandIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverCommandIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverCommandIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverCommandIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverPreparationFailureIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverPreparationFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverPreparationFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverPreparationFailureIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverPreparationFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverPreparationFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverRequestAcknowledgeIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverRequestAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverRequestAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverRequestAcknowledgeIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverRequestAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverRequestAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverFailureIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverFailureIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverNotifyIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverNotifyIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverNotifyIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverNotifyIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverNotifyIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverNotifyIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_PathSwitchRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PathSwitchRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PathSwitchRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_PathSwitchRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PathSwitchRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PathSwitchRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_PathSwitchRequestAcknowledgeIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PathSwitchRequestAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_PathSwitchRequestAcknowledgeIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PathSwitchRequestAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_PathSwitchRequestFailureIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PathSwitchRequestFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PathSwitchRequestFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_PathSwitchRequestFailureIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PathSwitchRequestFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PathSwitchRequestFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverCancelIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverCancelIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverCancelIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverCancelIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverCancelIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverCancelIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverCancelAcknowledgeIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverCancelAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverCancelAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverCancelAcknowledgeIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_HandoverCancelAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_HandoverCancelAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABSetupRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABSetupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABSetupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABSetupRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABSetupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABSetupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABSetupResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABSetupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABSetupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABSetupResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABSetupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABSetupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABModifyRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModifyRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModifyRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABModifyRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModifyRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModifyRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABModifyResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModifyResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModifyResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABModifyResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModifyResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModifyResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABReleaseCommandIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABReleaseCommandIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABReleaseCommandIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABReleaseCommandIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABReleaseCommandIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABReleaseCommandIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABReleaseResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABReleaseResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABReleaseResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABReleaseResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABReleaseResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABReleaseResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABReleaseIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABReleaseIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABReleaseIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABReleaseIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABReleaseIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABReleaseIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitialContextSetupRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_InitialContextSetupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitialContextSetupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitialContextSetupRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_InitialContextSetupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitialContextSetupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitialContextSetupResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_InitialContextSetupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitialContextSetupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitialContextSetupResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_InitialContextSetupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitialContextSetupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitialContextSetupFailureIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_InitialContextSetupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitialContextSetupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitialContextSetupFailureIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_InitialContextSetupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitialContextSetupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_PagingIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PagingIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PagingIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_PagingIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PagingIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PagingIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextReleaseRequest_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextReleaseRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextReleaseRequest_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextReleaseRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextReleaseCommand_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextReleaseCommand_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextReleaseCommand_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextReleaseCommand_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextReleaseCommand_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextReleaseCommand_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextReleaseComplete_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextReleaseComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextReleaseComplete_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextReleaseComplete_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextReleaseComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextReleaseComplete_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextModificationRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextModificationRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextModificationResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextModificationResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextModificationFailureIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextModificationFailureIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UERadioCapabilityMatchRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UERadioCapabilityMatchRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UERadioCapabilityMatchRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UERadioCapabilityMatchRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UERadioCapabilityMatchResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UERadioCapabilityMatchResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UERadioCapabilityMatchResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UERadioCapabilityMatchResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_DownlinkNASTransport_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DownlinkNASTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DownlinkNASTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_DownlinkNASTransport_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DownlinkNASTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DownlinkNASTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitialUEMessage_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_InitialUEMessage_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitialUEMessage_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitialUEMessage_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_InitialUEMessage_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_InitialUEMessage_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UplinkNASTransport_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UplinkNASTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UplinkNASTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UplinkNASTransport_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UplinkNASTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UplinkNASTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_NASNonDeliveryIndication_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_NASNonDeliveryIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_NASNonDeliveryIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_NASNonDeliveryIndication_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_NASNonDeliveryIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_NASNonDeliveryIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RerouteNASRequest_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_RerouteNASRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_RerouteNASRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RerouteNASRequest_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_RerouteNASRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_RerouteNASRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_S1AP_criticality_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_value_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ResetIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ResetIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ResetIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ResetIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetAcknowledgeIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ResetAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ResetAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetAcknowledgeIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ResetAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ResetAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ErrorIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ErrorIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ErrorIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ErrorIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ErrorIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ErrorIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_S1SetupRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1SetupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_S1SetupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_S1SetupRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1SetupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_S1SetupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_S1SetupResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1SetupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_S1SetupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_S1SetupResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1SetupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_S1SetupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_S1SetupFailureIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1SetupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_S1SetupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_S1SetupFailureIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1SetupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_S1SetupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBConfigurationUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBConfigurationUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBConfigurationUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBConfigurationUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateAcknowledgeIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBConfigurationUpdateAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateAcknowledgeIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBConfigurationUpdateAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateFailureIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBConfigurationUpdateFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateFailureIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBConfigurationUpdateFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MMEConfigurationUpdateIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEConfigurationUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEConfigurationUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MMEConfigurationUpdateIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEConfigurationUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEConfigurationUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MMEConfigurationUpdateAcknowledgeIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEConfigurationUpdateAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MMEConfigurationUpdateAcknowledgeIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEConfigurationUpdateAcknowledgeIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MMEConfigurationUpdateFailureIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEConfigurationUpdateFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MMEConfigurationUpdateFailureIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEConfigurationUpdateFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_DownlinkS1cdma2000tunnellingIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DownlinkS1cdma2000tunnellingIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_DownlinkS1cdma2000tunnellingIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DownlinkS1cdma2000tunnellingIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UplinkS1cdma2000tunnellingIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UplinkS1cdma2000tunnellingIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UplinkS1cdma2000tunnellingIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UplinkS1cdma2000tunnellingIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UECapabilityInfoIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UECapabilityInfoIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UECapabilityInfoIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UECapabilityInfoIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UECapabilityInfoIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UECapabilityInfoIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBStatusTransferIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBStatusTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBStatusTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBStatusTransferIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBStatusTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBStatusTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MMEStatusTransferIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEStatusTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEStatusTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MMEStatusTransferIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEStatusTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEStatusTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_TraceStartIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TraceStartIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TraceStartIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_TraceStartIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TraceStartIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TraceStartIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_TraceFailureIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TraceFailureIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TraceFailureIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_TraceFailureIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_TraceFailureIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_TraceFailureIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_DeactivateTraceIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DeactivateTraceIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DeactivateTraceIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_DeactivateTraceIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DeactivateTraceIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DeactivateTraceIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellTrafficTraceIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_CellTrafficTraceIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_CellTrafficTraceIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellTrafficTraceIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_CellTrafficTraceIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_CellTrafficTraceIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_LocationReportingControlIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_LocationReportingControlIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_LocationReportingControlIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_LocationReportingControlIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_LocationReportingControlIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_LocationReportingControlIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_LocationReportingFailureIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_LocationReportingFailureIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_LocationReportingFailureIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_LocationReportingFailureIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_LocationReportingFailureIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_LocationReportingFailureIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_LocationReportIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_LocationReportIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_LocationReportIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_LocationReportIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_LocationReportIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_LocationReportIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_OverloadStartIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_OverloadStartIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_OverloadStartIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_OverloadStartIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_OverloadStartIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_OverloadStartIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_OverloadStopIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_OverloadStopIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_OverloadStopIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_OverloadStopIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_OverloadStopIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_OverloadStopIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_WriteReplaceWarningRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_WriteReplaceWarningRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_WriteReplaceWarningRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_WriteReplaceWarningRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_WriteReplaceWarningRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_WriteReplaceWarningRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_WriteReplaceWarningResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_WriteReplaceWarningResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_WriteReplaceWarningResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_WriteReplaceWarningResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_WriteReplaceWarningResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_WriteReplaceWarningResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBDirectInformationTransferIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBDirectInformationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBDirectInformationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBDirectInformationTransferIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBDirectInformationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBDirectInformationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MMEDirectInformationTransferIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEDirectInformationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEDirectInformationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MMEDirectInformationTransferIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEDirectInformationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEDirectInformationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationTransferIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBConfigurationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBConfigurationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationTransferIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBConfigurationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBConfigurationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MMEConfigurationTransferIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEConfigurationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEConfigurationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MMEConfigurationTransferIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMEConfigurationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMEConfigurationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_KillRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_KillRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_KillRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_KillRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_KillRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_KillRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_KillResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_KillResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_KillResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_KillResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_KillResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_KillResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_PWSRestartIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PWSRestartIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PWSRestartIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_PWSRestartIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PWSRestartIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PWSRestartIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_PWSFailureIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PWSFailureIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PWSFailureIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_PWSFailureIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_PWSFailureIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_PWSFailureIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_DownlinkUEAssociatedLPPaTransport_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_DownlinkUEAssociatedLPPaTransport_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UplinkUEAssociatedLPPaTransport_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UplinkUEAssociatedLPPaTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UplinkUEAssociatedLPPaTransport_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UplinkUEAssociatedLPPaTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_DownlinkNonUEAssociatedLPPaTransport_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_DownlinkNonUEAssociatedLPPaTransport_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UplinkNonUEAssociatedLPPaTransport_IEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UplinkNonUEAssociatedLPPaTransport_IEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABModificationIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModificationIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModificationIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABModificationIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModificationIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModificationIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABModificationConfirmIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModificationConfirmIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModificationConfirmIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABModificationConfirmIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABModificationConfirmIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABModificationConfirmIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextModificationIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextModificationIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextModificationConfirmIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationConfirmIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationConfirmIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextModificationConfirmIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextModificationConfirmIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextModificationConfirmIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextSuspendRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextSuspendRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextSuspendRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextSuspendRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextSuspendRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextSuspendRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextSuspendResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextSuspendResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextSuspendResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextSuspendResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextSuspendResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextSuspendResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextResumeRequestIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextResumeRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextResumeRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextResumeRequestIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextResumeRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextResumeRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextResumeResponseIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextResumeResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextResumeResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextResumeResponseIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextResumeResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextResumeResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextResumeFailureIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextResumeFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextResumeFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextResumeFailureIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEContextResumeFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEContextResumeFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ConnectionEstablishmentIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ConnectionEstablishmentIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ConnectionEstablishmentIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ConnectionEstablishmentIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RetrieveUEInformationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_RetrieveUEInformationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_RetrieveUEInformationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RetrieveUEInformationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_RetrieveUEInformationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_RetrieveUEInformationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEInformationTransferIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEInformationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEInformationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEInformationTransferIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_UEInformationTransferIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UEInformationTransferIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBCPRelocationIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBCPRelocationIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBCPRelocationIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBCPRelocationIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_ENBCPRelocationIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_ENBCPRelocationIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MMECPRelocationIndicationIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMECPRelocationIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMECPRelocationIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MMECPRelocationIndicationIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_MMECPRelocationIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_MMECPRelocationIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABDataForwardingItemIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABDataForwardingItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABDataForwardingItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABDataForwardingItemIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABDataForwardingItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABDataForwardingItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemHOReqIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemHOReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemHOReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeSetupItemHOReqIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSetupItemHOReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSetupItemHOReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABAdmittedItemIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABAdmittedItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABAdmittedItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABAdmittedItemIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABAdmittedItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABAdmittedItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABFailedtoSetupItemHOReqAckIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABFailedtoSetupItemHOReqAckIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeSwitchedDLItemIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSwitchedDLItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSwitchedDLItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeSwitchedDLItemIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSwitchedDLItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSwitchedDLItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeSwitchedULItemIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSwitchedULItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSwitchedULItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeSwitchedULItemIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeSwitchedULItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeSwitchedULItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABToBeModifiedItemBearerModIndIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeModifiedItemBearerModIndIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABToBeModifiedItemBearerModIndIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABToBeModifiedItemBearerModIndIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABNotToBeModifiedItemBearerModIndIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABNotToBeModifiedItemBearerModIndIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABFailedToResumeItemResumeReqIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABFailedToResumeItemResumeReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABFailedToResumeItemResumeReqIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABFailedToResumeItemResumeReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_S1AP_id_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABFailedToResumeItemResumeResIEs_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABFailedToResumeItemResumeResIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABFailedToResumeItemResumeResIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABFailedToResumeItemResumeResIEs_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_E_RABFailedToResumeItemResumeResIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_E_RABFailedToResumeItemResumeResIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_2 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_6 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_7 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_8 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_10 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_11 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_12 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_14 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_15 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_16 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_16 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_18 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_19 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_20 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_20 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_22 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_23 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_24 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_26 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_27 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_28 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_28 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_30 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_31 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_31 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_32 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_32 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_34 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_35 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_36 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_38 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_39 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_40 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_40 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_42 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_43 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_44 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_44 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_46 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_46 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_47 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_48 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_50 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_51 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_51 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_52 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_52 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_54 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_54 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_55 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_55 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_56 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_56 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_58 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_58 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_59 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_60 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_62 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_63 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_63 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_64 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_64 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_66 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_66 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_67 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_67 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_68 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_68 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_70 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_70 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_71 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_72 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_74 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_75 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_75 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_76 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_76 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_78 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_78 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_79 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_79 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_80 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_80 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_82 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_82 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_83 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_84 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_86 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_87 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_87 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_88 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_88 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_90 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_90 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_91 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_91 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_92 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_92 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_94 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_94 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_95 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_96 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_98 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_99 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_99 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_100 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_100 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_102 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_102 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_103 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_103 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_104 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_104 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_106 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_106 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_107 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_107 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_108 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_108 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_110 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_110 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_111 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_111 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_112 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_112 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_114 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_114 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_115 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_115 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_116 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_116 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_118 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_118 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_119 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_119 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_120 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_120 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_122 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_122 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_123 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_123 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_124 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_124 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_126 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_126 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_127 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_127 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_128 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_128 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_130 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_130 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_131 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_131 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_132 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_132 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_134 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_134 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_135 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_135 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_136 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_136 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_138 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_138 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_139 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_139 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_140 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_140 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_142 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_142 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_143 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_143 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_144 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_144 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_146 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_146 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_147 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_147 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_148 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_148 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_150 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_150 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_151 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_151 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_152 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_152 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_154 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_154 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_155 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_155 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_156 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_156 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_158 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_158 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_159 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_159 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_160 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_160 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_162 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_162 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_163 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_163 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_164 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_164 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_166 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_166 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_167 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_167 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_168 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_168 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_170 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_170 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_171 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_171 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_172 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_172 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_174 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_174 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_175 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_175 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_176 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_176 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_178 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_178 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_179 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_179 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_180 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_180 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_182 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_182 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_183 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_183 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_184 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_184 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_186 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_186 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_187 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_187 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_188 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_188 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_190 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_190 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_191 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_191 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_192 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_192 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_194 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_194 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_195 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_195 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_196 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_196 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_198 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_198 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_199 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_199 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_200 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_200 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_202 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_202 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_203 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_203 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_204 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_204 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_206 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_206 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_207 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_207 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_208 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_208 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_210 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_210 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_211 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_211 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_212 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_212 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_214 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_214 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_215 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_215 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_216 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_216 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_218 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_218 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_219 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_219 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_220 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_220 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_222 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_222 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_223 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_223 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_224 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_224 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_226 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_226 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_227 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_227 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_228 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_228 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_230 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_230 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_231 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_231 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_232 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_232 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_234 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_234 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_235 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_235 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_236 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_236 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_238 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_238 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_239 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_239 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_240 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_240 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_242 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_242 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_243 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_243 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_244 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_244 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_246 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_246 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_247 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_247 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_248 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_248 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_250 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_250 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_251 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_251 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_252 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_252 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_254 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_254 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_255 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_255 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_256 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_256 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_258 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_258 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_259 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_259 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_260 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_260 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_262 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_262 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_263 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_263 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_264 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_264 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_266 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_266 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_267 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_267 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_268 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_268 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_270 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_270 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_271 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_271 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_272 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_272 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_274 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_274 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_275 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_275 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_276 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_276 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_278 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_278 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_279 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_279 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_280 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_280 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_282 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_282 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_283 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_283 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_284 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_284 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_286 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_286 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_287 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_287 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_288 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_288 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_290 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_290 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_291 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_291 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_292 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_292 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_294 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_294 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_295 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_295 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_296 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_296 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_298 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_298 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_299 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_299 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_300 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_300 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_302 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_302 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_303 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_303 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_304 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_304 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_306 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_306 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_307 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_307 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_308 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_308 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_310 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_310 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_311 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_311 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_312 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_312 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_314 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_314 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_315 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_315 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_316 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_316 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_318 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_318 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_319 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_319 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_320 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_320 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_322 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_322 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_323 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_323 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_324 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_324 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_326 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_326 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_327 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_327 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_328 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_328 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_330 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_330 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_331 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_331 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_332 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_332 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_334 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_334 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_335 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_335 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_336 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_336 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_338 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_338 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_339 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_339 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_340 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_340 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_342 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_342 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_343 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_343 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_344 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_344 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_346 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_346 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_347 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_347 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_348 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_348 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_350 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_350 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_351 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_351 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_352 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_352 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_354 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_354 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_355 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_355 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_356 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_356 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_358 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_358 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_359 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_359 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_360 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_360 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_362 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_362 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_363 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_363 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_364 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_364 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_366 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_366 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_367 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_367 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_368 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_368 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_370 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_370 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_371 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_371 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_372 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_372 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_374 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_374 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_375 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_375 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_376 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_376 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_378 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_378 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_379 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_379 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_380 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_380 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_382 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_382 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_383 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_383 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_384 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_384 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_386 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_386 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_387 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_387 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_388 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_388 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_390 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_390 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_391 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_391 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_392 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_392 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_394 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_394 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_395 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_395 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_396 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_396 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_398 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_398 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_399 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_399 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_400 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_400 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_402 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_402 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_403 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_403 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_404 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_404 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_406 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_406 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_407 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_407 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_408 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_408 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_410 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_410 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_411 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_411 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_412 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_412 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_414 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_414 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_415 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_415 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_416 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_416 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_418 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_418 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_419 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_419 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_420 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_420 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_422 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_422 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_423 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_423 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_424 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_424 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_426 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_426 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_427 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_427 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_428 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_428 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_430 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_430 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_431 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_431 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_432 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_432 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_434 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_434 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_435 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_435 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_436 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_436 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_438 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_438 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_439 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_439 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_440 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_440 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_442 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_442 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_443 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_443 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_444 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_444 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_446 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_446 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_447 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_447 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_448 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_448 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_450 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_450 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_451 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_451 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_452 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_452 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_454 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_454 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_455 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_455 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_456 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_456 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_458 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_458 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_459 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_459 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_460 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_460 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_462 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_462 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_463 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_463 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_464 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_464 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_466 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_466 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_467 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_467 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_468 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_468 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_470 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_470 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_471 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_471 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_472 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_472 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_id_constr_474 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_id_constr_474 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_475 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_475 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_476 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_476 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs__value, choice.E_RABToBeSetupItemBearerSUReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSetupItemBearerSUReq" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABToBeSetupItemBearerSUReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_4 = { + sizeof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs__value), + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs__value, present), + sizeof(((struct S1AP_E_RABToBeSetupItemBearerSUReqIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_4, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_4, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemBearerSUReqIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_2, &asn_PER_memb_S1AP_id_constr_2, memb_S1AP_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABToBeSetupItemBearerSUReqIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_3, &asn_PER_memb_S1AP_criticality_constr_3, memb_S1AP_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_4, + select_E_RABToBeSetupItemBearerSUReqIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_4, &asn_PER_memb_S1AP_value_constr_4, memb_S1AP_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSetupItemBearerSUReqIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemBearerSUReqIEs_specs_1 = { + sizeof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs), + offsetof(struct S1AP_E_RABToBeSetupItemBearerSUReqIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSetupItemBearerSUReqIEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqIEs = { + "E-RABToBeSetupItemBearerSUReqIEs", + "E-RABToBeSetupItemBearerSUReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqIEs_tags_1, + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqIEs_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqIEs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqIEs_tags_1) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqIEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemBearerSUReqIEs_1, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemBearerSUReqIEs_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSUResIEs__value, choice.E_RABSetupItemBearerSURes), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupItemBearerSURes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABSetupItemBearerSURes" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_8[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABSetupItemBearerSURes */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_8 = { + sizeof(struct S1AP_E_RABSetupItemBearerSUResIEs__value), + offsetof(struct S1AP_E_RABSetupItemBearerSUResIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABSetupItemBearerSUResIEs__value, present), + sizeof(((struct S1AP_E_RABSetupItemBearerSUResIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_8, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_8 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_8, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemBearerSUResIEs_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSUResIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_6, &asn_PER_memb_S1AP_id_constr_6, memb_S1AP_id_constraint_5 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSUResIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABSetupItemBearerSUResIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_7, &asn_PER_memb_S1AP_criticality_constr_7, memb_S1AP_criticality_constraint_5 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemBearerSUResIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_8, + select_E_RABSetupItemBearerSUResIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_8, &asn_PER_memb_S1AP_value_constr_8, memb_S1AP_value_constraint_5 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupItemBearerSUResIEs_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupItemBearerSUResIEs_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemBearerSUResIEs_specs_5 = { + sizeof(struct S1AP_E_RABSetupItemBearerSUResIEs), + offsetof(struct S1AP_E_RABSetupItemBearerSUResIEs, _asn_ctx), + asn_MAP_S1AP_E_RABSetupItemBearerSUResIEs_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemBearerSUResIEs = { + "E-RABSetupItemBearerSUResIEs", + "E-RABSetupItemBearerSUResIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupItemBearerSUResIEs_tags_5, + sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSUResIEs_tags_5) + /sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSUResIEs_tags_5[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupItemBearerSUResIEs_tags_5, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSUResIEs_tags_5) + /sizeof(asn_DEF_S1AP_E_RABSetupItemBearerSUResIEs_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupItemBearerSUResIEs_5, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupItemBearerSUResIEs_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_12[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs__value, choice.E_RABToBeModifiedItemBearerModReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeModifiedItemBearerModReq" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_12[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABToBeModifiedItemBearerModReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_12 = { + sizeof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs__value), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs__value, present), + sizeof(((struct S1AP_E_RABToBeModifiedItemBearerModReqIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_12, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_12 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_12, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifiedItemBearerModReqIEs_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_10, &asn_PER_memb_S1AP_id_constr_10, memb_S1AP_id_constraint_9 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABToBeModifiedItemBearerModReqIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_11, &asn_PER_memb_S1AP_criticality_constr_11, memb_S1AP_criticality_constraint_9 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_12, + select_E_RABToBeModifiedItemBearerModReqIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_12, &asn_PER_memb_S1AP_value_constr_12, memb_S1AP_value_constraint_9 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReqIEs_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeModifiedItemBearerModReqIEs_tag2el_9[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifiedItemBearerModReqIEs_specs_9 = { + sizeof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModReqIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeModifiedItemBearerModReqIEs_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReqIEs = { + "E-RABToBeModifiedItemBearerModReqIEs", + "E-RABToBeModifiedItemBearerModReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReqIEs_tags_9, + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReqIEs_tags_9) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReqIEs_tags_9[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReqIEs_tags_9, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReqIEs_tags_9) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReqIEs_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeModifiedItemBearerModReqIEs_9, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeModifiedItemBearerModReqIEs_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_16[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModResIEs__value, choice.E_RABModifyItemBearerModRes), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyItemBearerModRes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABModifyItemBearerModRes" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_16[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABModifyItemBearerModRes */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_16 = { + sizeof(struct S1AP_E_RABModifyItemBearerModResIEs__value), + offsetof(struct S1AP_E_RABModifyItemBearerModResIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABModifyItemBearerModResIEs__value, present), + sizeof(((struct S1AP_E_RABModifyItemBearerModResIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_16, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_16 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_16, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModResIEs_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModResIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_14, &asn_PER_memb_S1AP_id_constr_14, memb_S1AP_id_constraint_13 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModResIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABModifyItemBearerModResIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_15, &asn_PER_memb_S1AP_criticality_constr_15, memb_S1AP_criticality_constraint_13 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModResIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_16, + select_E_RABModifyItemBearerModResIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_16, &asn_PER_memb_S1AP_value_constr_16, memb_S1AP_value_constraint_13 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyItemBearerModResIEs_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyItemBearerModResIEs_tag2el_13[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModResIEs_specs_13 = { + sizeof(struct S1AP_E_RABModifyItemBearerModResIEs), + offsetof(struct S1AP_E_RABModifyItemBearerModResIEs, _asn_ctx), + asn_MAP_S1AP_E_RABModifyItemBearerModResIEs_tag2el_13, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModResIEs = { + "E-RABModifyItemBearerModResIEs", + "E-RABModifyItemBearerModResIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyItemBearerModResIEs_tags_13, + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModResIEs_tags_13) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModResIEs_tags_13[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyItemBearerModResIEs_tags_13, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModResIEs_tags_13) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModResIEs_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyItemBearerModResIEs_13, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyItemBearerModResIEs_specs_13 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_20[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseItemBearerRelCompIEs__value, choice.E_RABReleaseItemBearerRelComp), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABReleaseItemBearerRelComp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABReleaseItemBearerRelComp" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_20[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABReleaseItemBearerRelComp */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_20 = { + sizeof(struct S1AP_E_RABReleaseItemBearerRelCompIEs__value), + offsetof(struct S1AP_E_RABReleaseItemBearerRelCompIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABReleaseItemBearerRelCompIEs__value, present), + sizeof(((struct S1AP_E_RABReleaseItemBearerRelCompIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_20, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_20 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_20, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_20 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseItemBearerRelCompIEs_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseItemBearerRelCompIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_18, &asn_PER_memb_S1AP_id_constr_18, memb_S1AP_id_constraint_17 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseItemBearerRelCompIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABReleaseItemBearerRelCompIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_19, &asn_PER_memb_S1AP_criticality_constr_19, memb_S1AP_criticality_constraint_17 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseItemBearerRelCompIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_20, + select_E_RABReleaseItemBearerRelCompIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_20, &asn_PER_memb_S1AP_value_constr_20, memb_S1AP_value_constraint_17 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseItemBearerRelCompIEs_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABReleaseItemBearerRelCompIEs_tag2el_17[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseItemBearerRelCompIEs_specs_17 = { + sizeof(struct S1AP_E_RABReleaseItemBearerRelCompIEs), + offsetof(struct S1AP_E_RABReleaseItemBearerRelCompIEs, _asn_ctx), + asn_MAP_S1AP_E_RABReleaseItemBearerRelCompIEs_tag2el_17, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseItemBearerRelCompIEs = { + "E-RABReleaseItemBearerRelCompIEs", + "E-RABReleaseItemBearerRelCompIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABReleaseItemBearerRelCompIEs_tags_17, + sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelCompIEs_tags_17) + /sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelCompIEs_tags_17[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseItemBearerRelCompIEs_tags_17, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelCompIEs_tags_17) + /sizeof(asn_DEF_S1AP_E_RABReleaseItemBearerRelCompIEs_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseItemBearerRelCompIEs_17, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseItemBearerRelCompIEs_specs_17 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_24[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs__value, choice.E_RABToBeSetupItemCtxtSUReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSetupItemCtxtSUReq" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_24[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABToBeSetupItemCtxtSUReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_24 = { + sizeof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs__value), + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs__value, present), + sizeof(((struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_24, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_24 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_24, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_22, &asn_PER_memb_S1AP_id_constr_22, memb_S1AP_id_constraint_21 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABToBeSetupItemCtxtSUReqIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_23, &asn_PER_memb_S1AP_criticality_constr_23, memb_S1AP_criticality_constraint_21 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_24, + select_E_RABToBeSetupItemCtxtSUReqIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_24, &asn_PER_memb_S1AP_value_constr_24, memb_S1AP_value_constraint_21 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_tag2el_21[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_specs_21 = { + sizeof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs), + offsetof(struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_tag2el_21, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqIEs = { + "E-RABToBeSetupItemCtxtSUReqIEs", + "E-RABToBeSetupItemCtxtSUReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_tags_21, + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_tags_21) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_tags_21[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_tags_21, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_tags_21) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_21, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSUResIEs__value, choice.E_RABSetupItemCtxtSURes), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupItemCtxtSURes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABSetupItemCtxtSURes" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_28[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABSetupItemCtxtSURes */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_28 = { + sizeof(struct S1AP_E_RABSetupItemCtxtSUResIEs__value), + offsetof(struct S1AP_E_RABSetupItemCtxtSUResIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABSetupItemCtxtSUResIEs__value, present), + sizeof(((struct S1AP_E_RABSetupItemCtxtSUResIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_28, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_28 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_28, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_28 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemCtxtSUResIEs_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSUResIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_26, &asn_PER_memb_S1AP_id_constr_26, memb_S1AP_id_constraint_25 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSUResIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABSetupItemCtxtSUResIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_27, &asn_PER_memb_S1AP_criticality_constr_27, memb_S1AP_criticality_constraint_25 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupItemCtxtSUResIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_28, + select_E_RABSetupItemCtxtSUResIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_28, &asn_PER_memb_S1AP_value_constr_28, memb_S1AP_value_constraint_25 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupItemCtxtSUResIEs_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupItemCtxtSUResIEs_tag2el_25[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemCtxtSUResIEs_specs_25 = { + sizeof(struct S1AP_E_RABSetupItemCtxtSUResIEs), + offsetof(struct S1AP_E_RABSetupItemCtxtSUResIEs, _asn_ctx), + asn_MAP_S1AP_E_RABSetupItemCtxtSUResIEs_tag2el_25, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemCtxtSUResIEs = { + "E-RABSetupItemCtxtSUResIEs", + "E-RABSetupItemCtxtSUResIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupItemCtxtSUResIEs_tags_25, + sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSUResIEs_tags_25) + /sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSUResIEs_tags_25[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupItemCtxtSUResIEs_tags_25, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSUResIEs_tags_25) + /sizeof(asn_DEF_S1AP_E_RABSetupItemCtxtSUResIEs_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupItemCtxtSUResIEs_25, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupItemCtxtSUResIEs_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_32[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIItemIEs__value, choice.TAIItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAIItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAIItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_32[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* TAIItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_32 = { + sizeof(struct S1AP_TAIItemIEs__value), + offsetof(struct S1AP_TAIItemIEs__value, _asn_ctx), + offsetof(struct S1AP_TAIItemIEs__value, present), + sizeof(((struct S1AP_TAIItemIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_32, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_32 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_32, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_32 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TAIItemIEs_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_30, &asn_PER_memb_S1AP_id_constr_30, memb_S1AP_id_constraint_29 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_TAIItemIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_31, &asn_PER_memb_S1AP_criticality_constr_31, memb_S1AP_criticality_constraint_29 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_32, + select_TAIItemIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_32, &asn_PER_memb_S1AP_value_constr_32, memb_S1AP_value_constraint_29 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAIItemIEs_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAIItemIEs_tag2el_29[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAIItemIEs_specs_29 = { + sizeof(struct S1AP_TAIItemIEs), + offsetof(struct S1AP_TAIItemIEs, _asn_ctx), + asn_MAP_S1AP_TAIItemIEs_tag2el_29, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAIItemIEs = { + "TAIItemIEs", + "TAIItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAIItemIEs_tags_29, + sizeof(asn_DEF_S1AP_TAIItemIEs_tags_29) + /sizeof(asn_DEF_S1AP_TAIItemIEs_tags_29[0]), /* 1 */ + asn_DEF_S1AP_TAIItemIEs_tags_29, /* Same as above */ + sizeof(asn_DEF_S1AP_TAIItemIEs_tags_29) + /sizeof(asn_DEF_S1AP_TAIItemIEs_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAIItemIEs_29, + 3, /* Elements count */ + &asn_SPC_S1AP_TAIItemIEs_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_36[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes__value, choice.UE_associatedLogicalS1_ConnectionItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-associatedLogicalS1-ConnectionItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_36[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* UE-associatedLogicalS1-ConnectionItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_36 = { + sizeof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes__value), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes__value, _asn_ctx), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes__value, present), + sizeof(((struct S1AP_UE_associatedLogicalS1_ConnectionItemRes__value *)0)->present), + asn_MAP_S1AP_value_tag2el_36, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_36 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_36, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemRes_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_34, &asn_PER_memb_S1AP_id_constr_34, memb_S1AP_id_constraint_33 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UE_associatedLogicalS1_ConnectionItemRes_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_35, &asn_PER_memb_S1AP_criticality_constr_35, memb_S1AP_criticality_constraint_33 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_36, + select_UE_associatedLogicalS1_ConnectionItemRes_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_36, &asn_PER_memb_S1AP_value_constr_36, memb_S1AP_value_constraint_33 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemRes_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItemRes_tag2el_33[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemRes_specs_33 = { + sizeof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemRes, _asn_ctx), + asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItemRes_tag2el_33, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemRes = { + "UE-associatedLogicalS1-ConnectionItemRes", + "UE-associatedLogicalS1-ConnectionItemRes", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemRes_tags_33, + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemRes_tags_33) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemRes_tags_33[0]), /* 1 */ + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemRes_tags_33, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemRes_tags_33) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemRes_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemRes_33, + 3, /* Elements count */ + &asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemRes_specs_33 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_40[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck__value, choice.UE_associatedLogicalS1_ConnectionItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-associatedLogicalS1-ConnectionItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_40[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* UE-associatedLogicalS1-ConnectionItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_40 = { + sizeof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck__value), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck__value, _asn_ctx), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck__value, present), + sizeof(((struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck__value *)0)->present), + asn_MAP_S1AP_value_tag2el_40, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_40 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_40, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_40 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_38, &asn_PER_memb_S1AP_id_constr_38, memb_S1AP_id_constraint_37 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UE_associatedLogicalS1_ConnectionItemResAck_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_39, &asn_PER_memb_S1AP_criticality_constr_39, memb_S1AP_criticality_constraint_37 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_40, + select_UE_associatedLogicalS1_ConnectionItemResAck_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_40, &asn_PER_memb_S1AP_value_constr_40, memb_S1AP_value_constraint_37 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_tag2el_37[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_specs_37 = { + sizeof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck, _asn_ctx), + asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_tag2el_37, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemResAck = { + "UE-associatedLogicalS1-ConnectionItemResAck", + "UE-associatedLogicalS1-ConnectionItemResAck", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_tags_37, + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_tags_37) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_tags_37[0]), /* 1 */ + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_tags_37, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_tags_37) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_37, + 3, /* Elements count */ + &asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_specs_37 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_44[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModConfIEs__value, choice.E_RABModifyItemBearerModConf), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyItemBearerModConf, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABModifyItemBearerModConf" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_44[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABModifyItemBearerModConf */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_44 = { + sizeof(struct S1AP_E_RABModifyItemBearerModConfIEs__value), + offsetof(struct S1AP_E_RABModifyItemBearerModConfIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABModifyItemBearerModConfIEs__value, present), + sizeof(((struct S1AP_E_RABModifyItemBearerModConfIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_44, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_44 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_44, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_44 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModConfIEs_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModConfIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_42, &asn_PER_memb_S1AP_id_constr_42, memb_S1AP_id_constraint_41 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModConfIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABModifyItemBearerModConfIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_43, &asn_PER_memb_S1AP_criticality_constr_43, memb_S1AP_criticality_constraint_41 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyItemBearerModConfIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_44, + select_E_RABModifyItemBearerModConfIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_44, &asn_PER_memb_S1AP_value_constr_44, memb_S1AP_value_constraint_41 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyItemBearerModConfIEs_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyItemBearerModConfIEs_tag2el_41[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModConfIEs_specs_41 = { + sizeof(struct S1AP_E_RABModifyItemBearerModConfIEs), + offsetof(struct S1AP_E_RABModifyItemBearerModConfIEs, _asn_ctx), + asn_MAP_S1AP_E_RABModifyItemBearerModConfIEs_tag2el_41, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModConfIEs = { + "E-RABModifyItemBearerModConfIEs", + "E-RABModifyItemBearerModConfIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyItemBearerModConfIEs_tags_41, + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConfIEs_tags_41) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConfIEs_tags_41[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyItemBearerModConfIEs_tags_41, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConfIEs_tags_41) + /sizeof(asn_DEF_S1AP_E_RABModifyItemBearerModConfIEs_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyItemBearerModConfIEs_41, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyItemBearerModConfIEs_specs_41 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_48[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__value, choice.Bearers_SubjectToStatusTransfer_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Bearers-SubjectToStatusTransfer-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_48[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* Bearers-SubjectToStatusTransfer-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_48 = { + sizeof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__value), + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__value, _asn_ctx), + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__value, present), + sizeof(((struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_48, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_48 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_48, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_46, &asn_PER_memb_S1AP_id_constr_46, memb_S1AP_id_constraint_45 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_Bearers_SubjectToStatusTransfer_ItemIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_47, &asn_PER_memb_S1AP_criticality_constr_47, memb_S1AP_criticality_constraint_45 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_48, + select_Bearers_SubjectToStatusTransfer_ItemIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_48, &asn_PER_memb_S1AP_value_constr_48, memb_S1AP_value_constraint_45 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_tag2el_45[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_specs_45 = { + sizeof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs), + offsetof(struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs, _asn_ctx), + asn_MAP_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_tag2el_45, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs = { + "Bearers-SubjectToStatusTransfer-ItemIEs", + "Bearers-SubjectToStatusTransfer-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_tags_45, + sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_tags_45) + /sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_tags_45[0]), /* 1 */ + asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_tags_45, /* Same as above */ + sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_tags_45) + /sizeof(asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_45, + 3, /* Elements count */ + &asn_SPC_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_specs_45 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_52[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABInformationListIEs__value, choice.E_RABInformationListItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABInformationListItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABInformationListItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_52[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABInformationListItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_52 = { + sizeof(struct S1AP_E_RABInformationListIEs__value), + offsetof(struct S1AP_E_RABInformationListIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABInformationListIEs__value, present), + sizeof(((struct S1AP_E_RABInformationListIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_52, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_52 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_52, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_52 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABInformationListIEs_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABInformationListIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_50, &asn_PER_memb_S1AP_id_constr_50, memb_S1AP_id_constraint_49 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABInformationListIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABInformationListIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_51, &asn_PER_memb_S1AP_criticality_constr_51, memb_S1AP_criticality_constraint_49 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABInformationListIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_52, + select_E_RABInformationListIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_52, &asn_PER_memb_S1AP_value_constr_52, memb_S1AP_value_constraint_49 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABInformationListIEs_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABInformationListIEs_tag2el_49[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABInformationListIEs_specs_49 = { + sizeof(struct S1AP_E_RABInformationListIEs), + offsetof(struct S1AP_E_RABInformationListIEs, _asn_ctx), + asn_MAP_S1AP_E_RABInformationListIEs_tag2el_49, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABInformationListIEs = { + "E-RABInformationListIEs", + "E-RABInformationListIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABInformationListIEs_tags_49, + sizeof(asn_DEF_S1AP_E_RABInformationListIEs_tags_49) + /sizeof(asn_DEF_S1AP_E_RABInformationListIEs_tags_49[0]), /* 1 */ + asn_DEF_S1AP_E_RABInformationListIEs_tags_49, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABInformationListIEs_tags_49) + /sizeof(asn_DEF_S1AP_E_RABInformationListIEs_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABInformationListIEs_49, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABInformationListIEs_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_56[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABItemIEs__value, choice.E_RABItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_56[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_56 = { + sizeof(struct S1AP_E_RABItemIEs__value), + offsetof(struct S1AP_E_RABItemIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABItemIEs__value, present), + sizeof(((struct S1AP_E_RABItemIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_56, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_56 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_56, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_56 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABItemIEs_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_54, &asn_PER_memb_S1AP_id_constr_54, memb_S1AP_id_constraint_53 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABItemIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_55, &asn_PER_memb_S1AP_criticality_constr_55, memb_S1AP_criticality_constraint_53 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_56, + select_E_RABItemIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_56, &asn_PER_memb_S1AP_value_constr_56, memb_S1AP_value_constraint_53 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABItemIEs_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABItemIEs_tag2el_53[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABItemIEs_specs_53 = { + sizeof(struct S1AP_E_RABItemIEs), + offsetof(struct S1AP_E_RABItemIEs, _asn_ctx), + asn_MAP_S1AP_E_RABItemIEs_tag2el_53, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABItemIEs = { + "E-RABItemIEs", + "E-RABItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABItemIEs_tags_53, + sizeof(asn_DEF_S1AP_E_RABItemIEs_tags_53) + /sizeof(asn_DEF_S1AP_E_RABItemIEs_tags_53[0]), /* 1 */ + asn_DEF_S1AP_E_RABItemIEs_tags_53, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABItemIEs_tags_53) + /sizeof(asn_DEF_S1AP_E_RABItemIEs_tags_53[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABItemIEs_53, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABItemIEs_specs_53 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_60[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MDTMode_ExtensionIE__value, choice.LoggedMBSFNMDT), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LoggedMBSFNMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LoggedMBSFNMDT" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_60[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* LoggedMBSFNMDT */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_60 = { + sizeof(struct S1AP_MDTMode_ExtensionIE__value), + offsetof(struct S1AP_MDTMode_ExtensionIE__value, _asn_ctx), + offsetof(struct S1AP_MDTMode_ExtensionIE__value, present), + sizeof(((struct S1AP_MDTMode_ExtensionIE__value *)0)->present), + asn_MAP_S1AP_value_tag2el_60, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_60 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_60, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MDTMode_ExtensionIE_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MDTMode_ExtensionIE, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_58, &asn_PER_memb_S1AP_id_constr_58, memb_S1AP_id_constraint_57 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MDTMode_ExtensionIE, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_MDTMode_ExtensionIE_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_59, &asn_PER_memb_S1AP_criticality_constr_59, memb_S1AP_criticality_constraint_57 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MDTMode_ExtensionIE, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_60, + select_MDTMode_ExtensionIE_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_60, &asn_PER_memb_S1AP_value_constr_60, memb_S1AP_value_constraint_57 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MDTMode_ExtensionIE_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MDTMode_ExtensionIE_tag2el_57[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MDTMode_ExtensionIE_specs_57 = { + sizeof(struct S1AP_MDTMode_ExtensionIE), + offsetof(struct S1AP_MDTMode_ExtensionIE, _asn_ctx), + asn_MAP_S1AP_MDTMode_ExtensionIE_tag2el_57, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MDTMode_ExtensionIE = { + "MDTMode-ExtensionIE", + "MDTMode-ExtensionIE", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MDTMode_ExtensionIE_tags_57, + sizeof(asn_DEF_S1AP_MDTMode_ExtensionIE_tags_57) + /sizeof(asn_DEF_S1AP_MDTMode_ExtensionIE_tags_57[0]), /* 1 */ + asn_DEF_S1AP_MDTMode_ExtensionIE_tags_57, /* Same as above */ + sizeof(asn_DEF_S1AP_MDTMode_ExtensionIE_tags_57) + /sizeof(asn_DEF_S1AP_MDTMode_ExtensionIE_tags_57[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MDTMode_ExtensionIE_57, + 3, /* Elements count */ + &asn_SPC_S1AP_MDTMode_ExtensionIE_specs_57 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_64[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellItemIEs__value, choice.RecommendedCellItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RecommendedCellItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RecommendedCellItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_64[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RecommendedCellItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_64 = { + sizeof(struct S1AP_RecommendedCellItemIEs__value), + offsetof(struct S1AP_RecommendedCellItemIEs__value, _asn_ctx), + offsetof(struct S1AP_RecommendedCellItemIEs__value, present), + sizeof(((struct S1AP_RecommendedCellItemIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_64, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_64 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_64, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_64 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellItemIEs_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_62, &asn_PER_memb_S1AP_id_constr_62, memb_S1AP_id_constraint_61 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_RecommendedCellItemIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_63, &asn_PER_memb_S1AP_criticality_constr_63, memb_S1AP_criticality_constraint_61 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_64, + select_RecommendedCellItemIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_64, &asn_PER_memb_S1AP_value_constr_64, memb_S1AP_value_constraint_61 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedCellItemIEs_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedCellItemIEs_tag2el_61[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedCellItemIEs_specs_61 = { + sizeof(struct S1AP_RecommendedCellItemIEs), + offsetof(struct S1AP_RecommendedCellItemIEs, _asn_ctx), + asn_MAP_S1AP_RecommendedCellItemIEs_tag2el_61, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellItemIEs = { + "RecommendedCellItemIEs", + "RecommendedCellItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedCellItemIEs_tags_61, + sizeof(asn_DEF_S1AP_RecommendedCellItemIEs_tags_61) + /sizeof(asn_DEF_S1AP_RecommendedCellItemIEs_tags_61[0]), /* 1 */ + asn_DEF_S1AP_RecommendedCellItemIEs_tags_61, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedCellItemIEs_tags_61) + /sizeof(asn_DEF_S1AP_RecommendedCellItemIEs_tags_61[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedCellItemIEs_61, + 3, /* Elements count */ + &asn_SPC_S1AP_RecommendedCellItemIEs_specs_61 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_68[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBItemIEs__value, choice.RecommendedENBItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RecommendedENBItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RecommendedENBItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_68[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RecommendedENBItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_68 = { + sizeof(struct S1AP_RecommendedENBItemIEs__value), + offsetof(struct S1AP_RecommendedENBItemIEs__value, _asn_ctx), + offsetof(struct S1AP_RecommendedENBItemIEs__value, present), + sizeof(((struct S1AP_RecommendedENBItemIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_68, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_68 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_68, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_68 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBItemIEs_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_66, &asn_PER_memb_S1AP_id_constr_66, memb_S1AP_id_constraint_65 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_RecommendedENBItemIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_67, &asn_PER_memb_S1AP_criticality_constr_67, memb_S1AP_criticality_constraint_65 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_68, + select_RecommendedENBItemIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_68, &asn_PER_memb_S1AP_value_constr_68, memb_S1AP_value_constraint_65 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedENBItemIEs_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedENBItemIEs_tag2el_65[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedENBItemIEs_specs_65 = { + sizeof(struct S1AP_RecommendedENBItemIEs), + offsetof(struct S1AP_RecommendedENBItemIEs, _asn_ctx), + asn_MAP_S1AP_RecommendedENBItemIEs_tag2el_65, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBItemIEs = { + "RecommendedENBItemIEs", + "RecommendedENBItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedENBItemIEs_tags_65, + sizeof(asn_DEF_S1AP_RecommendedENBItemIEs_tags_65) + /sizeof(asn_DEF_S1AP_RecommendedENBItemIEs_tags_65[0]), /* 1 */ + asn_DEF_S1AP_RecommendedENBItemIEs_tags_65, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedENBItemIEs_tags_65) + /sizeof(asn_DEF_S1AP_RecommendedENBItemIEs_tags_65[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedENBItemIEs_65, + 3, /* Elements count */ + &asn_SPC_S1AP_RecommendedENBItemIEs_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_72[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformation_ExtensionIE__value, choice.SONInformationReport), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_SONInformationReport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SONInformationReport" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_72[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rLFReportInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_72 = { + sizeof(struct S1AP_SONInformation_ExtensionIE__value), + offsetof(struct S1AP_SONInformation_ExtensionIE__value, _asn_ctx), + offsetof(struct S1AP_SONInformation_ExtensionIE__value, present), + sizeof(((struct S1AP_SONInformation_ExtensionIE__value *)0)->present), + asn_MAP_S1AP_value_tag2el_72, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_72 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_72, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_SONInformation_ExtensionIE_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformation_ExtensionIE, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_70, &asn_PER_memb_S1AP_id_constr_70, memb_S1AP_id_constraint_69 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformation_ExtensionIE, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_SONInformation_ExtensionIE_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_71, &asn_PER_memb_S1AP_criticality_constr_71, memb_S1AP_criticality_constraint_69 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformation_ExtensionIE, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_72, + select_SONInformation_ExtensionIE_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_72, &asn_PER_memb_S1AP_value_constr_72, memb_S1AP_value_constraint_69 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SONInformation_ExtensionIE_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SONInformation_ExtensionIE_tag2el_69[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SONInformation_ExtensionIE_specs_69 = { + sizeof(struct S1AP_SONInformation_ExtensionIE), + offsetof(struct S1AP_SONInformation_ExtensionIE, _asn_ctx), + asn_MAP_S1AP_SONInformation_ExtensionIE_tag2el_69, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformation_ExtensionIE = { + "SONInformation-ExtensionIE", + "SONInformation-ExtensionIE", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SONInformation_ExtensionIE_tags_69, + sizeof(asn_DEF_S1AP_SONInformation_ExtensionIE_tags_69) + /sizeof(asn_DEF_S1AP_SONInformation_ExtensionIE_tags_69[0]), /* 1 */ + asn_DEF_S1AP_SONInformation_ExtensionIE_tags_69, /* Same as above */ + sizeof(asn_DEF_S1AP_SONInformation_ExtensionIE_tags_69) + /sizeof(asn_DEF_S1AP_SONInformation_ExtensionIE_tags_69[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SONInformation_ExtensionIE_69, + 3, /* Elements count */ + &asn_SPC_S1AP_SONInformation_ExtensionIE_specs_69 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_76[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.HandoverType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_HandoverType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.TargetID), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_TargetID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TargetID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.Direct_Forwarding_Path_Availability), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Direct_Forwarding_Path_Availability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Direct-Forwarding-Path-Availability" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.SRVCCHOIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_SRVCCHOIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCHOIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.Source_ToTarget_TransparentContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Source_ToTarget_TransparentContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Source-ToTarget-TransparentContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.MSClassmark2), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_MSClassmark2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MSClassmark2" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.MSClassmark3), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_MSClassmark3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MSClassmark3" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.CSG_Id), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_CSG_Id, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-Id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.CellAccessMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CellAccessMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellAccessMode" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs__value, choice.PS_ServiceNotAvailable), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_PS_ServiceNotAvailable, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PS-ServiceNotAvailable" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_76[] = { 0, 1, 10, 7, 8, 9, 12, 2, 5, 6, 11, 3, 4 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_76[] = { 0, 1, 7, 11, 12, 8, 9, 3, 4, 5, 2, 10, 6 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_76[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 10, 0, 0 }, /* CSG-Id */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, 0, 2 }, /* Source-ToTarget-TransparentContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 8, -1, 1 }, /* MSClassmark2 */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 9, -2, 0 }, /* MSClassmark3 */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 4 }, /* HandoverType */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, -1, 3 }, /* Direct-Forwarding-Path-Availability */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -2, 2 }, /* SRVCCHOIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, -3, 1 }, /* CellAccessMode */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 12, -4, 0 }, /* PS-ServiceNotAvailable */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 1 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 4, -1, 0 }, /* targeteNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 1 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 4, -1, 0 }, /* targetRNC-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 1 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 4, -1, 0 }, /* cGI */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_76 = { + sizeof(struct S1AP_HandoverRequiredIEs__value), + offsetof(struct S1AP_HandoverRequiredIEs__value, _asn_ctx), + offsetof(struct S1AP_HandoverRequiredIEs__value, present), + sizeof(((struct S1AP_HandoverRequiredIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_76, + 19, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_76, + asn_MAP_S1AP_value_from_canonical_76, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_76 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_76, + 13, /* Elements count */ + &asn_SPC_S1AP_value_specs_76 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverRequiredIEs_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_74, &asn_PER_memb_S1AP_id_constr_74, memb_S1AP_id_constraint_73 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_HandoverRequiredIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_75, &asn_PER_memb_S1AP_criticality_constr_75, memb_S1AP_criticality_constraint_73 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequiredIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_76, + select_HandoverRequiredIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_76, &asn_PER_memb_S1AP_value_constr_76, memb_S1AP_value_constraint_73 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverRequiredIEs_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverRequiredIEs_tag2el_73[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequiredIEs_specs_73 = { + sizeof(struct S1AP_HandoverRequiredIEs), + offsetof(struct S1AP_HandoverRequiredIEs, _asn_ctx), + asn_MAP_S1AP_HandoverRequiredIEs_tag2el_73, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequiredIEs = { + "HandoverRequiredIEs", + "HandoverRequiredIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverRequiredIEs_tags_73, + sizeof(asn_DEF_S1AP_HandoverRequiredIEs_tags_73) + /sizeof(asn_DEF_S1AP_HandoverRequiredIEs_tags_73[0]), /* 1 */ + asn_DEF_S1AP_HandoverRequiredIEs_tags_73, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverRequiredIEs_tags_73) + /sizeof(asn_DEF_S1AP_HandoverRequiredIEs_tags_73[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverRequiredIEs_73, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverRequiredIEs_specs_73 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_80[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs__value, choice.HandoverType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_HandoverType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs__value, choice.NASSecurityParametersfromE_UTRAN), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_NASSecurityParametersfromE_UTRAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NASSecurityParametersfromE-UTRAN" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs__value, choice.E_RABSubjecttoDataForwardingList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSubjecttoDataForwardingList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABSubjecttoDataForwardingList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs__value, choice.E_RABList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs__value, choice.Target_ToSource_TransparentContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Target_ToSource_TransparentContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Target-ToSource-TransparentContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_80[] = { 0, 1, 6, 3, 2, 7, 4, 5 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_80[] = { 0, 1, 4, 3, 6, 7, 2, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_80[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 1 }, /* NASSecurityParametersfromE-UTRAN */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 0 }, /* Target-ToSource-TransparentContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* HandoverType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 2 }, /* E-RABSubjecttoDataForwardingList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -1, 1 }, /* E-RABList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_80 = { + sizeof(struct S1AP_HandoverCommandIEs__value), + offsetof(struct S1AP_HandoverCommandIEs__value, _asn_ctx), + offsetof(struct S1AP_HandoverCommandIEs__value, present), + sizeof(((struct S1AP_HandoverCommandIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_80, + 8, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_80, + asn_MAP_S1AP_value_from_canonical_80, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_80 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_80, + 8, /* Elements count */ + &asn_SPC_S1AP_value_specs_80 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverCommandIEs_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_78, &asn_PER_memb_S1AP_id_constr_78, memb_S1AP_id_constraint_77 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_HandoverCommandIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_79, &asn_PER_memb_S1AP_criticality_constr_79, memb_S1AP_criticality_constraint_77 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCommandIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_80, + select_HandoverCommandIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_80, &asn_PER_memb_S1AP_value_constr_80, memb_S1AP_value_constraint_77 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverCommandIEs_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverCommandIEs_tag2el_77[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCommandIEs_specs_77 = { + sizeof(struct S1AP_HandoverCommandIEs), + offsetof(struct S1AP_HandoverCommandIEs, _asn_ctx), + asn_MAP_S1AP_HandoverCommandIEs_tag2el_77, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCommandIEs = { + "HandoverCommandIEs", + "HandoverCommandIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverCommandIEs_tags_77, + sizeof(asn_DEF_S1AP_HandoverCommandIEs_tags_77) + /sizeof(asn_DEF_S1AP_HandoverCommandIEs_tags_77[0]), /* 1 */ + asn_DEF_S1AP_HandoverCommandIEs_tags_77, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverCommandIEs_tags_77) + /sizeof(asn_DEF_S1AP_HandoverCommandIEs_tags_77[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverCommandIEs_77, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverCommandIEs_specs_77 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_84[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverPreparationFailureIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverPreparationFailureIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverPreparationFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverPreparationFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_84[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_84[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_84[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_84 = { + sizeof(struct S1AP_HandoverPreparationFailureIEs__value), + offsetof(struct S1AP_HandoverPreparationFailureIEs__value, _asn_ctx), + offsetof(struct S1AP_HandoverPreparationFailureIEs__value, present), + sizeof(((struct S1AP_HandoverPreparationFailureIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_84, + 8, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_84, + asn_MAP_S1AP_value_from_canonical_84, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_84 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_84, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverPreparationFailureIEs_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverPreparationFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_82, &asn_PER_memb_S1AP_id_constr_82, memb_S1AP_id_constraint_81 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverPreparationFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_HandoverPreparationFailureIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_83, &asn_PER_memb_S1AP_criticality_constr_83, memb_S1AP_criticality_constraint_81 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverPreparationFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_84, + select_HandoverPreparationFailureIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_84, &asn_PER_memb_S1AP_value_constr_84, memb_S1AP_value_constraint_81 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverPreparationFailureIEs_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverPreparationFailureIEs_tag2el_81[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverPreparationFailureIEs_specs_81 = { + sizeof(struct S1AP_HandoverPreparationFailureIEs), + offsetof(struct S1AP_HandoverPreparationFailureIEs, _asn_ctx), + asn_MAP_S1AP_HandoverPreparationFailureIEs_tag2el_81, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverPreparationFailureIEs = { + "HandoverPreparationFailureIEs", + "HandoverPreparationFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverPreparationFailureIEs_tags_81, + sizeof(asn_DEF_S1AP_HandoverPreparationFailureIEs_tags_81) + /sizeof(asn_DEF_S1AP_HandoverPreparationFailureIEs_tags_81[0]), /* 1 */ + asn_DEF_S1AP_HandoverPreparationFailureIEs_tags_81, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverPreparationFailureIEs_tags_81) + /sizeof(asn_DEF_S1AP_HandoverPreparationFailureIEs_tags_81[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverPreparationFailureIEs_81, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverPreparationFailureIEs_specs_81 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_88[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.HandoverType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_HandoverType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.UEAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.E_RABToBeSetupListHOReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSetupListHOReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSetupListHOReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.Source_ToTarget_TransparentContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Source_ToTarget_TransparentContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Source-ToTarget-TransparentContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.UESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.HandoverRestrictionList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRestrictionList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.TraceActivation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TraceActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TraceActivation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.RequestType), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RequestType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RequestType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.SRVCCOperationPossible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_SRVCCOperationPossible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCOperationPossible" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.SecurityContext), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SecurityContext, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecurityContext" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.NASSecurityParameterstoE_UTRAN), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_NASSecurityParameterstoE_UTRAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NASSecurityParameterstoE-UTRAN" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.CSG_Id), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_CSG_Id, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-Id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.GUMMEI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.ManagementBasedMDTAllowed), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_ManagementBasedMDTAllowed, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ManagementBasedMDTAllowed" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.MDTPLMNList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MDTPLMNList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDTPLMNList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.Masked_IMEISV), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_Masked_IMEISV, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Masked-IMEISV" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.ProSeAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProSeAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.UEUserPlaneCIoTSupportIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEUserPlaneCIoTSupportIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.V2XServicesAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_V2XServicesAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "V2XServicesAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.UESidelinkAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESidelinkAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs__value, choice.EnhancedCoverageRestricted), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_EnhancedCoverageRestricted, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EnhancedCoverageRestricted" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_88[] = { 0, 18, 13, 12, 5, 1, 14, 10, 21, 16, 24, 3, 15, 17, 19, 20, 22, 23, 4, 6, 7, 8, 9, 11, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_88[] = { 0, 5, 24, 11, 18, 4, 19, 20, 21, 22, 7, 23, 3, 2, 6, 12, 9, 13, 1, 14, 15, 8, 16, 17, 10 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_88[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 13, 0, 1 }, /* CSG-Id */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 18, -1, 0 }, /* Masked-IMEISV */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 1 }, /* Source-ToTarget-TransparentContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 12, -1, 0 }, /* NASSecurityParameterstoE-UTRAN */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 5 }, /* HandoverType */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 10, -1, 4 }, /* SRVCCOperationPossible */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 14, -2, 3 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 16, -3, 2 }, /* ManagementBasedMDTAllowed */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 21, -4, 1 }, /* UEUserPlaneCIoTSupportIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 24, -5, 0 }, /* EnhancedCoverageRestricted */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 12 }, /* UEAggregateMaximumBitrate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 11 }, /* E-RABToBeSetupListHOReq */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -2, 10 }, /* UESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -3, 9 }, /* HandoverRestrictionList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -4, 8 }, /* TraceActivation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -5, 7 }, /* RequestType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -6, 6 }, /* SecurityContext */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 15, -7, 5 }, /* GUMMEI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 17, -8, 4 }, /* MDTPLMNList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 19, -9, 3 }, /* ExpectedUEBehaviour */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 20, -10, 2 }, /* ProSeAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 22, -11, 1 }, /* V2XServicesAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 23, -12, 0 }, /* UESidelinkAggregateMaximumBitrate */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_88 = { + sizeof(struct S1AP_HandoverRequestIEs__value), + offsetof(struct S1AP_HandoverRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_HandoverRequestIEs__value, present), + sizeof(((struct S1AP_HandoverRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_88, + 29, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_88, + asn_MAP_S1AP_value_from_canonical_88, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_88 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_88, + 25, /* Elements count */ + &asn_SPC_S1AP_value_specs_88 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverRequestIEs_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_86, &asn_PER_memb_S1AP_id_constr_86, memb_S1AP_id_constraint_85 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_HandoverRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_87, &asn_PER_memb_S1AP_criticality_constr_87, memb_S1AP_criticality_constraint_85 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_88, + select_HandoverRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_88, &asn_PER_memb_S1AP_value_constr_88, memb_S1AP_value_constraint_85 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverRequestIEs_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverRequestIEs_tag2el_85[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequestIEs_specs_85 = { + sizeof(struct S1AP_HandoverRequestIEs), + offsetof(struct S1AP_HandoverRequestIEs, _asn_ctx), + asn_MAP_S1AP_HandoverRequestIEs_tag2el_85, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequestIEs = { + "HandoverRequestIEs", + "HandoverRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverRequestIEs_tags_85, + sizeof(asn_DEF_S1AP_HandoverRequestIEs_tags_85) + /sizeof(asn_DEF_S1AP_HandoverRequestIEs_tags_85[0]), /* 1 */ + asn_DEF_S1AP_HandoverRequestIEs_tags_85, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverRequestIEs_tags_85) + /sizeof(asn_DEF_S1AP_HandoverRequestIEs_tags_85[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverRequestIEs_85, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverRequestIEs_specs_85 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_92[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, choice.E_RABAdmittedList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABAdmittedList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABAdmittedList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, choice.E_RABFailedtoSetupListHOReqAck), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABFailedtoSetupListHOReqAck, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABFailedtoSetupListHOReqAck" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, choice.Target_ToSource_TransparentContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Target_ToSource_TransparentContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Target-ToSource-TransparentContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, choice.CSG_Id), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_CSG_Id, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-Id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, choice.CellAccessMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CellAccessMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellAccessMode" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, choice.CE_mode_B_SupportIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CE_mode_B_SupportIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CE-mode-B-SupportIndicator" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_92[] = { 0, 1, 5, 4, 7, 8, 3, 2, 6 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_92[] = { 0, 1, 7, 6, 3, 2, 8, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_92[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 5, 0, 0 }, /* CSG-Id */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* Target-ToSource-TransparentContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, 0, 1 }, /* CellAccessMode */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 8, -1, 0 }, /* CE-mode-B-SupportIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* E-RABAdmittedList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 1 }, /* E-RABFailedtoSetupListHOReqAck */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_92 = { + sizeof(struct S1AP_HandoverRequestAcknowledgeIEs__value), + offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, _asn_ctx), + offsetof(struct S1AP_HandoverRequestAcknowledgeIEs__value, present), + sizeof(((struct S1AP_HandoverRequestAcknowledgeIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_92, + 9, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_92, + asn_MAP_S1AP_value_from_canonical_92, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_92 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_92, + 9, /* Elements count */ + &asn_SPC_S1AP_value_specs_92 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverRequestAcknowledgeIEs_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_90, &asn_PER_memb_S1AP_id_constr_90, memb_S1AP_id_constraint_89 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_HandoverRequestAcknowledgeIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_91, &asn_PER_memb_S1AP_criticality_constr_91, memb_S1AP_criticality_constraint_89 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverRequestAcknowledgeIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_92, + select_HandoverRequestAcknowledgeIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_92, &asn_PER_memb_S1AP_value_constr_92, memb_S1AP_value_constraint_89 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverRequestAcknowledgeIEs_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverRequestAcknowledgeIEs_tag2el_89[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequestAcknowledgeIEs_specs_89 = { + sizeof(struct S1AP_HandoverRequestAcknowledgeIEs), + offsetof(struct S1AP_HandoverRequestAcknowledgeIEs, _asn_ctx), + asn_MAP_S1AP_HandoverRequestAcknowledgeIEs_tag2el_89, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequestAcknowledgeIEs = { + "HandoverRequestAcknowledgeIEs", + "HandoverRequestAcknowledgeIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverRequestAcknowledgeIEs_tags_89, + sizeof(asn_DEF_S1AP_HandoverRequestAcknowledgeIEs_tags_89) + /sizeof(asn_DEF_S1AP_HandoverRequestAcknowledgeIEs_tags_89[0]), /* 1 */ + asn_DEF_S1AP_HandoverRequestAcknowledgeIEs_tags_89, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverRequestAcknowledgeIEs_tags_89) + /sizeof(asn_DEF_S1AP_HandoverRequestAcknowledgeIEs_tags_89[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverRequestAcknowledgeIEs_89, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverRequestAcknowledgeIEs_specs_89 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_96[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverFailureIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_96[] = { 0, 2, 1 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_96[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_96[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_96 = { + sizeof(struct S1AP_HandoverFailureIEs__value), + offsetof(struct S1AP_HandoverFailureIEs__value, _asn_ctx), + offsetof(struct S1AP_HandoverFailureIEs__value, present), + sizeof(((struct S1AP_HandoverFailureIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_96, + 7, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_96, + asn_MAP_S1AP_value_from_canonical_96, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_96 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_96, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverFailureIEs_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_94, &asn_PER_memb_S1AP_id_constr_94, memb_S1AP_id_constraint_93 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_HandoverFailureIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_95, &asn_PER_memb_S1AP_criticality_constr_95, memb_S1AP_criticality_constraint_93 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_96, + select_HandoverFailureIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_96, &asn_PER_memb_S1AP_value_constr_96, memb_S1AP_value_constraint_93 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverFailureIEs_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverFailureIEs_tag2el_93[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverFailureIEs_specs_93 = { + sizeof(struct S1AP_HandoverFailureIEs), + offsetof(struct S1AP_HandoverFailureIEs, _asn_ctx), + asn_MAP_S1AP_HandoverFailureIEs_tag2el_93, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverFailureIEs = { + "HandoverFailureIEs", + "HandoverFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverFailureIEs_tags_93, + sizeof(asn_DEF_S1AP_HandoverFailureIEs_tags_93) + /sizeof(asn_DEF_S1AP_HandoverFailureIEs_tags_93[0]), /* 1 */ + asn_DEF_S1AP_HandoverFailureIEs_tags_93, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverFailureIEs_tags_93) + /sizeof(asn_DEF_S1AP_HandoverFailureIEs_tags_93[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverFailureIEs_93, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverFailureIEs_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_100[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotifyIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotifyIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotifyIEs__value, choice.EUTRAN_CGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRAN-CGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotifyIEs__value, choice.TAI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotifyIEs__value, choice.TunnelInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TunnelInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TunnelInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotifyIEs__value, choice.LHN_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_LHN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LHN-ID" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_100[] = { 0, 1, 5, 2, 3, 4 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_100[] = { 0, 1, 3, 4, 5, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_100[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 0 }, /* LHN-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* EUTRAN-CGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 1 }, /* TAI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 } /* TunnelInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_100 = { + sizeof(struct S1AP_HandoverNotifyIEs__value), + offsetof(struct S1AP_HandoverNotifyIEs__value, _asn_ctx), + offsetof(struct S1AP_HandoverNotifyIEs__value, present), + sizeof(((struct S1AP_HandoverNotifyIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_100, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_100, + asn_MAP_S1AP_value_from_canonical_100, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_100 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_100, + 6, /* Elements count */ + &asn_SPC_S1AP_value_specs_100 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverNotifyIEs_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotifyIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_98, &asn_PER_memb_S1AP_id_constr_98, memb_S1AP_id_constraint_97 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotifyIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_HandoverNotifyIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_99, &asn_PER_memb_S1AP_criticality_constr_99, memb_S1AP_criticality_constraint_97 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverNotifyIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_100, + select_HandoverNotifyIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_100, &asn_PER_memb_S1AP_value_constr_100, memb_S1AP_value_constraint_97 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverNotifyIEs_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverNotifyIEs_tag2el_97[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverNotifyIEs_specs_97 = { + sizeof(struct S1AP_HandoverNotifyIEs), + offsetof(struct S1AP_HandoverNotifyIEs, _asn_ctx), + asn_MAP_S1AP_HandoverNotifyIEs_tag2el_97, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverNotifyIEs = { + "HandoverNotifyIEs", + "HandoverNotifyIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverNotifyIEs_tags_97, + sizeof(asn_DEF_S1AP_HandoverNotifyIEs_tags_97) + /sizeof(asn_DEF_S1AP_HandoverNotifyIEs_tags_97[0]), /* 1 */ + asn_DEF_S1AP_HandoverNotifyIEs_tags_97, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverNotifyIEs_tags_97) + /sizeof(asn_DEF_S1AP_HandoverNotifyIEs_tags_97[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverNotifyIEs_97, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverNotifyIEs_specs_97 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_104[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.E_RABToBeSwitchedDLList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSwitchedDLList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSwitchedDLList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.EUTRAN_CGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRAN-CGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.TAI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.UESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.CSG_Id), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_CSG_Id, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-Id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.CellAccessMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CellAccessMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellAccessMode" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.GUMMEI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.TunnelInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TunnelInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TunnelInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.LHN_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_LHN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LHN-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs__value, choice.RRC_Establishment_Cause), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_RRC_Establishment_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRC-Establishment-Cause" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_104[] = { 2, 0, 6, 11, 9, 7, 12, 3, 10, 8, 4, 5, 1 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_104[] = { 1, 12, 0, 7, 10, 11, 2, 5, 9, 4, 8, 3, 6 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_104[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 6, 0, 0 }, /* CSG-Id */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 11, 0, 0 }, /* LHN-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, 0, 2 }, /* CellAccessMode */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 9, -1, 1 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 12, -2, 0 }, /* RRC-Establishment-Cause */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 5 }, /* E-RABToBeSwitchedDLList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 4 }, /* EUTRAN-CGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 3 }, /* TAI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 2 }, /* UESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -4, 1 }, /* GUMMEI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -5, 0 } /* TunnelInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_104 = { + sizeof(struct S1AP_PathSwitchRequestIEs__value), + offsetof(struct S1AP_PathSwitchRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_PathSwitchRequestIEs__value, present), + sizeof(((struct S1AP_PathSwitchRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_104, + 13, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_104, + asn_MAP_S1AP_value_from_canonical_104, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_104 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_104, + 13, /* Elements count */ + &asn_SPC_S1AP_value_specs_104 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestIEs_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_102, &asn_PER_memb_S1AP_id_constr_102, memb_S1AP_id_constraint_101 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_PathSwitchRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_103, &asn_PER_memb_S1AP_criticality_constr_103, memb_S1AP_criticality_constraint_101 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_104, + select_PathSwitchRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_104, &asn_PER_memb_S1AP_value_constr_104, memb_S1AP_value_constraint_101 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PathSwitchRequestIEs_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PathSwitchRequestIEs_tag2el_101[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestIEs_specs_101 = { + sizeof(struct S1AP_PathSwitchRequestIEs), + offsetof(struct S1AP_PathSwitchRequestIEs, _asn_ctx), + asn_MAP_S1AP_PathSwitchRequestIEs_tag2el_101, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestIEs = { + "PathSwitchRequestIEs", + "PathSwitchRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PathSwitchRequestIEs_tags_101, + sizeof(asn_DEF_S1AP_PathSwitchRequestIEs_tags_101) + /sizeof(asn_DEF_S1AP_PathSwitchRequestIEs_tags_101[0]), /* 1 */ + asn_DEF_S1AP_PathSwitchRequestIEs_tags_101, /* Same as above */ + sizeof(asn_DEF_S1AP_PathSwitchRequestIEs_tags_101) + /sizeof(asn_DEF_S1AP_PathSwitchRequestIEs_tags_101[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PathSwitchRequestIEs_101, + 3, /* Elements count */ + &asn_SPC_S1AP_PathSwitchRequestIEs_specs_101 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_108[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.UEAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.E_RABToBeSwitchedULList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSwitchedULList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSwitchedULList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.E_RABList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.SecurityContext), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SecurityContext, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecurityContext" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.ProSeAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProSeAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.UEUserPlaneCIoTSupportIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEUserPlaneCIoTSupportIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.V2XServicesAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_V2XServicesAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "V2XServicesAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.UESidelinkAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESidelinkAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, choice.EnhancedCoverageRestricted), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_EnhancedCoverageRestricted, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EnhancedCoverageRestricted" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_108[] = { 0, 1, 12, 7, 9, 4, 6, 11, 8, 2, 10, 3, 5 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_108[] = { 0, 1, 9, 11, 5, 12, 6, 3, 8, 4, 10, 7, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_108[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, 0, 2 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 9, -1, 1 }, /* UEUserPlaneCIoTSupportIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 12, -2, 0 }, /* EnhancedCoverageRestricted */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 7 }, /* UEAggregateMaximumBitrate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 6 }, /* E-RABToBeSwitchedULList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 5 }, /* E-RABList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 4 }, /* SecurityContext */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -4, 3 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -5, 2 }, /* ProSeAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -6, 1 }, /* V2XServicesAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -7, 0 } /* UESidelinkAggregateMaximumBitrate */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_108 = { + sizeof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value), + offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, _asn_ctx), + offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs__value, present), + sizeof(((struct S1AP_PathSwitchRequestAcknowledgeIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_108, + 13, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_108, + asn_MAP_S1AP_value_from_canonical_108, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_108 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_108, + 13, /* Elements count */ + &asn_SPC_S1AP_value_specs_108 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestAcknowledgeIEs_105[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_106, &asn_PER_memb_S1AP_id_constr_106, memb_S1AP_id_constraint_105 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_PathSwitchRequestAcknowledgeIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_107, &asn_PER_memb_S1AP_criticality_constr_107, memb_S1AP_criticality_constraint_105 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_108, + select_PathSwitchRequestAcknowledgeIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_108, &asn_PER_memb_S1AP_value_constr_108, memb_S1AP_value_constraint_105 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PathSwitchRequestAcknowledgeIEs_tag2el_105[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestAcknowledgeIEs_specs_105 = { + sizeof(struct S1AP_PathSwitchRequestAcknowledgeIEs), + offsetof(struct S1AP_PathSwitchRequestAcknowledgeIEs, _asn_ctx), + asn_MAP_S1AP_PathSwitchRequestAcknowledgeIEs_tag2el_105, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs = { + "PathSwitchRequestAcknowledgeIEs", + "PathSwitchRequestAcknowledgeIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs_tags_105, + sizeof(asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs_tags_105) + /sizeof(asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs_tags_105[0]), /* 1 */ + asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs_tags_105, /* Same as above */ + sizeof(asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs_tags_105) + /sizeof(asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs_tags_105[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PathSwitchRequestAcknowledgeIEs_105, + 3, /* Elements count */ + &asn_SPC_S1AP_PathSwitchRequestAcknowledgeIEs_specs_105 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_112[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestFailureIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestFailureIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_112[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_112[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_112[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_112 = { + sizeof(struct S1AP_PathSwitchRequestFailureIEs__value), + offsetof(struct S1AP_PathSwitchRequestFailureIEs__value, _asn_ctx), + offsetof(struct S1AP_PathSwitchRequestFailureIEs__value, present), + sizeof(((struct S1AP_PathSwitchRequestFailureIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_112, + 8, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_112, + asn_MAP_S1AP_value_from_canonical_112, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_112 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_112, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_112 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestFailureIEs_109[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_110, &asn_PER_memb_S1AP_id_constr_110, memb_S1AP_id_constraint_109 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_PathSwitchRequestFailureIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_111, &asn_PER_memb_S1AP_criticality_constr_111, memb_S1AP_criticality_constraint_109 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_PathSwitchRequestFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_112, + select_PathSwitchRequestFailureIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_112, &asn_PER_memb_S1AP_value_constr_112, memb_S1AP_value_constraint_109 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PathSwitchRequestFailureIEs_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PathSwitchRequestFailureIEs_tag2el_109[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestFailureIEs_specs_109 = { + sizeof(struct S1AP_PathSwitchRequestFailureIEs), + offsetof(struct S1AP_PathSwitchRequestFailureIEs, _asn_ctx), + asn_MAP_S1AP_PathSwitchRequestFailureIEs_tag2el_109, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestFailureIEs = { + "PathSwitchRequestFailureIEs", + "PathSwitchRequestFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PathSwitchRequestFailureIEs_tags_109, + sizeof(asn_DEF_S1AP_PathSwitchRequestFailureIEs_tags_109) + /sizeof(asn_DEF_S1AP_PathSwitchRequestFailureIEs_tags_109[0]), /* 1 */ + asn_DEF_S1AP_PathSwitchRequestFailureIEs_tags_109, /* Same as above */ + sizeof(asn_DEF_S1AP_PathSwitchRequestFailureIEs_tags_109) + /sizeof(asn_DEF_S1AP_PathSwitchRequestFailureIEs_tags_109[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PathSwitchRequestFailureIEs_109, + 3, /* Elements count */ + &asn_SPC_S1AP_PathSwitchRequestFailureIEs_specs_109 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_116[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_116[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_116 = { + sizeof(struct S1AP_HandoverCancelIEs__value), + offsetof(struct S1AP_HandoverCancelIEs__value, _asn_ctx), + offsetof(struct S1AP_HandoverCancelIEs__value, present), + sizeof(((struct S1AP_HandoverCancelIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_116, + 7, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_116 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_116, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_116 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverCancelIEs_113[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_114, &asn_PER_memb_S1AP_id_constr_114, memb_S1AP_id_constraint_113 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_HandoverCancelIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_115, &asn_PER_memb_S1AP_criticality_constr_115, memb_S1AP_criticality_constraint_113 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_116, + select_HandoverCancelIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_116, &asn_PER_memb_S1AP_value_constr_116, memb_S1AP_value_constraint_113 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverCancelIEs_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverCancelIEs_tag2el_113[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCancelIEs_specs_113 = { + sizeof(struct S1AP_HandoverCancelIEs), + offsetof(struct S1AP_HandoverCancelIEs, _asn_ctx), + asn_MAP_S1AP_HandoverCancelIEs_tag2el_113, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCancelIEs = { + "HandoverCancelIEs", + "HandoverCancelIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverCancelIEs_tags_113, + sizeof(asn_DEF_S1AP_HandoverCancelIEs_tags_113) + /sizeof(asn_DEF_S1AP_HandoverCancelIEs_tags_113[0]), /* 1 */ + asn_DEF_S1AP_HandoverCancelIEs_tags_113, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverCancelIEs_tags_113) + /sizeof(asn_DEF_S1AP_HandoverCancelIEs_tags_113[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverCancelIEs_113, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverCancelIEs_specs_113 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_120[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelAcknowledgeIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelAcknowledgeIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelAcknowledgeIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_120[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_120 = { + sizeof(struct S1AP_HandoverCancelAcknowledgeIEs__value), + offsetof(struct S1AP_HandoverCancelAcknowledgeIEs__value, _asn_ctx), + offsetof(struct S1AP_HandoverCancelAcknowledgeIEs__value, present), + sizeof(((struct S1AP_HandoverCancelAcknowledgeIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_120, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_120 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_120, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_120 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_HandoverCancelAcknowledgeIEs_117[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelAcknowledgeIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_118, &asn_PER_memb_S1AP_id_constr_118, memb_S1AP_id_constraint_117 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelAcknowledgeIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_HandoverCancelAcknowledgeIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_119, &asn_PER_memb_S1AP_criticality_constr_119, memb_S1AP_criticality_constraint_117 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_HandoverCancelAcknowledgeIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_120, + select_HandoverCancelAcknowledgeIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_120, &asn_PER_memb_S1AP_value_constr_120, memb_S1AP_value_constraint_117 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_HandoverCancelAcknowledgeIEs_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_HandoverCancelAcknowledgeIEs_tag2el_117[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCancelAcknowledgeIEs_specs_117 = { + sizeof(struct S1AP_HandoverCancelAcknowledgeIEs), + offsetof(struct S1AP_HandoverCancelAcknowledgeIEs, _asn_ctx), + asn_MAP_S1AP_HandoverCancelAcknowledgeIEs_tag2el_117, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCancelAcknowledgeIEs = { + "HandoverCancelAcknowledgeIEs", + "HandoverCancelAcknowledgeIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_HandoverCancelAcknowledgeIEs_tags_117, + sizeof(asn_DEF_S1AP_HandoverCancelAcknowledgeIEs_tags_117) + /sizeof(asn_DEF_S1AP_HandoverCancelAcknowledgeIEs_tags_117[0]), /* 1 */ + asn_DEF_S1AP_HandoverCancelAcknowledgeIEs_tags_117, /* Same as above */ + sizeof(asn_DEF_S1AP_HandoverCancelAcknowledgeIEs_tags_117) + /sizeof(asn_DEF_S1AP_HandoverCancelAcknowledgeIEs_tags_117[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_HandoverCancelAcknowledgeIEs_117, + 3, /* Elements count */ + &asn_SPC_S1AP_HandoverCancelAcknowledgeIEs_specs_117 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_124[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupRequestIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupRequestIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupRequestIEs__value, choice.UEAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupRequestIEs__value, choice.E_RABToBeSetupListBearerSUReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSetupListBearerSUReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSetupListBearerSUReq" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_124[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* UEAggregateMaximumBitrate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* E-RABToBeSetupListBearerSUReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_124 = { + sizeof(struct S1AP_E_RABSetupRequestIEs__value), + offsetof(struct S1AP_E_RABSetupRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABSetupRequestIEs__value, present), + sizeof(((struct S1AP_E_RABSetupRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_124, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_124 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_124, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_124 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupRequestIEs_121[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_122, &asn_PER_memb_S1AP_id_constr_122, memb_S1AP_id_constraint_121 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABSetupRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_123, &asn_PER_memb_S1AP_criticality_constr_123, memb_S1AP_criticality_constraint_121 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_124, + select_E_RABSetupRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_124, &asn_PER_memb_S1AP_value_constr_124, memb_S1AP_value_constraint_121 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupRequestIEs_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupRequestIEs_tag2el_121[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupRequestIEs_specs_121 = { + sizeof(struct S1AP_E_RABSetupRequestIEs), + offsetof(struct S1AP_E_RABSetupRequestIEs, _asn_ctx), + asn_MAP_S1AP_E_RABSetupRequestIEs_tag2el_121, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupRequestIEs = { + "E-RABSetupRequestIEs", + "E-RABSetupRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupRequestIEs_tags_121, + sizeof(asn_DEF_S1AP_E_RABSetupRequestIEs_tags_121) + /sizeof(asn_DEF_S1AP_E_RABSetupRequestIEs_tags_121[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupRequestIEs_tags_121, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupRequestIEs_tags_121) + /sizeof(asn_DEF_S1AP_E_RABSetupRequestIEs_tags_121[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupRequestIEs_121, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupRequestIEs_specs_121 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_128[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupResponseIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupResponseIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupResponseIEs__value, choice.E_RABSetupListBearerSURes), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupListBearerSURes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABSetupListBearerSURes" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupResponseIEs__value, choice.E_RABList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_128[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* E-RABSetupListBearerSURes */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 1 }, /* E-RABList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_128 = { + sizeof(struct S1AP_E_RABSetupResponseIEs__value), + offsetof(struct S1AP_E_RABSetupResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABSetupResponseIEs__value, present), + sizeof(((struct S1AP_E_RABSetupResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_128, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_128 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_128, + 5, /* Elements count */ + &asn_SPC_S1AP_value_specs_128 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupResponseIEs_125[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_126, &asn_PER_memb_S1AP_id_constr_126, memb_S1AP_id_constraint_125 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABSetupResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_127, &asn_PER_memb_S1AP_criticality_constr_127, memb_S1AP_criticality_constraint_125 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABSetupResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_128, + select_E_RABSetupResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_128, &asn_PER_memb_S1AP_value_constr_128, memb_S1AP_value_constraint_125 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABSetupResponseIEs_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABSetupResponseIEs_tag2el_125[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupResponseIEs_specs_125 = { + sizeof(struct S1AP_E_RABSetupResponseIEs), + offsetof(struct S1AP_E_RABSetupResponseIEs, _asn_ctx), + asn_MAP_S1AP_E_RABSetupResponseIEs_tag2el_125, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupResponseIEs = { + "E-RABSetupResponseIEs", + "E-RABSetupResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABSetupResponseIEs_tags_125, + sizeof(asn_DEF_S1AP_E_RABSetupResponseIEs_tags_125) + /sizeof(asn_DEF_S1AP_E_RABSetupResponseIEs_tags_125[0]), /* 1 */ + asn_DEF_S1AP_E_RABSetupResponseIEs_tags_125, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABSetupResponseIEs_tags_125) + /sizeof(asn_DEF_S1AP_E_RABSetupResponseIEs_tags_125[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupResponseIEs_125, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupResponseIEs_specs_125 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_132[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyRequestIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyRequestIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyRequestIEs__value, choice.UEAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyRequestIEs__value, choice.E_RABToBeModifiedListBearerModReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeModifiedListBearerModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeModifiedListBearerModReq" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_132[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* UEAggregateMaximumBitrate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* E-RABToBeModifiedListBearerModReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_132 = { + sizeof(struct S1AP_E_RABModifyRequestIEs__value), + offsetof(struct S1AP_E_RABModifyRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABModifyRequestIEs__value, present), + sizeof(((struct S1AP_E_RABModifyRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_132, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_132 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_132, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_132 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyRequestIEs_129[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_130, &asn_PER_memb_S1AP_id_constr_130, memb_S1AP_id_constraint_129 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABModifyRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_131, &asn_PER_memb_S1AP_criticality_constr_131, memb_S1AP_criticality_constraint_129 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_132, + select_E_RABModifyRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_132, &asn_PER_memb_S1AP_value_constr_132, memb_S1AP_value_constraint_129 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyRequestIEs_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyRequestIEs_tag2el_129[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyRequestIEs_specs_129 = { + sizeof(struct S1AP_E_RABModifyRequestIEs), + offsetof(struct S1AP_E_RABModifyRequestIEs, _asn_ctx), + asn_MAP_S1AP_E_RABModifyRequestIEs_tag2el_129, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyRequestIEs = { + "E-RABModifyRequestIEs", + "E-RABModifyRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyRequestIEs_tags_129, + sizeof(asn_DEF_S1AP_E_RABModifyRequestIEs_tags_129) + /sizeof(asn_DEF_S1AP_E_RABModifyRequestIEs_tags_129[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyRequestIEs_tags_129, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyRequestIEs_tags_129) + /sizeof(asn_DEF_S1AP_E_RABModifyRequestIEs_tags_129[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyRequestIEs_129, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyRequestIEs_specs_129 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_136[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyResponseIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyResponseIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyResponseIEs__value, choice.E_RABModifyListBearerModRes), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyListBearerModRes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABModifyListBearerModRes" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyResponseIEs__value, choice.E_RABList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_136[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* E-RABModifyListBearerModRes */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 1 }, /* E-RABList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_136 = { + sizeof(struct S1AP_E_RABModifyResponseIEs__value), + offsetof(struct S1AP_E_RABModifyResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABModifyResponseIEs__value, present), + sizeof(((struct S1AP_E_RABModifyResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_136, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_136 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_136, + 5, /* Elements count */ + &asn_SPC_S1AP_value_specs_136 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyResponseIEs_133[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_134, &asn_PER_memb_S1AP_id_constr_134, memb_S1AP_id_constraint_133 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABModifyResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_135, &asn_PER_memb_S1AP_criticality_constr_135, memb_S1AP_criticality_constraint_133 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModifyResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_136, + select_E_RABModifyResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_136, &asn_PER_memb_S1AP_value_constr_136, memb_S1AP_value_constraint_133 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModifyResponseIEs_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModifyResponseIEs_tag2el_133[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyResponseIEs_specs_133 = { + sizeof(struct S1AP_E_RABModifyResponseIEs), + offsetof(struct S1AP_E_RABModifyResponseIEs, _asn_ctx), + asn_MAP_S1AP_E_RABModifyResponseIEs_tag2el_133, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyResponseIEs = { + "E-RABModifyResponseIEs", + "E-RABModifyResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModifyResponseIEs_tags_133, + sizeof(asn_DEF_S1AP_E_RABModifyResponseIEs_tags_133) + /sizeof(asn_DEF_S1AP_E_RABModifyResponseIEs_tags_133[0]), /* 1 */ + asn_DEF_S1AP_E_RABModifyResponseIEs_tags_133, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModifyResponseIEs_tags_133) + /sizeof(asn_DEF_S1AP_E_RABModifyResponseIEs_tags_133[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyResponseIEs_133, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyResponseIEs_specs_133 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_140[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseCommandIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseCommandIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseCommandIEs__value, choice.UEAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseCommandIEs__value, choice.E_RABList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseCommandIEs__value, choice.NAS_PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_NAS_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NAS-PDU" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_140[] = { 0, 1, 4, 2, 3 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_140[] = { 0, 1, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_140[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* NAS-PDU */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* UEAggregateMaximumBitrate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* E-RABList */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_140 = { + sizeof(struct S1AP_E_RABReleaseCommandIEs__value), + offsetof(struct S1AP_E_RABReleaseCommandIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABReleaseCommandIEs__value, present), + sizeof(((struct S1AP_E_RABReleaseCommandIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_140, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_140, + asn_MAP_S1AP_value_from_canonical_140, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_140 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_140, + 5, /* Elements count */ + &asn_SPC_S1AP_value_specs_140 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseCommandIEs_137[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseCommandIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_138, &asn_PER_memb_S1AP_id_constr_138, memb_S1AP_id_constraint_137 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseCommandIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABReleaseCommandIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_139, &asn_PER_memb_S1AP_criticality_constr_139, memb_S1AP_criticality_constraint_137 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseCommandIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_140, + select_E_RABReleaseCommandIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_140, &asn_PER_memb_S1AP_value_constr_140, memb_S1AP_value_constraint_137 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseCommandIEs_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABReleaseCommandIEs_tag2el_137[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseCommandIEs_specs_137 = { + sizeof(struct S1AP_E_RABReleaseCommandIEs), + offsetof(struct S1AP_E_RABReleaseCommandIEs, _asn_ctx), + asn_MAP_S1AP_E_RABReleaseCommandIEs_tag2el_137, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseCommandIEs = { + "E-RABReleaseCommandIEs", + "E-RABReleaseCommandIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABReleaseCommandIEs_tags_137, + sizeof(asn_DEF_S1AP_E_RABReleaseCommandIEs_tags_137) + /sizeof(asn_DEF_S1AP_E_RABReleaseCommandIEs_tags_137[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseCommandIEs_tags_137, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseCommandIEs_tags_137) + /sizeof(asn_DEF_S1AP_E_RABReleaseCommandIEs_tags_137[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseCommandIEs_137, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseCommandIEs_specs_137 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_144[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponseIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponseIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponseIEs__value, choice.E_RABReleaseListBearerRelComp), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABReleaseListBearerRelComp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABReleaseListBearerRelComp" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponseIEs__value, choice.E_RABList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponseIEs__value, choice.UserLocationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UserLocationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UserLocationInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_144[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 3 }, /* E-RABReleaseListBearerRelComp */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* E-RABList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 0 } /* UserLocationInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_144 = { + sizeof(struct S1AP_E_RABReleaseResponseIEs__value), + offsetof(struct S1AP_E_RABReleaseResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABReleaseResponseIEs__value, present), + sizeof(((struct S1AP_E_RABReleaseResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_144, + 6, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_144 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_144, + 6, /* Elements count */ + &asn_SPC_S1AP_value_specs_144 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseResponseIEs_141[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_142, &asn_PER_memb_S1AP_id_constr_142, memb_S1AP_id_constraint_141 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABReleaseResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_143, &asn_PER_memb_S1AP_criticality_constr_143, memb_S1AP_criticality_constraint_141 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_144, + select_E_RABReleaseResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_144, &asn_PER_memb_S1AP_value_constr_144, memb_S1AP_value_constraint_141 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseResponseIEs_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABReleaseResponseIEs_tag2el_141[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseResponseIEs_specs_141 = { + sizeof(struct S1AP_E_RABReleaseResponseIEs), + offsetof(struct S1AP_E_RABReleaseResponseIEs, _asn_ctx), + asn_MAP_S1AP_E_RABReleaseResponseIEs_tag2el_141, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseResponseIEs = { + "E-RABReleaseResponseIEs", + "E-RABReleaseResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABReleaseResponseIEs_tags_141, + sizeof(asn_DEF_S1AP_E_RABReleaseResponseIEs_tags_141) + /sizeof(asn_DEF_S1AP_E_RABReleaseResponseIEs_tags_141[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseResponseIEs_tags_141, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseResponseIEs_tags_141) + /sizeof(asn_DEF_S1AP_E_RABReleaseResponseIEs_tags_141[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseResponseIEs_141, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseResponseIEs_specs_141 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_148[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseIndicationIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseIndicationIEs__value, choice.E_RABList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseIndicationIEs__value, choice.UserLocationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UserLocationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UserLocationInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_148[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* E-RABList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* UserLocationInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_148 = { + sizeof(struct S1AP_E_RABReleaseIndicationIEs__value), + offsetof(struct S1AP_E_RABReleaseIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABReleaseIndicationIEs__value, present), + sizeof(((struct S1AP_E_RABReleaseIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_148, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_148 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_148, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_148 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseIndicationIEs_145[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_146, &asn_PER_memb_S1AP_id_constr_146, memb_S1AP_id_constraint_145 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABReleaseIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_147, &asn_PER_memb_S1AP_criticality_constr_147, memb_S1AP_criticality_constraint_145 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABReleaseIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_148, + select_E_RABReleaseIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_148, &asn_PER_memb_S1AP_value_constr_148, memb_S1AP_value_constraint_145 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABReleaseIndicationIEs_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABReleaseIndicationIEs_tag2el_145[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseIndicationIEs_specs_145 = { + sizeof(struct S1AP_E_RABReleaseIndicationIEs), + offsetof(struct S1AP_E_RABReleaseIndicationIEs, _asn_ctx), + asn_MAP_S1AP_E_RABReleaseIndicationIEs_tag2el_145, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseIndicationIEs = { + "E-RABReleaseIndicationIEs", + "E-RABReleaseIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABReleaseIndicationIEs_tags_145, + sizeof(asn_DEF_S1AP_E_RABReleaseIndicationIEs_tags_145) + /sizeof(asn_DEF_S1AP_E_RABReleaseIndicationIEs_tags_145[0]), /* 1 */ + asn_DEF_S1AP_E_RABReleaseIndicationIEs_tags_145, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABReleaseIndicationIEs_tags_145) + /sizeof(asn_DEF_S1AP_E_RABReleaseIndicationIEs_tags_145[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseIndicationIEs_145, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseIndicationIEs_specs_145 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_152[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.UEAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.E_RABToBeSetupListCtxtSUReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSetupListCtxtSUReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSetupListCtxtSUReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.UESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.SecurityKey), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_SecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecurityKey" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.TraceActivation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TraceActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TraceActivation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.HandoverRestrictionList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRestrictionList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.UERadioCapability), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapability" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.SubscriberProfileIDforRFP), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SubscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.CSFallbackIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CSFallbackIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSFallbackIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.SRVCCOperationPossible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_SRVCCOperationPossible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCOperationPossible" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.LAI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.GUMMEI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.ManagementBasedMDTAllowed), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_ManagementBasedMDTAllowed, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ManagementBasedMDTAllowed" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.MDTPLMNList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MDTPLMNList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDTPLMNList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.AdditionalCSFallbackIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_AdditionalCSFallbackIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AdditionalCSFallbackIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.Masked_IMEISV), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_Masked_IMEISV, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Masked-IMEISV" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.ProSeAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProSeAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.UEUserPlaneCIoTSupportIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEUserPlaneCIoTSupportIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.V2XServicesAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_V2XServicesAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "V2XServicesAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.UESidelinkAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESidelinkAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs__value, choice.EnhancedCoverageRestricted), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_EnhancedCoverageRestricted, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EnhancedCoverageRestricted" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_152[] = { 1, 0, 9, 18, 5, 8, 24, 10, 11, 12, 15, 17, 21, 2, 14, 22, 16, 23, 3, 7, 6, 4, 19, 20, 13 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_152[] = { 1, 0, 13, 18, 21, 4, 20, 19, 5, 2, 7, 8, 9, 24, 14, 10, 16, 11, 3, 22, 23, 12, 15, 17, 6 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_152[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 9, -2, 0 }, /* SubscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 5, 0, 1 }, /* SecurityKey */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 18, -1, 0 }, /* Masked-IMEISV */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 8, 0, 0 }, /* UERadioCapability */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 10, 0, 6 }, /* CSFallbackIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, -1, 5 }, /* SRVCCOperationPossible */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 12, -2, 4 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 15, -3, 3 }, /* ManagementBasedMDTAllowed */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 17, -4, 2 }, /* AdditionalCSFallbackIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 21, -5, 1 }, /* UEUserPlaneCIoTSupportIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 24, -6, 0 }, /* EnhancedCoverageRestricted */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 11 }, /* UEAggregateMaximumBitrate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 10 }, /* E-RABToBeSetupListCtxtSUReq */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 9 }, /* UESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -3, 8 }, /* TraceActivation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -4, 7 }, /* HandoverRestrictionList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -5, 6 }, /* LAI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -6, 5 }, /* GUMMEI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 16, -7, 4 }, /* MDTPLMNList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 19, -8, 3 }, /* ExpectedUEBehaviour */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 20, -9, 2 }, /* ProSeAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 22, -10, 1 }, /* V2XServicesAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 23, -11, 0 } /* UESidelinkAggregateMaximumBitrate */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_152 = { + sizeof(struct S1AP_InitialContextSetupRequestIEs__value), + offsetof(struct S1AP_InitialContextSetupRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_InitialContextSetupRequestIEs__value, present), + sizeof(((struct S1AP_InitialContextSetupRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_152, + 25, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_152, + asn_MAP_S1AP_value_from_canonical_152, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_152 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_152, + 25, /* Elements count */ + &asn_SPC_S1AP_value_specs_152 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupRequestIEs_149[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_150, &asn_PER_memb_S1AP_id_constr_150, memb_S1AP_id_constraint_149 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_InitialContextSetupRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_151, &asn_PER_memb_S1AP_criticality_constr_151, memb_S1AP_criticality_constraint_149 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_152, + select_InitialContextSetupRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_152, &asn_PER_memb_S1AP_value_constr_152, memb_S1AP_value_constraint_149 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InitialContextSetupRequestIEs_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InitialContextSetupRequestIEs_tag2el_149[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupRequestIEs_specs_149 = { + sizeof(struct S1AP_InitialContextSetupRequestIEs), + offsetof(struct S1AP_InitialContextSetupRequestIEs, _asn_ctx), + asn_MAP_S1AP_InitialContextSetupRequestIEs_tag2el_149, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupRequestIEs = { + "InitialContextSetupRequestIEs", + "InitialContextSetupRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InitialContextSetupRequestIEs_tags_149, + sizeof(asn_DEF_S1AP_InitialContextSetupRequestIEs_tags_149) + /sizeof(asn_DEF_S1AP_InitialContextSetupRequestIEs_tags_149[0]), /* 1 */ + asn_DEF_S1AP_InitialContextSetupRequestIEs_tags_149, /* Same as above */ + sizeof(asn_DEF_S1AP_InitialContextSetupRequestIEs_tags_149) + /sizeof(asn_DEF_S1AP_InitialContextSetupRequestIEs_tags_149[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InitialContextSetupRequestIEs_149, + 3, /* Elements count */ + &asn_SPC_S1AP_InitialContextSetupRequestIEs_specs_149 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_156[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupResponseIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupResponseIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupResponseIEs__value, choice.E_RABSetupListCtxtSURes), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupListCtxtSURes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABSetupListCtxtSURes" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupResponseIEs__value, choice.E_RABList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_156[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* E-RABSetupListCtxtSURes */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 1 }, /* E-RABList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_156 = { + sizeof(struct S1AP_InitialContextSetupResponseIEs__value), + offsetof(struct S1AP_InitialContextSetupResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_InitialContextSetupResponseIEs__value, present), + sizeof(((struct S1AP_InitialContextSetupResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_156, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_156 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_156, + 5, /* Elements count */ + &asn_SPC_S1AP_value_specs_156 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupResponseIEs_153[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_154, &asn_PER_memb_S1AP_id_constr_154, memb_S1AP_id_constraint_153 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_InitialContextSetupResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_155, &asn_PER_memb_S1AP_criticality_constr_155, memb_S1AP_criticality_constraint_153 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_156, + select_InitialContextSetupResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_156, &asn_PER_memb_S1AP_value_constr_156, memb_S1AP_value_constraint_153 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InitialContextSetupResponseIEs_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InitialContextSetupResponseIEs_tag2el_153[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupResponseIEs_specs_153 = { + sizeof(struct S1AP_InitialContextSetupResponseIEs), + offsetof(struct S1AP_InitialContextSetupResponseIEs, _asn_ctx), + asn_MAP_S1AP_InitialContextSetupResponseIEs_tag2el_153, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupResponseIEs = { + "InitialContextSetupResponseIEs", + "InitialContextSetupResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InitialContextSetupResponseIEs_tags_153, + sizeof(asn_DEF_S1AP_InitialContextSetupResponseIEs_tags_153) + /sizeof(asn_DEF_S1AP_InitialContextSetupResponseIEs_tags_153[0]), /* 1 */ + asn_DEF_S1AP_InitialContextSetupResponseIEs_tags_153, /* Same as above */ + sizeof(asn_DEF_S1AP_InitialContextSetupResponseIEs_tags_153) + /sizeof(asn_DEF_S1AP_InitialContextSetupResponseIEs_tags_153[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InitialContextSetupResponseIEs_153, + 3, /* Elements count */ + &asn_SPC_S1AP_InitialContextSetupResponseIEs_specs_153 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_160[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupFailureIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupFailureIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_160[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_160[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_160[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_160 = { + sizeof(struct S1AP_InitialContextSetupFailureIEs__value), + offsetof(struct S1AP_InitialContextSetupFailureIEs__value, _asn_ctx), + offsetof(struct S1AP_InitialContextSetupFailureIEs__value, present), + sizeof(((struct S1AP_InitialContextSetupFailureIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_160, + 8, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_160, + asn_MAP_S1AP_value_from_canonical_160, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_160 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_160, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_160 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupFailureIEs_157[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_158, &asn_PER_memb_S1AP_id_constr_158, memb_S1AP_id_constraint_157 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_InitialContextSetupFailureIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_159, &asn_PER_memb_S1AP_criticality_constr_159, memb_S1AP_criticality_constraint_157 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialContextSetupFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_160, + select_InitialContextSetupFailureIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_160, &asn_PER_memb_S1AP_value_constr_160, memb_S1AP_value_constraint_157 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InitialContextSetupFailureIEs_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InitialContextSetupFailureIEs_tag2el_157[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupFailureIEs_specs_157 = { + sizeof(struct S1AP_InitialContextSetupFailureIEs), + offsetof(struct S1AP_InitialContextSetupFailureIEs, _asn_ctx), + asn_MAP_S1AP_InitialContextSetupFailureIEs_tag2el_157, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupFailureIEs = { + "InitialContextSetupFailureIEs", + "InitialContextSetupFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InitialContextSetupFailureIEs_tags_157, + sizeof(asn_DEF_S1AP_InitialContextSetupFailureIEs_tags_157) + /sizeof(asn_DEF_S1AP_InitialContextSetupFailureIEs_tags_157[0]), /* 1 */ + asn_DEF_S1AP_InitialContextSetupFailureIEs_tags_157, /* Same as above */ + sizeof(asn_DEF_S1AP_InitialContextSetupFailureIEs_tags_157) + /sizeof(asn_DEF_S1AP_InitialContextSetupFailureIEs_tags_157[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InitialContextSetupFailureIEs_157, + 3, /* Elements count */ + &asn_SPC_S1AP_InitialContextSetupFailureIEs_specs_157 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_164[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.UEIdentityIndexValue), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_UEIdentityIndexValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEIdentityIndexValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.UEPagingID), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_UEPagingID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEPagingID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.PagingDRX), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_PagingDRX, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PagingDRX" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.CNDomain), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CNDomain, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CNDomain" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.TAIList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAIList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAIList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.CSG_IdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CSG_IdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-IdList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.PagingPriority), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_PagingPriority, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PagingPriority" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.UERadioCapabilityForPaging), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapabilityForPaging, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapabilityForPaging" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.AssistanceDataForPaging), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_AssistanceDataForPaging, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AssistanceDataForPaging" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.Paging_eDRXInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Paging_eDRXInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Paging-eDRXInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.Extended_UEIdentityIndexValue), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_Extended_UEIdentityIndexValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Extended-UEIdentityIndexValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.NB_IoT_Paging_eDRXInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_NB_IoT_Paging_eDRXInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NB-IoT-Paging-eDRXInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs__value, choice.NB_IoT_UEIdentityIndexValue), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_NB_IoT_UEIdentityIndexValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NB-IoT-UEIdentityIndexValue" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_164[] = { 0, 10, 12, 7, 3, 6, 2, 4, 8, 9, 11, 5, 1 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_164[] = { 0, 12, 6, 4, 7, 11, 5, 3, 8, 9, 1, 10, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_164[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 2 }, /* UEIdentityIndexValue */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 10, -1, 1 }, /* Extended-UEIdentityIndexValue */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 12, -2, 0 }, /* NB-IoT-UEIdentityIndexValue */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, 0, 0 }, /* UERadioCapabilityForPaging */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 2 }, /* PagingDRX */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, -1, 1 }, /* CNDomain */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -2, 0 }, /* PagingPriority */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 4 }, /* TAIList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -1, 3 }, /* CSG-IdList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -2, 2 }, /* AssistanceDataForPaging */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -3, 1 }, /* Paging-eDRXInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -4, 0 }, /* NB-IoT-Paging-eDRXInformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* s-TMSI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iMSI */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_164 = { + sizeof(struct S1AP_PagingIEs__value), + offsetof(struct S1AP_PagingIEs__value, _asn_ctx), + offsetof(struct S1AP_PagingIEs__value, present), + sizeof(((struct S1AP_PagingIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_164, + 14, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_164, + asn_MAP_S1AP_value_from_canonical_164, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_164 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_164, + 13, /* Elements count */ + &asn_SPC_S1AP_value_specs_164 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_PagingIEs_161[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_162, &asn_PER_memb_S1AP_id_constr_162, memb_S1AP_id_constraint_161 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_PagingIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_163, &asn_PER_memb_S1AP_criticality_constr_163, memb_S1AP_criticality_constraint_161 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_PagingIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_164, + select_PagingIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_164, &asn_PER_memb_S1AP_value_constr_164, memb_S1AP_value_constraint_161 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PagingIEs_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PagingIEs_tag2el_161[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PagingIEs_specs_161 = { + sizeof(struct S1AP_PagingIEs), + offsetof(struct S1AP_PagingIEs, _asn_ctx), + asn_MAP_S1AP_PagingIEs_tag2el_161, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PagingIEs = { + "PagingIEs", + "PagingIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PagingIEs_tags_161, + sizeof(asn_DEF_S1AP_PagingIEs_tags_161) + /sizeof(asn_DEF_S1AP_PagingIEs_tags_161[0]), /* 1 */ + asn_DEF_S1AP_PagingIEs_tags_161, /* Same as above */ + sizeof(asn_DEF_S1AP_PagingIEs_tags_161) + /sizeof(asn_DEF_S1AP_PagingIEs_tags_161[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PagingIEs_161, + 3, /* Elements count */ + &asn_SPC_S1AP_PagingIEs_specs_161 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_168[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseRequest_IEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseRequest_IEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseRequest_IEs__value, choice.GWContextReleaseIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_GWContextReleaseIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GWContextReleaseIndication" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_168[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_168[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_168[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* GWContextReleaseIndication */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_168 = { + sizeof(struct S1AP_UEContextReleaseRequest_IEs__value), + offsetof(struct S1AP_UEContextReleaseRequest_IEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextReleaseRequest_IEs__value, present), + sizeof(((struct S1AP_UEContextReleaseRequest_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_168, + 8, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_168, + asn_MAP_S1AP_value_from_canonical_168, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_168 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_168, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_168 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseRequest_IEs_165[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_166, &asn_PER_memb_S1AP_id_constr_166, memb_S1AP_id_constraint_165 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextReleaseRequest_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_167, &asn_PER_memb_S1AP_criticality_constr_167, memb_S1AP_criticality_constraint_165 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_168, + select_UEContextReleaseRequest_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_168, &asn_PER_memb_S1AP_value_constr_168, memb_S1AP_value_constraint_165 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextReleaseRequest_IEs_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextReleaseRequest_IEs_tag2el_165[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseRequest_IEs_specs_165 = { + sizeof(struct S1AP_UEContextReleaseRequest_IEs), + offsetof(struct S1AP_UEContextReleaseRequest_IEs, _asn_ctx), + asn_MAP_S1AP_UEContextReleaseRequest_IEs_tag2el_165, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseRequest_IEs = { + "UEContextReleaseRequest-IEs", + "UEContextReleaseRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextReleaseRequest_IEs_tags_165, + sizeof(asn_DEF_S1AP_UEContextReleaseRequest_IEs_tags_165) + /sizeof(asn_DEF_S1AP_UEContextReleaseRequest_IEs_tags_165[0]), /* 1 */ + asn_DEF_S1AP_UEContextReleaseRequest_IEs_tags_165, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextReleaseRequest_IEs_tags_165) + /sizeof(asn_DEF_S1AP_UEContextReleaseRequest_IEs_tags_165[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextReleaseRequest_IEs_165, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextReleaseRequest_IEs_specs_165 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_172[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseCommand_IEs__value, choice.UE_S1AP_IDs), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_UE_S1AP_IDs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-S1AP-IDs" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseCommand_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_172[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 1 }, /* uE-S1AP-ID-pair */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, -1, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 1 }, /* mME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, -1, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_172 = { + sizeof(struct S1AP_UEContextReleaseCommand_IEs__value), + offsetof(struct S1AP_UEContextReleaseCommand_IEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextReleaseCommand_IEs__value, present), + sizeof(((struct S1AP_UEContextReleaseCommand_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_172, + 7, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_172 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_172, + 2, /* Elements count */ + &asn_SPC_S1AP_value_specs_172 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseCommand_IEs_169[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseCommand_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_170, &asn_PER_memb_S1AP_id_constr_170, memb_S1AP_id_constraint_169 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseCommand_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextReleaseCommand_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_171, &asn_PER_memb_S1AP_criticality_constr_171, memb_S1AP_criticality_constraint_169 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseCommand_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_172, + select_UEContextReleaseCommand_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_172, &asn_PER_memb_S1AP_value_constr_172, memb_S1AP_value_constraint_169 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextReleaseCommand_IEs_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextReleaseCommand_IEs_tag2el_169[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseCommand_IEs_specs_169 = { + sizeof(struct S1AP_UEContextReleaseCommand_IEs), + offsetof(struct S1AP_UEContextReleaseCommand_IEs, _asn_ctx), + asn_MAP_S1AP_UEContextReleaseCommand_IEs_tag2el_169, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseCommand_IEs = { + "UEContextReleaseCommand-IEs", + "UEContextReleaseCommand-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextReleaseCommand_IEs_tags_169, + sizeof(asn_DEF_S1AP_UEContextReleaseCommand_IEs_tags_169) + /sizeof(asn_DEF_S1AP_UEContextReleaseCommand_IEs_tags_169[0]), /* 1 */ + asn_DEF_S1AP_UEContextReleaseCommand_IEs_tags_169, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextReleaseCommand_IEs_tags_169) + /sizeof(asn_DEF_S1AP_UEContextReleaseCommand_IEs_tags_169[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextReleaseCommand_IEs_169, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextReleaseCommand_IEs_specs_169 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_176[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete_IEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete_IEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete_IEs__value, choice.UserLocationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UserLocationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UserLocationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete_IEs__value, choice.InformationOnRecommendedCellsAndENBsForPaging), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InformationOnRecommendedCellsAndENBsForPaging" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete_IEs__value, choice.CellIdentifierAndCELevelForCECapableUEs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellIdentifierAndCELevelForCECapableUEs" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_176[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 3 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* UserLocationInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 1 }, /* InformationOnRecommendedCellsAndENBsForPaging */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 0 } /* CellIdentifierAndCELevelForCECapableUEs */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_176 = { + sizeof(struct S1AP_UEContextReleaseComplete_IEs__value), + offsetof(struct S1AP_UEContextReleaseComplete_IEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextReleaseComplete_IEs__value, present), + sizeof(((struct S1AP_UEContextReleaseComplete_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_176, + 6, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_176 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_176, + 6, /* Elements count */ + &asn_SPC_S1AP_value_specs_176 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseComplete_IEs_173[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_174, &asn_PER_memb_S1AP_id_constr_174, memb_S1AP_id_constraint_173 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextReleaseComplete_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_175, &asn_PER_memb_S1AP_criticality_constr_175, memb_S1AP_criticality_constraint_173 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_176, + select_UEContextReleaseComplete_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_176, &asn_PER_memb_S1AP_value_constr_176, memb_S1AP_value_constraint_173 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextReleaseComplete_IEs_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextReleaseComplete_IEs_tag2el_173[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseComplete_IEs_specs_173 = { + sizeof(struct S1AP_UEContextReleaseComplete_IEs), + offsetof(struct S1AP_UEContextReleaseComplete_IEs, _asn_ctx), + asn_MAP_S1AP_UEContextReleaseComplete_IEs_tag2el_173, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseComplete_IEs = { + "UEContextReleaseComplete-IEs", + "UEContextReleaseComplete-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextReleaseComplete_IEs_tags_173, + sizeof(asn_DEF_S1AP_UEContextReleaseComplete_IEs_tags_173) + /sizeof(asn_DEF_S1AP_UEContextReleaseComplete_IEs_tags_173[0]), /* 1 */ + asn_DEF_S1AP_UEContextReleaseComplete_IEs_tags_173, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextReleaseComplete_IEs_tags_173) + /sizeof(asn_DEF_S1AP_UEContextReleaseComplete_IEs_tags_173[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextReleaseComplete_IEs_173, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextReleaseComplete_IEs_specs_173 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_180[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.SecurityKey), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_SecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecurityKey" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.SubscriberProfileIDforRFP), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SubscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.UEAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitrate" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.CSFallbackIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CSFallbackIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSFallbackIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.UESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.LAI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_LAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.AdditionalCSFallbackIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_AdditionalCSFallbackIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AdditionalCSFallbackIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.ProSeAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProSeAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.SRVCCOperationPossible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_SRVCCOperationPossible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCOperationPossible" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.SRVCCOperationNotPossible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_SRVCCOperationNotPossible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCOperationNotPossible" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.V2XServicesAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_V2XServicesAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "V2XServicesAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs__value, choice.UESidelinkAggregateMaximumBitrate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESidelinkAggregateMaximumBitrate" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_180[] = { 0, 1, 3, 2, 7, 5, 9, 11, 12, 14, 10, 13, 6, 4, 8 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_180[] = { 0, 1, 3, 2, 13, 5, 12, 4, 14, 6, 10, 7, 8, 11, 9 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_180[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* SubscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* SecurityKey */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 4 }, /* CSFallbackIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, -1, 3 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 9, -2, 2 }, /* AdditionalCSFallbackIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, -3, 1 }, /* SRVCCOperationPossible */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 12, -4, 0 }, /* SRVCCOperationNotPossible */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 5 }, /* UEAggregateMaximumBitrate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -1, 4 }, /* UESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -2, 3 }, /* LAI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -3, 2 }, /* ProSeAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -4, 1 }, /* V2XServicesAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -5, 0 } /* UESidelinkAggregateMaximumBitrate */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_180 = { + sizeof(struct S1AP_UEContextModificationRequestIEs__value), + offsetof(struct S1AP_UEContextModificationRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextModificationRequestIEs__value, present), + sizeof(((struct S1AP_UEContextModificationRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_180, + 15, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_180, + asn_MAP_S1AP_value_from_canonical_180, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_180 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_180, + 15, /* Elements count */ + &asn_SPC_S1AP_value_specs_180 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationRequestIEs_177[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_178, &asn_PER_memb_S1AP_id_constr_178, memb_S1AP_id_constraint_177 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextModificationRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_179, &asn_PER_memb_S1AP_criticality_constr_179, memb_S1AP_criticality_constraint_177 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_180, + select_UEContextModificationRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_180, &asn_PER_memb_S1AP_value_constr_180, memb_S1AP_value_constraint_177 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationRequestIEs_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationRequestIEs_tag2el_177[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationRequestIEs_specs_177 = { + sizeof(struct S1AP_UEContextModificationRequestIEs), + offsetof(struct S1AP_UEContextModificationRequestIEs, _asn_ctx), + asn_MAP_S1AP_UEContextModificationRequestIEs_tag2el_177, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationRequestIEs = { + "UEContextModificationRequestIEs", + "UEContextModificationRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationRequestIEs_tags_177, + sizeof(asn_DEF_S1AP_UEContextModificationRequestIEs_tags_177) + /sizeof(asn_DEF_S1AP_UEContextModificationRequestIEs_tags_177[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationRequestIEs_tags_177, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationRequestIEs_tags_177) + /sizeof(asn_DEF_S1AP_UEContextModificationRequestIEs_tags_177[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationRequestIEs_177, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationRequestIEs_specs_177 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_184[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationResponseIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationResponseIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_184[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_184 = { + sizeof(struct S1AP_UEContextModificationResponseIEs__value), + offsetof(struct S1AP_UEContextModificationResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextModificationResponseIEs__value, present), + sizeof(((struct S1AP_UEContextModificationResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_184, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_184 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_184, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_184 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationResponseIEs_181[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_182, &asn_PER_memb_S1AP_id_constr_182, memb_S1AP_id_constraint_181 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextModificationResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_183, &asn_PER_memb_S1AP_criticality_constr_183, memb_S1AP_criticality_constraint_181 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_184, + select_UEContextModificationResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_184, &asn_PER_memb_S1AP_value_constr_184, memb_S1AP_value_constraint_181 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationResponseIEs_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationResponseIEs_tag2el_181[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationResponseIEs_specs_181 = { + sizeof(struct S1AP_UEContextModificationResponseIEs), + offsetof(struct S1AP_UEContextModificationResponseIEs, _asn_ctx), + asn_MAP_S1AP_UEContextModificationResponseIEs_tag2el_181, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationResponseIEs = { + "UEContextModificationResponseIEs", + "UEContextModificationResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationResponseIEs_tags_181, + sizeof(asn_DEF_S1AP_UEContextModificationResponseIEs_tags_181) + /sizeof(asn_DEF_S1AP_UEContextModificationResponseIEs_tags_181[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationResponseIEs_tags_181, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationResponseIEs_tags_181) + /sizeof(asn_DEF_S1AP_UEContextModificationResponseIEs_tags_181[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationResponseIEs_181, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationResponseIEs_specs_181 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_188[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationFailureIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationFailureIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_188[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_188[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_188[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_188 = { + sizeof(struct S1AP_UEContextModificationFailureIEs__value), + offsetof(struct S1AP_UEContextModificationFailureIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextModificationFailureIEs__value, present), + sizeof(((struct S1AP_UEContextModificationFailureIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_188, + 8, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_188, + asn_MAP_S1AP_value_from_canonical_188, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_188 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_188, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_188 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationFailureIEs_185[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_186, &asn_PER_memb_S1AP_id_constr_186, memb_S1AP_id_constraint_185 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextModificationFailureIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_187, &asn_PER_memb_S1AP_criticality_constr_187, memb_S1AP_criticality_constraint_185 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_188, + select_UEContextModificationFailureIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_188, &asn_PER_memb_S1AP_value_constr_188, memb_S1AP_value_constraint_185 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationFailureIEs_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationFailureIEs_tag2el_185[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationFailureIEs_specs_185 = { + sizeof(struct S1AP_UEContextModificationFailureIEs), + offsetof(struct S1AP_UEContextModificationFailureIEs, _asn_ctx), + asn_MAP_S1AP_UEContextModificationFailureIEs_tag2el_185, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationFailureIEs = { + "UEContextModificationFailureIEs", + "UEContextModificationFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationFailureIEs_tags_185, + sizeof(asn_DEF_S1AP_UEContextModificationFailureIEs_tags_185) + /sizeof(asn_DEF_S1AP_UEContextModificationFailureIEs_tags_185[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationFailureIEs_tags_185, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationFailureIEs_tags_185) + /sizeof(asn_DEF_S1AP_UEContextModificationFailureIEs_tags_185[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationFailureIEs_185, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationFailureIEs_specs_185 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_192[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs__value, choice.UERadioCapability), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapability" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_192[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 } /* UERadioCapability */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_192 = { + sizeof(struct S1AP_UERadioCapabilityMatchRequestIEs__value), + offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs__value, present), + sizeof(((struct S1AP_UERadioCapabilityMatchRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_192, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_192 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_192, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_192 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UERadioCapabilityMatchRequestIEs_189[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_190, &asn_PER_memb_S1AP_id_constr_190, memb_S1AP_id_constraint_189 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UERadioCapabilityMatchRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_191, &asn_PER_memb_S1AP_criticality_constr_191, memb_S1AP_criticality_constraint_189 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_192, + select_UERadioCapabilityMatchRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_192, &asn_PER_memb_S1AP_value_constr_192, memb_S1AP_value_constraint_189 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UERadioCapabilityMatchRequestIEs_tag2el_189[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UERadioCapabilityMatchRequestIEs_specs_189 = { + sizeof(struct S1AP_UERadioCapabilityMatchRequestIEs), + offsetof(struct S1AP_UERadioCapabilityMatchRequestIEs, _asn_ctx), + asn_MAP_S1AP_UERadioCapabilityMatchRequestIEs_tag2el_189, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs = { + "UERadioCapabilityMatchRequestIEs", + "UERadioCapabilityMatchRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs_tags_189, + sizeof(asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs_tags_189) + /sizeof(asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs_tags_189[0]), /* 1 */ + asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs_tags_189, /* Same as above */ + sizeof(asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs_tags_189) + /sizeof(asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs_tags_189[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UERadioCapabilityMatchRequestIEs_189, + 3, /* Elements count */ + &asn_SPC_S1AP_UERadioCapabilityMatchRequestIEs_specs_189 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_196[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs__value, choice.VoiceSupportMatchIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_VoiceSupportMatchIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "VoiceSupportMatchIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_196[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* VoiceSupportMatchIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_196 = { + sizeof(struct S1AP_UERadioCapabilityMatchResponseIEs__value), + offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs__value, present), + sizeof(((struct S1AP_UERadioCapabilityMatchResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_196, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_196 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_196, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_196 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UERadioCapabilityMatchResponseIEs_193[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_194, &asn_PER_memb_S1AP_id_constr_194, memb_S1AP_id_constraint_193 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UERadioCapabilityMatchResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_195, &asn_PER_memb_S1AP_criticality_constr_195, memb_S1AP_criticality_constraint_193 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_196, + select_UERadioCapabilityMatchResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_196, &asn_PER_memb_S1AP_value_constr_196, memb_S1AP_value_constraint_193 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UERadioCapabilityMatchResponseIEs_tag2el_193[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UERadioCapabilityMatchResponseIEs_specs_193 = { + sizeof(struct S1AP_UERadioCapabilityMatchResponseIEs), + offsetof(struct S1AP_UERadioCapabilityMatchResponseIEs, _asn_ctx), + asn_MAP_S1AP_UERadioCapabilityMatchResponseIEs_tag2el_193, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs = { + "UERadioCapabilityMatchResponseIEs", + "UERadioCapabilityMatchResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs_tags_193, + sizeof(asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs_tags_193) + /sizeof(asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs_tags_193[0]), /* 1 */ + asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs_tags_193, /* Same as above */ + sizeof(asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs_tags_193) + /sizeof(asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs_tags_193[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UERadioCapabilityMatchResponseIEs_193, + 3, /* Elements count */ + &asn_SPC_S1AP_UERadioCapabilityMatchResponseIEs_specs_193 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_200[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs__value, choice.NAS_PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_NAS_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NAS-PDU" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs__value, choice.HandoverRestrictionList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRestrictionList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs__value, choice.SubscriberProfileIDforRFP), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SubscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs__value, choice.SRVCCOperationPossible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_SRVCCOperationPossible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCOperationPossible" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs__value, choice.UERadioCapability), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapability" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs__value, choice.DLNASPDUDeliveryAckRequest), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_DLNASPDUDeliveryAckRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DLNASPDUDeliveryAckRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs__value, choice.EnhancedCoverageRestricted), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_EnhancedCoverageRestricted, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EnhancedCoverageRestricted" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_200[] = { 0, 1, 4, 6, 2, 8, 5, 7, 3 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_200[] = { 0, 1, 4, 8, 2, 6, 3, 7, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_200[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* SubscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* NAS-PDU */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 0 }, /* UERadioCapability */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 2 }, /* SRVCCOperationPossible */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, -1, 1 }, /* DLNASPDUDeliveryAckRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 8, -2, 0 }, /* EnhancedCoverageRestricted */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 } /* HandoverRestrictionList */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_200 = { + sizeof(struct S1AP_DownlinkNASTransport_IEs__value), + offsetof(struct S1AP_DownlinkNASTransport_IEs__value, _asn_ctx), + offsetof(struct S1AP_DownlinkNASTransport_IEs__value, present), + sizeof(((struct S1AP_DownlinkNASTransport_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_200, + 9, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_200, + asn_MAP_S1AP_value_from_canonical_200, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_200 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_200, + 9, /* Elements count */ + &asn_SPC_S1AP_value_specs_200 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_DownlinkNASTransport_IEs_197[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_198, &asn_PER_memb_S1AP_id_constr_198, memb_S1AP_id_constraint_197 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_DownlinkNASTransport_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_199, &asn_PER_memb_S1AP_criticality_constr_199, memb_S1AP_criticality_constraint_197 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNASTransport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_200, + select_DownlinkNASTransport_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_200, &asn_PER_memb_S1AP_value_constr_200, memb_S1AP_value_constraint_197 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DownlinkNASTransport_IEs_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DownlinkNASTransport_IEs_tag2el_197[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkNASTransport_IEs_specs_197 = { + sizeof(struct S1AP_DownlinkNASTransport_IEs), + offsetof(struct S1AP_DownlinkNASTransport_IEs, _asn_ctx), + asn_MAP_S1AP_DownlinkNASTransport_IEs_tag2el_197, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkNASTransport_IEs = { + "DownlinkNASTransport-IEs", + "DownlinkNASTransport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DownlinkNASTransport_IEs_tags_197, + sizeof(asn_DEF_S1AP_DownlinkNASTransport_IEs_tags_197) + /sizeof(asn_DEF_S1AP_DownlinkNASTransport_IEs_tags_197[0]), /* 1 */ + asn_DEF_S1AP_DownlinkNASTransport_IEs_tags_197, /* Same as above */ + sizeof(asn_DEF_S1AP_DownlinkNASTransport_IEs_tags_197) + /sizeof(asn_DEF_S1AP_DownlinkNASTransport_IEs_tags_197[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DownlinkNASTransport_IEs_197, + 3, /* Elements count */ + &asn_SPC_S1AP_DownlinkNASTransport_IEs_specs_197 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_204[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.NAS_PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_NAS_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NAS-PDU" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.TAI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.EUTRAN_CGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRAN-CGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.RRC_Establishment_Cause), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_RRC_Establishment_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRC-Establishment-Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.S_TMSI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S_TMSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "S-TMSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.CSG_Id), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_CSG_Id, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-Id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.GUMMEI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.CellAccessMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CellAccessMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellAccessMode" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.TransportLayerAddress), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TransportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.RelayNode_Indicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_RelayNode_Indicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RelayNode-Indicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.GUMMEIType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_GUMMEIType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEIType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.TunnelInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TunnelInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TunnelInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.LHN_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_LHN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LHN-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.MME_Group_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_MME_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-Group-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.UE_Usage_Type), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_UE_Usage_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-Usage-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.CE_mode_B_SupportIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CE_mode_B_SupportIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CE-mode-B-SupportIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.DCN_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_DCN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DCN-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs__value, choice.Coverage_Level), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Coverage_Level, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Coverage-Level" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_204[] = { 0, 17, 15, 9, 6, 14, 1, 13, 8, 4, 10, 11, 18, 16, 12, 7, 3, 5, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_204[] = { 0, 6, 18, 16, 9, 17, 4, 15, 8, 3, 10, 11, 14, 7, 5, 2, 13, 1, 12 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_204[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 15, -1, 1 }, /* UE-Usage-Type */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 17, -2, 0 }, /* DCN-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 6, 0, 1 }, /* CSG-Id */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 9, -1, 0 }, /* TransportLayerAddress */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 2 }, /* NAS-PDU */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 13, -1, 1 }, /* LHN-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 14, -2, 0 }, /* MME-Group-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 5 }, /* RRC-Establishment-Cause */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 8, -1, 4 }, /* CellAccessMode */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 10, -2, 3 }, /* RelayNode-Indicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, -3, 2 }, /* GUMMEIType */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 16, -4, 1 }, /* CE-mode-B-SupportIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 18, -5, 0 }, /* Coverage-Level */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 4 }, /* TAI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 3 }, /* EUTRAN-CGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -2, 2 }, /* S-TMSI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -3, 1 }, /* GUMMEI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -4, 0 } /* TunnelInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_204 = { + sizeof(struct S1AP_InitialUEMessage_IEs__value), + offsetof(struct S1AP_InitialUEMessage_IEs__value, _asn_ctx), + offsetof(struct S1AP_InitialUEMessage_IEs__value, present), + sizeof(((struct S1AP_InitialUEMessage_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_204, + 19, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_204, + asn_MAP_S1AP_value_from_canonical_204, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_204 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_204, + 19, /* Elements count */ + &asn_SPC_S1AP_value_specs_204 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_InitialUEMessage_IEs_201[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_202, &asn_PER_memb_S1AP_id_constr_202, memb_S1AP_id_constraint_201 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_InitialUEMessage_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_203, &asn_PER_memb_S1AP_criticality_constr_203, memb_S1AP_criticality_constraint_201 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_InitialUEMessage_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_204, + select_InitialUEMessage_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_204, &asn_PER_memb_S1AP_value_constr_204, memb_S1AP_value_constraint_201 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_InitialUEMessage_IEs_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_InitialUEMessage_IEs_tag2el_201[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialUEMessage_IEs_specs_201 = { + sizeof(struct S1AP_InitialUEMessage_IEs), + offsetof(struct S1AP_InitialUEMessage_IEs, _asn_ctx), + asn_MAP_S1AP_InitialUEMessage_IEs_tag2el_201, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_InitialUEMessage_IEs = { + "InitialUEMessage-IEs", + "InitialUEMessage-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_InitialUEMessage_IEs_tags_201, + sizeof(asn_DEF_S1AP_InitialUEMessage_IEs_tags_201) + /sizeof(asn_DEF_S1AP_InitialUEMessage_IEs_tags_201[0]), /* 1 */ + asn_DEF_S1AP_InitialUEMessage_IEs_tags_201, /* Same as above */ + sizeof(asn_DEF_S1AP_InitialUEMessage_IEs_tags_201) + /sizeof(asn_DEF_S1AP_InitialUEMessage_IEs_tags_201[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_InitialUEMessage_IEs_201, + 3, /* Elements count */ + &asn_SPC_S1AP_InitialUEMessage_IEs_specs_201 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_208[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs__value, choice.NAS_PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_NAS_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NAS-PDU" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs__value, choice.EUTRAN_CGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRAN-CGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs__value, choice.TAI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs__value, choice.TransportLayerAddress), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TransportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs__value, choice.LHN_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_LHN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LHN-ID" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_208[] = { 0, 1, 5, 6, 2, 3, 4 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_208[] = { 0, 1, 4, 5, 6, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_208[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 5, 0, 0 }, /* TransportLayerAddress */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* NAS-PDU */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 0 }, /* LHN-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 1 }, /* EUTRAN-CGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 } /* TAI */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_208 = { + sizeof(struct S1AP_UplinkNASTransport_IEs__value), + offsetof(struct S1AP_UplinkNASTransport_IEs__value, _asn_ctx), + offsetof(struct S1AP_UplinkNASTransport_IEs__value, present), + sizeof(((struct S1AP_UplinkNASTransport_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_208, + 7, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_208, + asn_MAP_S1AP_value_from_canonical_208, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_208 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_208, + 7, /* Elements count */ + &asn_SPC_S1AP_value_specs_208 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UplinkNASTransport_IEs_205[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_206, &asn_PER_memb_S1AP_id_constr_206, memb_S1AP_id_constraint_205 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UplinkNASTransport_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_207, &asn_PER_memb_S1AP_criticality_constr_207, memb_S1AP_criticality_constraint_205 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_208, + select_UplinkNASTransport_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_208, &asn_PER_memb_S1AP_value_constr_208, memb_S1AP_value_constraint_205 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UplinkNASTransport_IEs_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UplinkNASTransport_IEs_tag2el_205[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkNASTransport_IEs_specs_205 = { + sizeof(struct S1AP_UplinkNASTransport_IEs), + offsetof(struct S1AP_UplinkNASTransport_IEs, _asn_ctx), + asn_MAP_S1AP_UplinkNASTransport_IEs_tag2el_205, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkNASTransport_IEs = { + "UplinkNASTransport-IEs", + "UplinkNASTransport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UplinkNASTransport_IEs_tags_205, + sizeof(asn_DEF_S1AP_UplinkNASTransport_IEs_tags_205) + /sizeof(asn_DEF_S1AP_UplinkNASTransport_IEs_tags_205[0]), /* 1 */ + asn_DEF_S1AP_UplinkNASTransport_IEs_tags_205, /* Same as above */ + sizeof(asn_DEF_S1AP_UplinkNASTransport_IEs_tags_205) + /sizeof(asn_DEF_S1AP_UplinkNASTransport_IEs_tags_205[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UplinkNASTransport_IEs_205, + 3, /* Elements count */ + &asn_SPC_S1AP_UplinkNASTransport_IEs_specs_205 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_212[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASNonDeliveryIndication_IEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASNonDeliveryIndication_IEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASNonDeliveryIndication_IEs__value, choice.NAS_PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_NAS_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NAS-PDU" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASNonDeliveryIndication_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_212[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* NAS-PDU */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_212 = { + sizeof(struct S1AP_NASNonDeliveryIndication_IEs__value), + offsetof(struct S1AP_NASNonDeliveryIndication_IEs__value, _asn_ctx), + offsetof(struct S1AP_NASNonDeliveryIndication_IEs__value, present), + sizeof(((struct S1AP_NASNonDeliveryIndication_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_212, + 8, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_212 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_212, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_212 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_NASNonDeliveryIndication_IEs_209[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASNonDeliveryIndication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_210, &asn_PER_memb_S1AP_id_constr_210, memb_S1AP_id_constraint_209 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASNonDeliveryIndication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_NASNonDeliveryIndication_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_211, &asn_PER_memb_S1AP_criticality_constr_211, memb_S1AP_criticality_constraint_209 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_NASNonDeliveryIndication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_212, + select_NASNonDeliveryIndication_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_212, &asn_PER_memb_S1AP_value_constr_212, memb_S1AP_value_constraint_209 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NASNonDeliveryIndication_IEs_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_NASNonDeliveryIndication_IEs_tag2el_209[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_NASNonDeliveryIndication_IEs_specs_209 = { + sizeof(struct S1AP_NASNonDeliveryIndication_IEs), + offsetof(struct S1AP_NASNonDeliveryIndication_IEs, _asn_ctx), + asn_MAP_S1AP_NASNonDeliveryIndication_IEs_tag2el_209, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NASNonDeliveryIndication_IEs = { + "NASNonDeliveryIndication-IEs", + "NASNonDeliveryIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_NASNonDeliveryIndication_IEs_tags_209, + sizeof(asn_DEF_S1AP_NASNonDeliveryIndication_IEs_tags_209) + /sizeof(asn_DEF_S1AP_NASNonDeliveryIndication_IEs_tags_209[0]), /* 1 */ + asn_DEF_S1AP_NASNonDeliveryIndication_IEs_tags_209, /* Same as above */ + sizeof(asn_DEF_S1AP_NASNonDeliveryIndication_IEs_tags_209) + /sizeof(asn_DEF_S1AP_NASNonDeliveryIndication_IEs_tags_209[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_NASNonDeliveryIndication_IEs_209, + 3, /* Elements count */ + &asn_SPC_S1AP_NASNonDeliveryIndication_IEs_specs_209 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_216[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest_IEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest_IEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest_IEs__value, choice.OCTET_STRING), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "OCTET STRING" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest_IEs__value, choice.MME_Group_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_MME_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-Group-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest_IEs__value, choice.Additional_GUTI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Additional_GUTI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Additional-GUTI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest_IEs__value, choice.UE_Usage_Type), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_UE_Usage_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-Usage-Type" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_216[] = { 0, 1, 5, 2, 3, 4 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_216[] = { 0, 1, 3, 4, 5, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_216[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* UE-Usage-Type */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* OCTET STRING */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 0 }, /* MME-Group-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 0 } /* Additional-GUTI */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_216 = { + sizeof(struct S1AP_RerouteNASRequest_IEs__value), + offsetof(struct S1AP_RerouteNASRequest_IEs__value, _asn_ctx), + offsetof(struct S1AP_RerouteNASRequest_IEs__value, present), + sizeof(((struct S1AP_RerouteNASRequest_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_216, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_216, + asn_MAP_S1AP_value_from_canonical_216, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_216 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_216, + 6, /* Elements count */ + &asn_SPC_S1AP_value_specs_216 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RerouteNASRequest_IEs_213[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_214, &asn_PER_memb_S1AP_id_constr_214, memb_S1AP_id_constraint_213 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_RerouteNASRequest_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_215, &asn_PER_memb_S1AP_criticality_constr_215, memb_S1AP_criticality_constraint_213 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_216, + select_RerouteNASRequest_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_216, &asn_PER_memb_S1AP_value_constr_216, memb_S1AP_value_constraint_213 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RerouteNASRequest_IEs_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RerouteNASRequest_IEs_tag2el_213[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RerouteNASRequest_IEs_specs_213 = { + sizeof(struct S1AP_RerouteNASRequest_IEs), + offsetof(struct S1AP_RerouteNASRequest_IEs, _asn_ctx), + asn_MAP_S1AP_RerouteNASRequest_IEs_tag2el_213, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RerouteNASRequest_IEs = { + "RerouteNASRequest-IEs", + "RerouteNASRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RerouteNASRequest_IEs_tags_213, + sizeof(asn_DEF_S1AP_RerouteNASRequest_IEs_tags_213) + /sizeof(asn_DEF_S1AP_RerouteNASRequest_IEs_tags_213[0]), /* 1 */ + asn_DEF_S1AP_RerouteNASRequest_IEs_tags_213, /* Same as above */ + sizeof(asn_DEF_S1AP_RerouteNASRequest_IEs_tags_213) + /sizeof(asn_DEF_S1AP_RerouteNASRequest_IEs_tags_213[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RerouteNASRequest_IEs_213, + 3, /* Elements count */ + &asn_SPC_S1AP_RerouteNASRequest_IEs_specs_213 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_220 = { + sizeof(struct S1AP_NASDeliveryIndicationIEs__value), + offsetof(struct S1AP_NASDeliveryIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_NASDeliveryIndicationIEs__value, present), + sizeof(((struct S1AP_NASDeliveryIndicationIEs__value *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_220 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_S1AP_value_specs_220 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_NASDeliveryIndicationIEs_217[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASDeliveryIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_218, &asn_PER_memb_S1AP_id_constr_218, memb_S1AP_id_constraint_217 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_NASDeliveryIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + 0, + { &asn_OER_memb_S1AP_criticality_constr_219, &asn_PER_memb_S1AP_criticality_constr_219, memb_S1AP_criticality_constraint_217 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_NASDeliveryIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_220, + 0, + { &asn_OER_memb_S1AP_value_constr_220, &asn_PER_memb_S1AP_value_constr_220, memb_S1AP_value_constraint_217 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_NASDeliveryIndicationIEs_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_NASDeliveryIndicationIEs_tag2el_217[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_NASDeliveryIndicationIEs_specs_217 = { + sizeof(struct S1AP_NASDeliveryIndicationIEs), + offsetof(struct S1AP_NASDeliveryIndicationIEs, _asn_ctx), + asn_MAP_S1AP_NASDeliveryIndicationIEs_tag2el_217, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_NASDeliveryIndicationIEs = { + "NASDeliveryIndicationIEs", + "NASDeliveryIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_NASDeliveryIndicationIEs_tags_217, + sizeof(asn_DEF_S1AP_NASDeliveryIndicationIEs_tags_217) + /sizeof(asn_DEF_S1AP_NASDeliveryIndicationIEs_tags_217[0]), /* 1 */ + asn_DEF_S1AP_NASDeliveryIndicationIEs_tags_217, /* Same as above */ + sizeof(asn_DEF_S1AP_NASDeliveryIndicationIEs_tags_217) + /sizeof(asn_DEF_S1AP_NASDeliveryIndicationIEs_tags_217[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_NASDeliveryIndicationIEs_217, + 3, /* Elements count */ + &asn_SPC_S1AP_NASDeliveryIndicationIEs_specs_217 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_224[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetIEs__value, choice.ResetType), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_ResetType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_224[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 1 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, -1, 0 }, /* s1-Interface */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 1 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, -1, 0 }, /* partOfS1-Interface */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_224 = { + sizeof(struct S1AP_ResetIEs__value), + offsetof(struct S1AP_ResetIEs__value, _asn_ctx), + offsetof(struct S1AP_ResetIEs__value, present), + sizeof(((struct S1AP_ResetIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_224, + 7, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_224 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_224, + 2, /* Elements count */ + &asn_SPC_S1AP_value_specs_224 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ResetIEs_221[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_222, &asn_PER_memb_S1AP_id_constr_222, memb_S1AP_id_constraint_221 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ResetIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_223, &asn_PER_memb_S1AP_criticality_constr_223, memb_S1AP_criticality_constraint_221 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_224, + select_ResetIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_224, &asn_PER_memb_S1AP_value_constr_224, memb_S1AP_value_constraint_221 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ResetIEs_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ResetIEs_tag2el_221[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ResetIEs_specs_221 = { + sizeof(struct S1AP_ResetIEs), + offsetof(struct S1AP_ResetIEs, _asn_ctx), + asn_MAP_S1AP_ResetIEs_tag2el_221, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ResetIEs = { + "ResetIEs", + "ResetIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ResetIEs_tags_221, + sizeof(asn_DEF_S1AP_ResetIEs_tags_221) + /sizeof(asn_DEF_S1AP_ResetIEs_tags_221[0]), /* 1 */ + asn_DEF_S1AP_ResetIEs_tags_221, /* Same as above */ + sizeof(asn_DEF_S1AP_ResetIEs_tags_221) + /sizeof(asn_DEF_S1AP_ResetIEs_tags_221[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ResetIEs_221, + 3, /* Elements count */ + &asn_SPC_S1AP_ResetIEs_specs_221 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_228[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetAcknowledgeIEs__value, choice.UE_associatedLogicalS1_ConnectionListResAck), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-associatedLogicalS1-ConnectionListResAck" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetAcknowledgeIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_228[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* UE-associatedLogicalS1-ConnectionListResAck */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_228 = { + sizeof(struct S1AP_ResetAcknowledgeIEs__value), + offsetof(struct S1AP_ResetAcknowledgeIEs__value, _asn_ctx), + offsetof(struct S1AP_ResetAcknowledgeIEs__value, present), + sizeof(((struct S1AP_ResetAcknowledgeIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_228, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_228 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_228, + 2, /* Elements count */ + &asn_SPC_S1AP_value_specs_228 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ResetAcknowledgeIEs_225[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetAcknowledgeIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_226, &asn_PER_memb_S1AP_id_constr_226, memb_S1AP_id_constraint_225 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetAcknowledgeIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ResetAcknowledgeIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_227, &asn_PER_memb_S1AP_criticality_constr_227, memb_S1AP_criticality_constraint_225 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetAcknowledgeIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_228, + select_ResetAcknowledgeIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_228, &asn_PER_memb_S1AP_value_constr_228, memb_S1AP_value_constraint_225 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ResetAcknowledgeIEs_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ResetAcknowledgeIEs_tag2el_225[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ResetAcknowledgeIEs_specs_225 = { + sizeof(struct S1AP_ResetAcknowledgeIEs), + offsetof(struct S1AP_ResetAcknowledgeIEs, _asn_ctx), + asn_MAP_S1AP_ResetAcknowledgeIEs_tag2el_225, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ResetAcknowledgeIEs = { + "ResetAcknowledgeIEs", + "ResetAcknowledgeIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ResetAcknowledgeIEs_tags_225, + sizeof(asn_DEF_S1AP_ResetAcknowledgeIEs_tags_225) + /sizeof(asn_DEF_S1AP_ResetAcknowledgeIEs_tags_225[0]), /* 1 */ + asn_DEF_S1AP_ResetAcknowledgeIEs_tags_225, /* Same as above */ + sizeof(asn_DEF_S1AP_ResetAcknowledgeIEs_tags_225) + /sizeof(asn_DEF_S1AP_ResetAcknowledgeIEs_tags_225[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ResetAcknowledgeIEs_225, + 3, /* Elements count */ + &asn_SPC_S1AP_ResetAcknowledgeIEs_specs_225 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_232[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ErrorIndicationIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ErrorIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ErrorIndicationIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ErrorIndicationIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_232[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_232[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_232[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_232 = { + sizeof(struct S1AP_ErrorIndicationIEs__value), + offsetof(struct S1AP_ErrorIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_ErrorIndicationIEs__value, present), + sizeof(((struct S1AP_ErrorIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_232, + 8, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_232, + asn_MAP_S1AP_value_from_canonical_232, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_232 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_232, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_232 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ErrorIndicationIEs_229[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ErrorIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_230, &asn_PER_memb_S1AP_id_constr_230, memb_S1AP_id_constraint_229 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ErrorIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ErrorIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_231, &asn_PER_memb_S1AP_criticality_constr_231, memb_S1AP_criticality_constraint_229 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ErrorIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_232, + select_ErrorIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_232, &asn_PER_memb_S1AP_value_constr_232, memb_S1AP_value_constraint_229 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ErrorIndicationIEs_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ErrorIndicationIEs_tag2el_229[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ErrorIndicationIEs_specs_229 = { + sizeof(struct S1AP_ErrorIndicationIEs), + offsetof(struct S1AP_ErrorIndicationIEs, _asn_ctx), + asn_MAP_S1AP_ErrorIndicationIEs_tag2el_229, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ErrorIndicationIEs = { + "ErrorIndicationIEs", + "ErrorIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ErrorIndicationIEs_tags_229, + sizeof(asn_DEF_S1AP_ErrorIndicationIEs_tags_229) + /sizeof(asn_DEF_S1AP_ErrorIndicationIEs_tags_229[0]), /* 1 */ + asn_DEF_S1AP_ErrorIndicationIEs_tags_229, /* Same as above */ + sizeof(asn_DEF_S1AP_ErrorIndicationIEs_tags_229) + /sizeof(asn_DEF_S1AP_ErrorIndicationIEs_tags_229[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ErrorIndicationIEs_229, + 3, /* Elements count */ + &asn_SPC_S1AP_ErrorIndicationIEs_specs_229 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_236[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs__value, choice.Global_ENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Global_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Global-ENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs__value, choice.ENBname), + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), + 0, + &asn_DEF_S1AP_ENBname, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBname" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs__value, choice.SupportedTAs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SupportedTAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SupportedTAs" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs__value, choice.PagingDRX), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_PagingDRX, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PagingDRX" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs__value, choice.CSG_IdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CSG_IdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-IdList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs__value, choice.UE_RetentionInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_UE_RetentionInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RetentionInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs__value, choice.NB_IoT_DefaultPagingDRX), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_NB_IoT_DefaultPagingDRX, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NB-IoT-DefaultPagingDRX" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_236[] = { 3, 5, 6, 0, 4, 2, 1 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_236[] = { 3, 6, 5, 0, 4, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_236[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 2 }, /* PagingDRX */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, -1, 1 }, /* UE-RetentionInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -2, 0 }, /* NB-IoT-DefaultPagingDRX */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* Global-ENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* SupportedTAs */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 }, /* CSG-IdList */ + { (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), 1, 0, 0 } /* ENBname */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_236 = { + sizeof(struct S1AP_S1SetupRequestIEs__value), + offsetof(struct S1AP_S1SetupRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_S1SetupRequestIEs__value, present), + sizeof(((struct S1AP_S1SetupRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_236, + 7, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_236, + asn_MAP_S1AP_value_from_canonical_236, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_236 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_236, + 7, /* Elements count */ + &asn_SPC_S1AP_value_specs_236 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_S1SetupRequestIEs_233[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_234, &asn_PER_memb_S1AP_id_constr_234, memb_S1AP_id_constraint_233 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_S1SetupRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_235, &asn_PER_memb_S1AP_criticality_constr_235, memb_S1AP_criticality_constraint_233 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_236, + select_S1SetupRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_236, &asn_PER_memb_S1AP_value_constr_236, memb_S1AP_value_constraint_233 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_S1SetupRequestIEs_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_S1SetupRequestIEs_tag2el_233[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupRequestIEs_specs_233 = { + sizeof(struct S1AP_S1SetupRequestIEs), + offsetof(struct S1AP_S1SetupRequestIEs, _asn_ctx), + asn_MAP_S1AP_S1SetupRequestIEs_tag2el_233, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupRequestIEs = { + "S1SetupRequestIEs", + "S1SetupRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_S1SetupRequestIEs_tags_233, + sizeof(asn_DEF_S1AP_S1SetupRequestIEs_tags_233) + /sizeof(asn_DEF_S1AP_S1SetupRequestIEs_tags_233[0]), /* 1 */ + asn_DEF_S1AP_S1SetupRequestIEs_tags_233, /* Same as above */ + sizeof(asn_DEF_S1AP_S1SetupRequestIEs_tags_233) + /sizeof(asn_DEF_S1AP_S1SetupRequestIEs_tags_233[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_S1SetupRequestIEs_233, + 3, /* Elements count */ + &asn_SPC_S1AP_S1SetupRequestIEs_specs_233 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_240[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs__value, choice.MMEname), + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), + 0, + &asn_DEF_S1AP_MMEname, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMEname" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs__value, choice.ServedGUMMEIs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ServedGUMMEIs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedGUMMEIs" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs__value, choice.RelativeMMECapacity), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_RelativeMMECapacity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RelativeMMECapacity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs__value, choice.MMERelaySupportIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_MMERelaySupportIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMERelaySupportIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs__value, choice.UE_RetentionInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_UE_RetentionInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RetentionInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs__value, choice.ServedDCNs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ServedDCNs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedDCNs" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_240[] = { 2, 3, 5, 4, 6, 1, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_240[] = { 6, 5, 0, 1, 3, 2, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_240[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, 0, 0 }, /* RelativeMMECapacity */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 1 }, /* MMERelaySupportIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, -1, 0 }, /* UE-RetentionInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* ServedGUMMEIs */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -2, 0 }, /* ServedDCNs */ + { (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), 0, 0, 0 } /* MMEname */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_240 = { + sizeof(struct S1AP_S1SetupResponseIEs__value), + offsetof(struct S1AP_S1SetupResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_S1SetupResponseIEs__value, present), + sizeof(((struct S1AP_S1SetupResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_240, + 7, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_240, + asn_MAP_S1AP_value_from_canonical_240, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_240 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_240, + 7, /* Elements count */ + &asn_SPC_S1AP_value_specs_240 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_S1SetupResponseIEs_237[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_238, &asn_PER_memb_S1AP_id_constr_238, memb_S1AP_id_constraint_237 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_S1SetupResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_239, &asn_PER_memb_S1AP_criticality_constr_239, memb_S1AP_criticality_constraint_237 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_240, + select_S1SetupResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_240, &asn_PER_memb_S1AP_value_constr_240, memb_S1AP_value_constraint_237 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_S1SetupResponseIEs_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_S1SetupResponseIEs_tag2el_237[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupResponseIEs_specs_237 = { + sizeof(struct S1AP_S1SetupResponseIEs), + offsetof(struct S1AP_S1SetupResponseIEs, _asn_ctx), + asn_MAP_S1AP_S1SetupResponseIEs_tag2el_237, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupResponseIEs = { + "S1SetupResponseIEs", + "S1SetupResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_S1SetupResponseIEs_tags_237, + sizeof(asn_DEF_S1AP_S1SetupResponseIEs_tags_237) + /sizeof(asn_DEF_S1AP_S1SetupResponseIEs_tags_237[0]), /* 1 */ + asn_DEF_S1AP_S1SetupResponseIEs_tags_237, /* Same as above */ + sizeof(asn_DEF_S1AP_S1SetupResponseIEs_tags_237) + /sizeof(asn_DEF_S1AP_S1SetupResponseIEs_tags_237[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_S1SetupResponseIEs_237, + 3, /* Elements count */ + &asn_SPC_S1AP_S1SetupResponseIEs_specs_237 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_244[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupFailureIEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_244[] = { 1, 2, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_244[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_244[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_244 = { + sizeof(struct S1AP_S1SetupFailureIEs__value), + offsetof(struct S1AP_S1SetupFailureIEs__value, _asn_ctx), + offsetof(struct S1AP_S1SetupFailureIEs__value, present), + sizeof(((struct S1AP_S1SetupFailureIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_244, + 7, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_244, + asn_MAP_S1AP_value_from_canonical_244, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_244 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_244, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_244 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_S1SetupFailureIEs_241[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_242, &asn_PER_memb_S1AP_id_constr_242, memb_S1AP_id_constraint_241 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_S1SetupFailureIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_243, &asn_PER_memb_S1AP_criticality_constr_243, memb_S1AP_criticality_constraint_241 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_244, + select_S1SetupFailureIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_244, &asn_PER_memb_S1AP_value_constr_244, memb_S1AP_value_constraint_241 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_S1SetupFailureIEs_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_S1SetupFailureIEs_tag2el_241[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupFailureIEs_specs_241 = { + sizeof(struct S1AP_S1SetupFailureIEs), + offsetof(struct S1AP_S1SetupFailureIEs, _asn_ctx), + asn_MAP_S1AP_S1SetupFailureIEs_tag2el_241, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupFailureIEs = { + "S1SetupFailureIEs", + "S1SetupFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_S1SetupFailureIEs_tags_241, + sizeof(asn_DEF_S1AP_S1SetupFailureIEs_tags_241) + /sizeof(asn_DEF_S1AP_S1SetupFailureIEs_tags_241[0]), /* 1 */ + asn_DEF_S1AP_S1SetupFailureIEs_tags_241, /* Same as above */ + sizeof(asn_DEF_S1AP_S1SetupFailureIEs_tags_241) + /sizeof(asn_DEF_S1AP_S1SetupFailureIEs_tags_241[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_S1SetupFailureIEs_241, + 3, /* Elements count */ + &asn_SPC_S1AP_S1SetupFailureIEs_specs_241 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_248[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateIEs__value, choice.ENBname), + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), + 0, + &asn_DEF_S1AP_ENBname, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBname" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateIEs__value, choice.SupportedTAs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SupportedTAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SupportedTAs" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateIEs__value, choice.CSG_IdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CSG_IdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-IdList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateIEs__value, choice.PagingDRX), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_PagingDRX, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PagingDRX" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateIEs__value, choice.NB_IoT_DefaultPagingDRX), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_NB_IoT_DefaultPagingDRX, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NB-IoT-DefaultPagingDRX" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_248[] = { 3, 4, 1, 2, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_248[] = { 4, 2, 3, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_248[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 1 }, /* PagingDRX */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, -1, 0 }, /* NB-IoT-DefaultPagingDRX */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* SupportedTAs */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 }, /* CSG-IdList */ + { (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), 0, 0, 0 } /* ENBname */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_248 = { + sizeof(struct S1AP_ENBConfigurationUpdateIEs__value), + offsetof(struct S1AP_ENBConfigurationUpdateIEs__value, _asn_ctx), + offsetof(struct S1AP_ENBConfigurationUpdateIEs__value, present), + sizeof(((struct S1AP_ENBConfigurationUpdateIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_248, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_248, + asn_MAP_S1AP_value_from_canonical_248, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_248 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_248, + 5, /* Elements count */ + &asn_SPC_S1AP_value_specs_248 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateIEs_245[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_246, &asn_PER_memb_S1AP_id_constr_246, memb_S1AP_id_constraint_245 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ENBConfigurationUpdateIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_247, &asn_PER_memb_S1AP_criticality_constr_247, memb_S1AP_criticality_constraint_245 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_248, + select_ENBConfigurationUpdateIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_248, &asn_PER_memb_S1AP_value_constr_248, memb_S1AP_value_constraint_245 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBConfigurationUpdateIEs_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBConfigurationUpdateIEs_tag2el_245[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateIEs_specs_245 = { + sizeof(struct S1AP_ENBConfigurationUpdateIEs), + offsetof(struct S1AP_ENBConfigurationUpdateIEs, _asn_ctx), + asn_MAP_S1AP_ENBConfigurationUpdateIEs_tag2el_245, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateIEs = { + "ENBConfigurationUpdateIEs", + "ENBConfigurationUpdateIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBConfigurationUpdateIEs_tags_245, + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateIEs_tags_245) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateIEs_tags_245[0]), /* 1 */ + asn_DEF_S1AP_ENBConfigurationUpdateIEs_tags_245, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateIEs_tags_245) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateIEs_tags_245[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBConfigurationUpdateIEs_245, + 3, /* Elements count */ + &asn_SPC_S1AP_ENBConfigurationUpdateIEs_specs_245 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_252[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_252[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_252 = { + sizeof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs__value), + offsetof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs__value, _asn_ctx), + offsetof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs__value, present), + sizeof(((struct S1AP_ENBConfigurationUpdateAcknowledgeIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_252, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_252 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_252, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_252 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateAcknowledgeIEs_249[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_250, &asn_PER_memb_S1AP_id_constr_250, memb_S1AP_id_constraint_249 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ENBConfigurationUpdateAcknowledgeIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_251, &asn_PER_memb_S1AP_criticality_constr_251, memb_S1AP_criticality_constraint_249 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_252, + select_ENBConfigurationUpdateAcknowledgeIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_252, &asn_PER_memb_S1AP_value_constr_252, memb_S1AP_value_constraint_249 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBConfigurationUpdateAcknowledgeIEs_tag2el_249[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateAcknowledgeIEs_specs_249 = { + sizeof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs), + offsetof(struct S1AP_ENBConfigurationUpdateAcknowledgeIEs, _asn_ctx), + asn_MAP_S1AP_ENBConfigurationUpdateAcknowledgeIEs_tag2el_249, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs = { + "ENBConfigurationUpdateAcknowledgeIEs", + "ENBConfigurationUpdateAcknowledgeIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs_tags_249, + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs_tags_249) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs_tags_249[0]), /* 1 */ + asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs_tags_249, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs_tags_249) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs_tags_249[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBConfigurationUpdateAcknowledgeIEs_249, + 3, /* Elements count */ + &asn_SPC_S1AP_ENBConfigurationUpdateAcknowledgeIEs_specs_249 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_256[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_256[] = { 1, 2, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_256[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_256[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_256 = { + sizeof(struct S1AP_ENBConfigurationUpdateFailureIEs__value), + offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs__value, _asn_ctx), + offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs__value, present), + sizeof(((struct S1AP_ENBConfigurationUpdateFailureIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_256, + 7, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_256, + asn_MAP_S1AP_value_from_canonical_256, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_256 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_256, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_256 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateFailureIEs_253[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_254, &asn_PER_memb_S1AP_id_constr_254, memb_S1AP_id_constraint_253 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ENBConfigurationUpdateFailureIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_255, &asn_PER_memb_S1AP_criticality_constr_255, memb_S1AP_criticality_constraint_253 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_256, + select_ENBConfigurationUpdateFailureIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_256, &asn_PER_memb_S1AP_value_constr_256, memb_S1AP_value_constraint_253 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBConfigurationUpdateFailureIEs_tag2el_253[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateFailureIEs_specs_253 = { + sizeof(struct S1AP_ENBConfigurationUpdateFailureIEs), + offsetof(struct S1AP_ENBConfigurationUpdateFailureIEs, _asn_ctx), + asn_MAP_S1AP_ENBConfigurationUpdateFailureIEs_tag2el_253, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs = { + "ENBConfigurationUpdateFailureIEs", + "ENBConfigurationUpdateFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs_tags_253, + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs_tags_253) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs_tags_253[0]), /* 1 */ + asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs_tags_253, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs_tags_253) + /sizeof(asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs_tags_253[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBConfigurationUpdateFailureIEs_253, + 3, /* Elements count */ + &asn_SPC_S1AP_ENBConfigurationUpdateFailureIEs_specs_253 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_260[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateIEs__value, choice.MMEname), + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), + 0, + &asn_DEF_S1AP_MMEname, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMEname" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateIEs__value, choice.ServedGUMMEIs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ServedGUMMEIs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedGUMMEIs" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateIEs__value, choice.RelativeMMECapacity), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_RelativeMMECapacity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RelativeMMECapacity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateIEs__value, choice.ServedDCNs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ServedDCNs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedDCNs" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_260[] = { 2, 1, 3, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_260[] = { 3, 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_260[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, 0, 0 }, /* RelativeMMECapacity */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* ServedGUMMEIs */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* ServedDCNs */ + { (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), 0, 0, 0 } /* MMEname */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_260 = { + sizeof(struct S1AP_MMEConfigurationUpdateIEs__value), + offsetof(struct S1AP_MMEConfigurationUpdateIEs__value, _asn_ctx), + offsetof(struct S1AP_MMEConfigurationUpdateIEs__value, present), + sizeof(((struct S1AP_MMEConfigurationUpdateIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_260, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_260, + asn_MAP_S1AP_value_from_canonical_260, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_260 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_260, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_260 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateIEs_257[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_258, &asn_PER_memb_S1AP_id_constr_258, memb_S1AP_id_constraint_257 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_MMEConfigurationUpdateIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_259, &asn_PER_memb_S1AP_criticality_constr_259, memb_S1AP_criticality_constraint_257 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_260, + select_MMEConfigurationUpdateIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_260, &asn_PER_memb_S1AP_value_constr_260, memb_S1AP_value_constraint_257 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEConfigurationUpdateIEs_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEConfigurationUpdateIEs_tag2el_257[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateIEs_specs_257 = { + sizeof(struct S1AP_MMEConfigurationUpdateIEs), + offsetof(struct S1AP_MMEConfigurationUpdateIEs, _asn_ctx), + asn_MAP_S1AP_MMEConfigurationUpdateIEs_tag2el_257, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateIEs = { + "MMEConfigurationUpdateIEs", + "MMEConfigurationUpdateIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEConfigurationUpdateIEs_tags_257, + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateIEs_tags_257) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateIEs_tags_257[0]), /* 1 */ + asn_DEF_S1AP_MMEConfigurationUpdateIEs_tags_257, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateIEs_tags_257) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateIEs_tags_257[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEConfigurationUpdateIEs_257, + 3, /* Elements count */ + &asn_SPC_S1AP_MMEConfigurationUpdateIEs_specs_257 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_264[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_264[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_264 = { + sizeof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs__value), + offsetof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs__value, _asn_ctx), + offsetof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs__value, present), + sizeof(((struct S1AP_MMEConfigurationUpdateAcknowledgeIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_264, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_264 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_264, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_264 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateAcknowledgeIEs_261[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_262, &asn_PER_memb_S1AP_id_constr_262, memb_S1AP_id_constraint_261 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_MMEConfigurationUpdateAcknowledgeIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_263, &asn_PER_memb_S1AP_criticality_constr_263, memb_S1AP_criticality_constraint_261 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_264, + select_MMEConfigurationUpdateAcknowledgeIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_264, &asn_PER_memb_S1AP_value_constr_264, memb_S1AP_value_constraint_261 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEConfigurationUpdateAcknowledgeIEs_tag2el_261[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateAcknowledgeIEs_specs_261 = { + sizeof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs), + offsetof(struct S1AP_MMEConfigurationUpdateAcknowledgeIEs, _asn_ctx), + asn_MAP_S1AP_MMEConfigurationUpdateAcknowledgeIEs_tag2el_261, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs = { + "MMEConfigurationUpdateAcknowledgeIEs", + "MMEConfigurationUpdateAcknowledgeIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs_tags_261, + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs_tags_261) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs_tags_261[0]), /* 1 */ + asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs_tags_261, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs_tags_261) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs_tags_261[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEConfigurationUpdateAcknowledgeIEs_261, + 3, /* Elements count */ + &asn_SPC_S1AP_MMEConfigurationUpdateAcknowledgeIEs_specs_261 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_268[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_268[] = { 1, 2, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_268[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_268[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_268 = { + sizeof(struct S1AP_MMEConfigurationUpdateFailureIEs__value), + offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs__value, _asn_ctx), + offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs__value, present), + sizeof(((struct S1AP_MMEConfigurationUpdateFailureIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_268, + 7, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_268, + asn_MAP_S1AP_value_from_canonical_268, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_268 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_268, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_268 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateFailureIEs_265[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_266, &asn_PER_memb_S1AP_id_constr_266, memb_S1AP_id_constraint_265 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_MMEConfigurationUpdateFailureIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_267, &asn_PER_memb_S1AP_criticality_constr_267, memb_S1AP_criticality_constraint_265 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_268, + select_MMEConfigurationUpdateFailureIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_268, &asn_PER_memb_S1AP_value_constr_268, memb_S1AP_value_constraint_265 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEConfigurationUpdateFailureIEs_tag2el_265[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateFailureIEs_specs_265 = { + sizeof(struct S1AP_MMEConfigurationUpdateFailureIEs), + offsetof(struct S1AP_MMEConfigurationUpdateFailureIEs, _asn_ctx), + asn_MAP_S1AP_MMEConfigurationUpdateFailureIEs_tag2el_265, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs = { + "MMEConfigurationUpdateFailureIEs", + "MMEConfigurationUpdateFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs_tags_265, + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs_tags_265) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs_tags_265[0]), /* 1 */ + asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs_tags_265, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs_tags_265) + /sizeof(asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs_tags_265[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEConfigurationUpdateFailureIEs_265, + 3, /* Elements count */ + &asn_SPC_S1AP_MMEConfigurationUpdateFailureIEs_specs_265 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_272[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs__value, choice.E_RABSubjecttoDataForwardingList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSubjecttoDataForwardingList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABSubjecttoDataForwardingList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs__value, choice.Cdma2000HOStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000HOStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cdma2000HOStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs__value, choice.Cdma2000RATType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000RATType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cdma2000RATType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs__value, choice.Cdma2000PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cdma2000PDU" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_272[] = { 0, 1, 5, 3, 4, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_272[] = { 0, 1, 5, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_272[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 0 }, /* Cdma2000PDU */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 1 }, /* Cdma2000HOStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, -1, 0 }, /* Cdma2000RATType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* E-RABSubjecttoDataForwardingList */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_272 = { + sizeof(struct S1AP_DownlinkS1cdma2000tunnellingIEs__value), + offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs__value, _asn_ctx), + offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs__value, present), + sizeof(((struct S1AP_DownlinkS1cdma2000tunnellingIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_272, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_272, + asn_MAP_S1AP_value_from_canonical_272, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_272 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_272, + 6, /* Elements count */ + &asn_SPC_S1AP_value_specs_272 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_DownlinkS1cdma2000tunnellingIEs_269[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_270, &asn_PER_memb_S1AP_id_constr_270, memb_S1AP_id_constraint_269 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_DownlinkS1cdma2000tunnellingIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_271, &asn_PER_memb_S1AP_criticality_constr_271, memb_S1AP_criticality_constraint_269 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_272, + select_DownlinkS1cdma2000tunnellingIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_272, &asn_PER_memb_S1AP_value_constr_272, memb_S1AP_value_constraint_269 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DownlinkS1cdma2000tunnellingIEs_tag2el_269[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkS1cdma2000tunnellingIEs_specs_269 = { + sizeof(struct S1AP_DownlinkS1cdma2000tunnellingIEs), + offsetof(struct S1AP_DownlinkS1cdma2000tunnellingIEs, _asn_ctx), + asn_MAP_S1AP_DownlinkS1cdma2000tunnellingIEs_tag2el_269, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs = { + "DownlinkS1cdma2000tunnellingIEs", + "DownlinkS1cdma2000tunnellingIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs_tags_269, + sizeof(asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs_tags_269) + /sizeof(asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs_tags_269[0]), /* 1 */ + asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs_tags_269, /* Same as above */ + sizeof(asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs_tags_269) + /sizeof(asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs_tags_269[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DownlinkS1cdma2000tunnellingIEs_269, + 3, /* Elements count */ + &asn_SPC_S1AP_DownlinkS1cdma2000tunnellingIEs_specs_269 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_276[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, choice.Cdma2000RATType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000RATType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cdma2000RATType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, choice.Cdma2000SectorID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000SectorID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cdma2000SectorID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, choice.Cdma2000HORequiredIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000HORequiredIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cdma2000HORequiredIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, choice.Cdma2000OneXSRVCCInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000OneXSRVCCInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cdma2000OneXSRVCCInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, choice.Cdma2000OneXRAND), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000OneXRAND, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cdma2000OneXRAND" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, choice.Cdma2000PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_Cdma2000PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cdma2000PDU" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, choice.EUTRANRoundTripDelayEstimationInfo), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_EUTRANRoundTripDelayEstimationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRANRoundTripDelayEstimationInfo" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_276[] = { 0, 1, 8, 3, 6, 7, 4, 2, 5 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_276[] = { 0, 1, 7, 3, 6, 8, 4, 5, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_276[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 8, -2, 0 }, /* EUTRANRoundTripDelayEstimationInfo */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 2 }, /* Cdma2000SectorID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* Cdma2000OneXRAND */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* Cdma2000PDU */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 1 }, /* Cdma2000RATType */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, -1, 0 }, /* Cdma2000HORequiredIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, 0, 0 } /* Cdma2000OneXSRVCCInfo */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_276 = { + sizeof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value), + offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, _asn_ctx), + offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs__value, present), + sizeof(((struct S1AP_UplinkS1cdma2000tunnellingIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_276, + 9, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_276, + asn_MAP_S1AP_value_from_canonical_276, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_276 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_276, + 9, /* Elements count */ + &asn_SPC_S1AP_value_specs_276 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UplinkS1cdma2000tunnellingIEs_273[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_274, &asn_PER_memb_S1AP_id_constr_274, memb_S1AP_id_constraint_273 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UplinkS1cdma2000tunnellingIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_275, &asn_PER_memb_S1AP_criticality_constr_275, memb_S1AP_criticality_constraint_273 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_276, + select_UplinkS1cdma2000tunnellingIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_276, &asn_PER_memb_S1AP_value_constr_276, memb_S1AP_value_constraint_273 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UplinkS1cdma2000tunnellingIEs_tag2el_273[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkS1cdma2000tunnellingIEs_specs_273 = { + sizeof(struct S1AP_UplinkS1cdma2000tunnellingIEs), + offsetof(struct S1AP_UplinkS1cdma2000tunnellingIEs, _asn_ctx), + asn_MAP_S1AP_UplinkS1cdma2000tunnellingIEs_tag2el_273, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs = { + "UplinkS1cdma2000tunnellingIEs", + "UplinkS1cdma2000tunnellingIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs_tags_273, + sizeof(asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs_tags_273) + /sizeof(asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs_tags_273[0]), /* 1 */ + asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs_tags_273, /* Same as above */ + sizeof(asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs_tags_273) + /sizeof(asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs_tags_273[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UplinkS1cdma2000tunnellingIEs_273, + 3, /* Elements count */ + &asn_SPC_S1AP_UplinkS1cdma2000tunnellingIEs_specs_273 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_280[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UECapabilityInfoIndicationIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UECapabilityInfoIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UECapabilityInfoIndicationIEs__value, choice.UERadioCapability), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapability" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UECapabilityInfoIndicationIEs__value, choice.UERadioCapabilityForPaging), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapabilityForPaging, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapabilityForPaging" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_280[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* UERadioCapability */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 0 } /* UERadioCapabilityForPaging */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_280 = { + sizeof(struct S1AP_UECapabilityInfoIndicationIEs__value), + offsetof(struct S1AP_UECapabilityInfoIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_UECapabilityInfoIndicationIEs__value, present), + sizeof(((struct S1AP_UECapabilityInfoIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_280, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_280 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_280, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_280 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UECapabilityInfoIndicationIEs_277[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UECapabilityInfoIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_278, &asn_PER_memb_S1AP_id_constr_278, memb_S1AP_id_constraint_277 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UECapabilityInfoIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UECapabilityInfoIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_279, &asn_PER_memb_S1AP_criticality_constr_279, memb_S1AP_criticality_constraint_277 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UECapabilityInfoIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_280, + select_UECapabilityInfoIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_280, &asn_PER_memb_S1AP_value_constr_280, memb_S1AP_value_constraint_277 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UECapabilityInfoIndicationIEs_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UECapabilityInfoIndicationIEs_tag2el_277[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UECapabilityInfoIndicationIEs_specs_277 = { + sizeof(struct S1AP_UECapabilityInfoIndicationIEs), + offsetof(struct S1AP_UECapabilityInfoIndicationIEs, _asn_ctx), + asn_MAP_S1AP_UECapabilityInfoIndicationIEs_tag2el_277, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UECapabilityInfoIndicationIEs = { + "UECapabilityInfoIndicationIEs", + "UECapabilityInfoIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UECapabilityInfoIndicationIEs_tags_277, + sizeof(asn_DEF_S1AP_UECapabilityInfoIndicationIEs_tags_277) + /sizeof(asn_DEF_S1AP_UECapabilityInfoIndicationIEs_tags_277[0]), /* 1 */ + asn_DEF_S1AP_UECapabilityInfoIndicationIEs_tags_277, /* Same as above */ + sizeof(asn_DEF_S1AP_UECapabilityInfoIndicationIEs_tags_277) + /sizeof(asn_DEF_S1AP_UECapabilityInfoIndicationIEs_tags_277[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UECapabilityInfoIndicationIEs_277, + 3, /* Elements count */ + &asn_SPC_S1AP_UECapabilityInfoIndicationIEs_specs_277 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_284[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBStatusTransferIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBStatusTransferIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBStatusTransferIEs__value, choice.ENB_StatusTransfer_TransparentContainer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-StatusTransfer-TransparentContainer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_284[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* ENB-StatusTransfer-TransparentContainer */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_284 = { + sizeof(struct S1AP_ENBStatusTransferIEs__value), + offsetof(struct S1AP_ENBStatusTransferIEs__value, _asn_ctx), + offsetof(struct S1AP_ENBStatusTransferIEs__value, present), + sizeof(((struct S1AP_ENBStatusTransferIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_284, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_284 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_284, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_284 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ENBStatusTransferIEs_281[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBStatusTransferIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_282, &asn_PER_memb_S1AP_id_constr_282, memb_S1AP_id_constraint_281 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBStatusTransferIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ENBStatusTransferIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_283, &asn_PER_memb_S1AP_criticality_constr_283, memb_S1AP_criticality_constraint_281 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBStatusTransferIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_284, + select_ENBStatusTransferIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_284, &asn_PER_memb_S1AP_value_constr_284, memb_S1AP_value_constraint_281 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBStatusTransferIEs_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBStatusTransferIEs_tag2el_281[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBStatusTransferIEs_specs_281 = { + sizeof(struct S1AP_ENBStatusTransferIEs), + offsetof(struct S1AP_ENBStatusTransferIEs, _asn_ctx), + asn_MAP_S1AP_ENBStatusTransferIEs_tag2el_281, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBStatusTransferIEs = { + "ENBStatusTransferIEs", + "ENBStatusTransferIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBStatusTransferIEs_tags_281, + sizeof(asn_DEF_S1AP_ENBStatusTransferIEs_tags_281) + /sizeof(asn_DEF_S1AP_ENBStatusTransferIEs_tags_281[0]), /* 1 */ + asn_DEF_S1AP_ENBStatusTransferIEs_tags_281, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBStatusTransferIEs_tags_281) + /sizeof(asn_DEF_S1AP_ENBStatusTransferIEs_tags_281[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBStatusTransferIEs_281, + 3, /* Elements count */ + &asn_SPC_S1AP_ENBStatusTransferIEs_specs_281 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_288[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEStatusTransferIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEStatusTransferIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEStatusTransferIEs__value, choice.ENB_StatusTransfer_TransparentContainer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENB_StatusTransfer_TransparentContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-StatusTransfer-TransparentContainer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_288[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* ENB-StatusTransfer-TransparentContainer */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_288 = { + sizeof(struct S1AP_MMEStatusTransferIEs__value), + offsetof(struct S1AP_MMEStatusTransferIEs__value, _asn_ctx), + offsetof(struct S1AP_MMEStatusTransferIEs__value, present), + sizeof(((struct S1AP_MMEStatusTransferIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_288, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_288 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_288, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_288 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MMEStatusTransferIEs_285[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEStatusTransferIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_286, &asn_PER_memb_S1AP_id_constr_286, memb_S1AP_id_constraint_285 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEStatusTransferIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_MMEStatusTransferIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_287, &asn_PER_memb_S1AP_criticality_constr_287, memb_S1AP_criticality_constraint_285 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEStatusTransferIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_288, + select_MMEStatusTransferIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_288, &asn_PER_memb_S1AP_value_constr_288, memb_S1AP_value_constraint_285 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEStatusTransferIEs_tags_285[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEStatusTransferIEs_tag2el_285[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEStatusTransferIEs_specs_285 = { + sizeof(struct S1AP_MMEStatusTransferIEs), + offsetof(struct S1AP_MMEStatusTransferIEs, _asn_ctx), + asn_MAP_S1AP_MMEStatusTransferIEs_tag2el_285, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEStatusTransferIEs = { + "MMEStatusTransferIEs", + "MMEStatusTransferIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEStatusTransferIEs_tags_285, + sizeof(asn_DEF_S1AP_MMEStatusTransferIEs_tags_285) + /sizeof(asn_DEF_S1AP_MMEStatusTransferIEs_tags_285[0]), /* 1 */ + asn_DEF_S1AP_MMEStatusTransferIEs_tags_285, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEStatusTransferIEs_tags_285) + /sizeof(asn_DEF_S1AP_MMEStatusTransferIEs_tags_285[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEStatusTransferIEs_285, + 3, /* Elements count */ + &asn_SPC_S1AP_MMEStatusTransferIEs_specs_285 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_292[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceStartIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceStartIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceStartIEs__value, choice.TraceActivation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TraceActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TraceActivation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_292[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* TraceActivation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_292 = { + sizeof(struct S1AP_TraceStartIEs__value), + offsetof(struct S1AP_TraceStartIEs__value, _asn_ctx), + offsetof(struct S1AP_TraceStartIEs__value, present), + sizeof(((struct S1AP_TraceStartIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_292, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_292 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_292, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_292 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TraceStartIEs_289[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceStartIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_290, &asn_PER_memb_S1AP_id_constr_290, memb_S1AP_id_constraint_289 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceStartIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_TraceStartIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_291, &asn_PER_memb_S1AP_criticality_constr_291, memb_S1AP_criticality_constraint_289 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceStartIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_292, + select_TraceStartIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_292, &asn_PER_memb_S1AP_value_constr_292, memb_S1AP_value_constraint_289 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TraceStartIEs_tags_289[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TraceStartIEs_tag2el_289[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceStartIEs_specs_289 = { + sizeof(struct S1AP_TraceStartIEs), + offsetof(struct S1AP_TraceStartIEs, _asn_ctx), + asn_MAP_S1AP_TraceStartIEs_tag2el_289, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TraceStartIEs = { + "TraceStartIEs", + "TraceStartIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TraceStartIEs_tags_289, + sizeof(asn_DEF_S1AP_TraceStartIEs_tags_289) + /sizeof(asn_DEF_S1AP_TraceStartIEs_tags_289[0]), /* 1 */ + asn_DEF_S1AP_TraceStartIEs_tags_289, /* Same as above */ + sizeof(asn_DEF_S1AP_TraceStartIEs_tags_289) + /sizeof(asn_DEF_S1AP_TraceStartIEs_tags_289[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TraceStartIEs_289, + 3, /* Elements count */ + &asn_SPC_S1AP_TraceStartIEs_specs_289 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_296[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceFailureIndicationIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceFailureIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceFailureIndicationIEs__value, choice.E_UTRAN_Trace_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_E_UTRAN_Trace_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-UTRAN-Trace-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceFailureIndicationIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_296[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* E-UTRAN-Trace-ID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_296 = { + sizeof(struct S1AP_TraceFailureIndicationIEs__value), + offsetof(struct S1AP_TraceFailureIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_TraceFailureIndicationIEs__value, present), + sizeof(((struct S1AP_TraceFailureIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_296, + 8, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_296 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_296, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_296 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_TraceFailureIndicationIEs_293[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceFailureIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_294, &asn_PER_memb_S1AP_id_constr_294, memb_S1AP_id_constraint_293 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceFailureIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_TraceFailureIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_295, &asn_PER_memb_S1AP_criticality_constr_295, memb_S1AP_criticality_constraint_293 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceFailureIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_296, + select_TraceFailureIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_296, &asn_PER_memb_S1AP_value_constr_296, memb_S1AP_value_constraint_293 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TraceFailureIndicationIEs_tags_293[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TraceFailureIndicationIEs_tag2el_293[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceFailureIndicationIEs_specs_293 = { + sizeof(struct S1AP_TraceFailureIndicationIEs), + offsetof(struct S1AP_TraceFailureIndicationIEs, _asn_ctx), + asn_MAP_S1AP_TraceFailureIndicationIEs_tag2el_293, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TraceFailureIndicationIEs = { + "TraceFailureIndicationIEs", + "TraceFailureIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TraceFailureIndicationIEs_tags_293, + sizeof(asn_DEF_S1AP_TraceFailureIndicationIEs_tags_293) + /sizeof(asn_DEF_S1AP_TraceFailureIndicationIEs_tags_293[0]), /* 1 */ + asn_DEF_S1AP_TraceFailureIndicationIEs_tags_293, /* Same as above */ + sizeof(asn_DEF_S1AP_TraceFailureIndicationIEs_tags_293) + /sizeof(asn_DEF_S1AP_TraceFailureIndicationIEs_tags_293[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TraceFailureIndicationIEs_293, + 3, /* Elements count */ + &asn_SPC_S1AP_TraceFailureIndicationIEs_specs_293 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_300[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DeactivateTraceIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DeactivateTraceIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DeactivateTraceIEs__value, choice.E_UTRAN_Trace_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_E_UTRAN_Trace_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-UTRAN-Trace-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_300[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 } /* E-UTRAN-Trace-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_300 = { + sizeof(struct S1AP_DeactivateTraceIEs__value), + offsetof(struct S1AP_DeactivateTraceIEs__value, _asn_ctx), + offsetof(struct S1AP_DeactivateTraceIEs__value, present), + sizeof(((struct S1AP_DeactivateTraceIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_300, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_300 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_300, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_300 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_DeactivateTraceIEs_297[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DeactivateTraceIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_298, &asn_PER_memb_S1AP_id_constr_298, memb_S1AP_id_constraint_297 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DeactivateTraceIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_DeactivateTraceIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_299, &asn_PER_memb_S1AP_criticality_constr_299, memb_S1AP_criticality_constraint_297 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_DeactivateTraceIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_300, + select_DeactivateTraceIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_300, &asn_PER_memb_S1AP_value_constr_300, memb_S1AP_value_constraint_297 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DeactivateTraceIEs_tags_297[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DeactivateTraceIEs_tag2el_297[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DeactivateTraceIEs_specs_297 = { + sizeof(struct S1AP_DeactivateTraceIEs), + offsetof(struct S1AP_DeactivateTraceIEs, _asn_ctx), + asn_MAP_S1AP_DeactivateTraceIEs_tag2el_297, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DeactivateTraceIEs = { + "DeactivateTraceIEs", + "DeactivateTraceIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DeactivateTraceIEs_tags_297, + sizeof(asn_DEF_S1AP_DeactivateTraceIEs_tags_297) + /sizeof(asn_DEF_S1AP_DeactivateTraceIEs_tags_297[0]), /* 1 */ + asn_DEF_S1AP_DeactivateTraceIEs_tags_297, /* Same as above */ + sizeof(asn_DEF_S1AP_DeactivateTraceIEs_tags_297) + /sizeof(asn_DEF_S1AP_DeactivateTraceIEs_tags_297[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DeactivateTraceIEs_297, + 3, /* Elements count */ + &asn_SPC_S1AP_DeactivateTraceIEs_specs_297 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_304[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTraceIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTraceIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTraceIEs__value, choice.E_UTRAN_Trace_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_E_UTRAN_Trace_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-UTRAN-Trace-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTraceIEs__value, choice.EUTRAN_CGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRAN-CGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTraceIEs__value, choice.TransportLayerAddress), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TransportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTraceIEs__value, choice.PrivacyIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_PrivacyIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PrivacyIndicator" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_304[] = { 0, 1, 4, 2, 5, 3 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_304[] = { 0, 1, 3, 5, 2, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_304[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 4, 0, 0 }, /* TransportLayerAddress */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* E-UTRAN-Trace-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* PrivacyIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 } /* EUTRAN-CGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_304 = { + sizeof(struct S1AP_CellTrafficTraceIEs__value), + offsetof(struct S1AP_CellTrafficTraceIEs__value, _asn_ctx), + offsetof(struct S1AP_CellTrafficTraceIEs__value, present), + sizeof(((struct S1AP_CellTrafficTraceIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_304, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_304, + asn_MAP_S1AP_value_from_canonical_304, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_304 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_304, + 6, /* Elements count */ + &asn_SPC_S1AP_value_specs_304 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_CellTrafficTraceIEs_301[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTraceIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_302, &asn_PER_memb_S1AP_id_constr_302, memb_S1AP_id_constraint_301 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTraceIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_CellTrafficTraceIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_303, &asn_PER_memb_S1AP_criticality_constr_303, memb_S1AP_criticality_constraint_301 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_CellTrafficTraceIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_304, + select_CellTrafficTraceIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_304, &asn_PER_memb_S1AP_value_constr_304, memb_S1AP_value_constraint_301 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_CellTrafficTraceIEs_tags_301[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_CellTrafficTraceIEs_tag2el_301[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellTrafficTraceIEs_specs_301 = { + sizeof(struct S1AP_CellTrafficTraceIEs), + offsetof(struct S1AP_CellTrafficTraceIEs, _asn_ctx), + asn_MAP_S1AP_CellTrafficTraceIEs_tag2el_301, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_CellTrafficTraceIEs = { + "CellTrafficTraceIEs", + "CellTrafficTraceIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_CellTrafficTraceIEs_tags_301, + sizeof(asn_DEF_S1AP_CellTrafficTraceIEs_tags_301) + /sizeof(asn_DEF_S1AP_CellTrafficTraceIEs_tags_301[0]), /* 1 */ + asn_DEF_S1AP_CellTrafficTraceIEs_tags_301, /* Same as above */ + sizeof(asn_DEF_S1AP_CellTrafficTraceIEs_tags_301) + /sizeof(asn_DEF_S1AP_CellTrafficTraceIEs_tags_301[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_CellTrafficTraceIEs_301, + 3, /* Elements count */ + &asn_SPC_S1AP_CellTrafficTraceIEs_specs_301 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_308[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingControlIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingControlIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingControlIEs__value, choice.RequestType), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RequestType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RequestType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_308[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* RequestType */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_308 = { + sizeof(struct S1AP_LocationReportingControlIEs__value), + offsetof(struct S1AP_LocationReportingControlIEs__value, _asn_ctx), + offsetof(struct S1AP_LocationReportingControlIEs__value, present), + sizeof(((struct S1AP_LocationReportingControlIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_308, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_308 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_308, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_308 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_LocationReportingControlIEs_305[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingControlIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_306, &asn_PER_memb_S1AP_id_constr_306, memb_S1AP_id_constraint_305 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingControlIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_LocationReportingControlIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_307, &asn_PER_memb_S1AP_criticality_constr_307, memb_S1AP_criticality_constraint_305 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingControlIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_308, + select_LocationReportingControlIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_308, &asn_PER_memb_S1AP_value_constr_308, memb_S1AP_value_constraint_305 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LocationReportingControlIEs_tags_305[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LocationReportingControlIEs_tag2el_305[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportingControlIEs_specs_305 = { + sizeof(struct S1AP_LocationReportingControlIEs), + offsetof(struct S1AP_LocationReportingControlIEs, _asn_ctx), + asn_MAP_S1AP_LocationReportingControlIEs_tag2el_305, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportingControlIEs = { + "LocationReportingControlIEs", + "LocationReportingControlIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LocationReportingControlIEs_tags_305, + sizeof(asn_DEF_S1AP_LocationReportingControlIEs_tags_305) + /sizeof(asn_DEF_S1AP_LocationReportingControlIEs_tags_305[0]), /* 1 */ + asn_DEF_S1AP_LocationReportingControlIEs_tags_305, /* Same as above */ + sizeof(asn_DEF_S1AP_LocationReportingControlIEs_tags_305) + /sizeof(asn_DEF_S1AP_LocationReportingControlIEs_tags_305[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LocationReportingControlIEs_305, + 3, /* Elements count */ + &asn_SPC_S1AP_LocationReportingControlIEs_specs_305 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_312[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingFailureIndicationIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingFailureIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingFailureIndicationIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_312[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_312 = { + sizeof(struct S1AP_LocationReportingFailureIndicationIEs__value), + offsetof(struct S1AP_LocationReportingFailureIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_LocationReportingFailureIndicationIEs__value, present), + sizeof(((struct S1AP_LocationReportingFailureIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_312, + 7, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_312 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_312, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_312 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_LocationReportingFailureIndicationIEs_309[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingFailureIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_310, &asn_PER_memb_S1AP_id_constr_310, memb_S1AP_id_constraint_309 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingFailureIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_LocationReportingFailureIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_311, &asn_PER_memb_S1AP_criticality_constr_311, memb_S1AP_criticality_constraint_309 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportingFailureIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_312, + select_LocationReportingFailureIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_312, &asn_PER_memb_S1AP_value_constr_312, memb_S1AP_value_constraint_309 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LocationReportingFailureIndicationIEs_tags_309[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LocationReportingFailureIndicationIEs_tag2el_309[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportingFailureIndicationIEs_specs_309 = { + sizeof(struct S1AP_LocationReportingFailureIndicationIEs), + offsetof(struct S1AP_LocationReportingFailureIndicationIEs, _asn_ctx), + asn_MAP_S1AP_LocationReportingFailureIndicationIEs_tag2el_309, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportingFailureIndicationIEs = { + "LocationReportingFailureIndicationIEs", + "LocationReportingFailureIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LocationReportingFailureIndicationIEs_tags_309, + sizeof(asn_DEF_S1AP_LocationReportingFailureIndicationIEs_tags_309) + /sizeof(asn_DEF_S1AP_LocationReportingFailureIndicationIEs_tags_309[0]), /* 1 */ + asn_DEF_S1AP_LocationReportingFailureIndicationIEs_tags_309, /* Same as above */ + sizeof(asn_DEF_S1AP_LocationReportingFailureIndicationIEs_tags_309) + /sizeof(asn_DEF_S1AP_LocationReportingFailureIndicationIEs_tags_309[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LocationReportingFailureIndicationIEs_309, + 3, /* Elements count */ + &asn_SPC_S1AP_LocationReportingFailureIndicationIEs_specs_309 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_316[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportIEs__value, choice.EUTRAN_CGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRAN-CGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportIEs__value, choice.TAI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportIEs__value, choice.RequestType), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_RequestType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RequestType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_316[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* EUTRAN-CGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 1 }, /* TAI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 } /* RequestType */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_316 = { + sizeof(struct S1AP_LocationReportIEs__value), + offsetof(struct S1AP_LocationReportIEs__value, _asn_ctx), + offsetof(struct S1AP_LocationReportIEs__value, present), + sizeof(((struct S1AP_LocationReportIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_316, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_316 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_316, + 5, /* Elements count */ + &asn_SPC_S1AP_value_specs_316 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_LocationReportIEs_313[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_314, &asn_PER_memb_S1AP_id_constr_314, memb_S1AP_id_constraint_313 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_LocationReportIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_315, &asn_PER_memb_S1AP_criticality_constr_315, memb_S1AP_criticality_constraint_313 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_LocationReportIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_316, + select_LocationReportIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_316, &asn_PER_memb_S1AP_value_constr_316, memb_S1AP_value_constraint_313 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_LocationReportIEs_tags_313[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_LocationReportIEs_tag2el_313[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportIEs_specs_313 = { + sizeof(struct S1AP_LocationReportIEs), + offsetof(struct S1AP_LocationReportIEs, _asn_ctx), + asn_MAP_S1AP_LocationReportIEs_tag2el_313, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportIEs = { + "LocationReportIEs", + "LocationReportIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_LocationReportIEs_tags_313, + sizeof(asn_DEF_S1AP_LocationReportIEs_tags_313) + /sizeof(asn_DEF_S1AP_LocationReportIEs_tags_313[0]), /* 1 */ + asn_DEF_S1AP_LocationReportIEs_tags_313, /* Same as above */ + sizeof(asn_DEF_S1AP_LocationReportIEs_tags_313) + /sizeof(asn_DEF_S1AP_LocationReportIEs_tags_313[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_LocationReportIEs_313, + 3, /* Elements count */ + &asn_SPC_S1AP_LocationReportIEs_specs_313 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_320[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStartIEs__value, choice.OverloadResponse), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_OverloadResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "OverloadResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStartIEs__value, choice.GUMMEIList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GUMMEIList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEIList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStartIEs__value, choice.TrafficLoadReductionIndication), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_TrafficLoadReductionIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TrafficLoadReductionIndication" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_320[] = { 2, 1, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_320[] = { 2, 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_320[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, 0, 0 }, /* TrafficLoadReductionIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* GUMMEIList */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* overloadAction */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_320 = { + sizeof(struct S1AP_OverloadStartIEs__value), + offsetof(struct S1AP_OverloadStartIEs__value, _asn_ctx), + offsetof(struct S1AP_OverloadStartIEs__value, present), + sizeof(((struct S1AP_OverloadStartIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_320, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_320, + asn_MAP_S1AP_value_from_canonical_320, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_320 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_320, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_320 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_OverloadStartIEs_317[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStartIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_318, &asn_PER_memb_S1AP_id_constr_318, memb_S1AP_id_constraint_317 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStartIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_OverloadStartIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_319, &asn_PER_memb_S1AP_criticality_constr_319, memb_S1AP_criticality_constraint_317 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStartIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_320, + select_OverloadStartIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_320, &asn_PER_memb_S1AP_value_constr_320, memb_S1AP_value_constraint_317 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_OverloadStartIEs_tags_317[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_OverloadStartIEs_tag2el_317[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_OverloadStartIEs_specs_317 = { + sizeof(struct S1AP_OverloadStartIEs), + offsetof(struct S1AP_OverloadStartIEs, _asn_ctx), + asn_MAP_S1AP_OverloadStartIEs_tag2el_317, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadStartIEs = { + "OverloadStartIEs", + "OverloadStartIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_OverloadStartIEs_tags_317, + sizeof(asn_DEF_S1AP_OverloadStartIEs_tags_317) + /sizeof(asn_DEF_S1AP_OverloadStartIEs_tags_317[0]), /* 1 */ + asn_DEF_S1AP_OverloadStartIEs_tags_317, /* Same as above */ + sizeof(asn_DEF_S1AP_OverloadStartIEs_tags_317) + /sizeof(asn_DEF_S1AP_OverloadStartIEs_tags_317[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_OverloadStartIEs_317, + 3, /* Elements count */ + &asn_SPC_S1AP_OverloadStartIEs_specs_317 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_324[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStopIEs__value, choice.GUMMEIList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_GUMMEIList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEIList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_324[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GUMMEIList */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_324 = { + sizeof(struct S1AP_OverloadStopIEs__value), + offsetof(struct S1AP_OverloadStopIEs__value, _asn_ctx), + offsetof(struct S1AP_OverloadStopIEs__value, present), + sizeof(((struct S1AP_OverloadStopIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_324, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_324 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_324, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_324 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_OverloadStopIEs_321[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStopIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_322, &asn_PER_memb_S1AP_id_constr_322, memb_S1AP_id_constraint_321 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStopIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_OverloadStopIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_323, &asn_PER_memb_S1AP_criticality_constr_323, memb_S1AP_criticality_constraint_321 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_OverloadStopIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_324, + select_OverloadStopIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_324, &asn_PER_memb_S1AP_value_constr_324, memb_S1AP_value_constraint_321 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_OverloadStopIEs_tags_321[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_OverloadStopIEs_tag2el_321[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_OverloadStopIEs_specs_321 = { + sizeof(struct S1AP_OverloadStopIEs), + offsetof(struct S1AP_OverloadStopIEs, _asn_ctx), + asn_MAP_S1AP_OverloadStopIEs_tag2el_321, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadStopIEs = { + "OverloadStopIEs", + "OverloadStopIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_OverloadStopIEs_tags_321, + sizeof(asn_DEF_S1AP_OverloadStopIEs_tags_321) + /sizeof(asn_DEF_S1AP_OverloadStopIEs_tags_321[0]), /* 1 */ + asn_DEF_S1AP_OverloadStopIEs_tags_321, /* Same as above */ + sizeof(asn_DEF_S1AP_OverloadStopIEs_tags_321) + /sizeof(asn_DEF_S1AP_OverloadStopIEs_tags_321[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_OverloadStopIEs_321, + 3, /* Elements count */ + &asn_SPC_S1AP_OverloadStopIEs_specs_321 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_328[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.MessageIdentifier), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_MessageIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MessageIdentifier" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.SerialNumber), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_SerialNumber, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SerialNumber" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.WarningAreaList), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_WarningAreaList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "WarningAreaList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.RepetitionPeriod), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_RepetitionPeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RepetitionPeriod" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.ExtendedRepetitionPeriod), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ExtendedRepetitionPeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExtendedRepetitionPeriod" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.NumberofBroadcastRequest), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_NumberofBroadcastRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NumberofBroadcastRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.WarningType), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_WarningType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "WarningType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.WarningSecurityInfo), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_WarningSecurityInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "WarningSecurityInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.DataCodingScheme), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_DataCodingScheme, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DataCodingScheme" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.WarningMessageContents), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_WarningMessageContents, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "WarningMessageContents" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, choice.ConcurrentWarningMessageIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_ConcurrentWarningMessageIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ConcurrentWarningMessageIndicator" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_328[] = { 3, 4, 5, 0, 1, 8, 6, 7, 9, 10, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_328[] = { 3, 4, 10, 0, 1, 2, 6, 7, 5, 8, 9 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_328[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, 0, 2 }, /* RepetitionPeriod */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -1, 1 }, /* ExtendedRepetitionPeriod */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* NumberofBroadcastRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 2 }, /* MessageIdentifier */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 1, -1, 1 }, /* SerialNumber */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 8, -2, 0 }, /* DataCodingScheme */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, 0, 2 }, /* WarningType */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -1, 1 }, /* WarningSecurityInfo */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 9, -2, 0 }, /* WarningMessageContents */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 10, 0, 0 }, /* ConcurrentWarningMessageIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* cellIDList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* trackingAreaListforWarning */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* emergencyAreaIDList */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_328 = { + sizeof(struct S1AP_WriteReplaceWarningRequestIEs__value), + offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_WriteReplaceWarningRequestIEs__value, present), + sizeof(((struct S1AP_WriteReplaceWarningRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_328, + 13, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_328, + asn_MAP_S1AP_value_from_canonical_328, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_328 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_328, + 11, /* Elements count */ + &asn_SPC_S1AP_value_specs_328 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_WriteReplaceWarningRequestIEs_325[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_326, &asn_PER_memb_S1AP_id_constr_326, memb_S1AP_id_constraint_325 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_WriteReplaceWarningRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_327, &asn_PER_memb_S1AP_criticality_constr_327, memb_S1AP_criticality_constraint_325 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_328, + select_WriteReplaceWarningRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_328, &asn_PER_memb_S1AP_value_constr_328, memb_S1AP_value_constraint_325 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_WriteReplaceWarningRequestIEs_tags_325[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_WriteReplaceWarningRequestIEs_tag2el_325[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_WriteReplaceWarningRequestIEs_specs_325 = { + sizeof(struct S1AP_WriteReplaceWarningRequestIEs), + offsetof(struct S1AP_WriteReplaceWarningRequestIEs, _asn_ctx), + asn_MAP_S1AP_WriteReplaceWarningRequestIEs_tag2el_325, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_WriteReplaceWarningRequestIEs = { + "WriteReplaceWarningRequestIEs", + "WriteReplaceWarningRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_WriteReplaceWarningRequestIEs_tags_325, + sizeof(asn_DEF_S1AP_WriteReplaceWarningRequestIEs_tags_325) + /sizeof(asn_DEF_S1AP_WriteReplaceWarningRequestIEs_tags_325[0]), /* 1 */ + asn_DEF_S1AP_WriteReplaceWarningRequestIEs_tags_325, /* Same as above */ + sizeof(asn_DEF_S1AP_WriteReplaceWarningRequestIEs_tags_325) + /sizeof(asn_DEF_S1AP_WriteReplaceWarningRequestIEs_tags_325[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_WriteReplaceWarningRequestIEs_325, + 3, /* Elements count */ + &asn_SPC_S1AP_WriteReplaceWarningRequestIEs_specs_325 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_332[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningResponseIEs__value, choice.MessageIdentifier), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_MessageIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MessageIdentifier" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningResponseIEs__value, choice.SerialNumber), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_SerialNumber, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SerialNumber" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningResponseIEs__value, choice.BroadcastCompletedAreaList), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_BroadcastCompletedAreaList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BroadcastCompletedAreaList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_332[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_332[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_332[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 1 }, /* MessageIdentifier */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 1, -1, 0 }, /* SerialNumber */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* cellID-Broadcast */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* tAI-Broadcast */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* emergencyAreaID-Broadcast */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_332 = { + sizeof(struct S1AP_WriteReplaceWarningResponseIEs__value), + offsetof(struct S1AP_WriteReplaceWarningResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_WriteReplaceWarningResponseIEs__value, present), + sizeof(((struct S1AP_WriteReplaceWarningResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_332, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_332, + asn_MAP_S1AP_value_from_canonical_332, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_332 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_332, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_332 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_WriteReplaceWarningResponseIEs_329[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_330, &asn_PER_memb_S1AP_id_constr_330, memb_S1AP_id_constraint_329 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_WriteReplaceWarningResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_331, &asn_PER_memb_S1AP_criticality_constr_331, memb_S1AP_criticality_constraint_329 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_332, + select_WriteReplaceWarningResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_332, &asn_PER_memb_S1AP_value_constr_332, memb_S1AP_value_constraint_329 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_WriteReplaceWarningResponseIEs_tags_329[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_WriteReplaceWarningResponseIEs_tag2el_329[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_WriteReplaceWarningResponseIEs_specs_329 = { + sizeof(struct S1AP_WriteReplaceWarningResponseIEs), + offsetof(struct S1AP_WriteReplaceWarningResponseIEs, _asn_ctx), + asn_MAP_S1AP_WriteReplaceWarningResponseIEs_tag2el_329, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_WriteReplaceWarningResponseIEs = { + "WriteReplaceWarningResponseIEs", + "WriteReplaceWarningResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_WriteReplaceWarningResponseIEs_tags_329, + sizeof(asn_DEF_S1AP_WriteReplaceWarningResponseIEs_tags_329) + /sizeof(asn_DEF_S1AP_WriteReplaceWarningResponseIEs_tags_329[0]), /* 1 */ + asn_DEF_S1AP_WriteReplaceWarningResponseIEs_tags_329, /* Same as above */ + sizeof(asn_DEF_S1AP_WriteReplaceWarningResponseIEs_tags_329) + /sizeof(asn_DEF_S1AP_WriteReplaceWarningResponseIEs_tags_329[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_WriteReplaceWarningResponseIEs_329, + 3, /* Elements count */ + &asn_SPC_S1AP_WriteReplaceWarningResponseIEs_specs_329 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_336[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBDirectInformationTransferIEs__value, choice.Inter_SystemInformationTransferType), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Inter_SystemInformationTransferType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Inter-SystemInformationTransferType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_336[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rIMTransfer */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_336 = { + sizeof(struct S1AP_ENBDirectInformationTransferIEs__value), + offsetof(struct S1AP_ENBDirectInformationTransferIEs__value, _asn_ctx), + offsetof(struct S1AP_ENBDirectInformationTransferIEs__value, present), + sizeof(((struct S1AP_ENBDirectInformationTransferIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_336, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_336 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_336, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_336 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ENBDirectInformationTransferIEs_333[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBDirectInformationTransferIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_334, &asn_PER_memb_S1AP_id_constr_334, memb_S1AP_id_constraint_333 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBDirectInformationTransferIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ENBDirectInformationTransferIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_335, &asn_PER_memb_S1AP_criticality_constr_335, memb_S1AP_criticality_constraint_333 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBDirectInformationTransferIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_336, + select_ENBDirectInformationTransferIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_336, &asn_PER_memb_S1AP_value_constr_336, memb_S1AP_value_constraint_333 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBDirectInformationTransferIEs_tags_333[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBDirectInformationTransferIEs_tag2el_333[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBDirectInformationTransferIEs_specs_333 = { + sizeof(struct S1AP_ENBDirectInformationTransferIEs), + offsetof(struct S1AP_ENBDirectInformationTransferIEs, _asn_ctx), + asn_MAP_S1AP_ENBDirectInformationTransferIEs_tag2el_333, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBDirectInformationTransferIEs = { + "ENBDirectInformationTransferIEs", + "ENBDirectInformationTransferIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBDirectInformationTransferIEs_tags_333, + sizeof(asn_DEF_S1AP_ENBDirectInformationTransferIEs_tags_333) + /sizeof(asn_DEF_S1AP_ENBDirectInformationTransferIEs_tags_333[0]), /* 1 */ + asn_DEF_S1AP_ENBDirectInformationTransferIEs_tags_333, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBDirectInformationTransferIEs_tags_333) + /sizeof(asn_DEF_S1AP_ENBDirectInformationTransferIEs_tags_333[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBDirectInformationTransferIEs_333, + 3, /* Elements count */ + &asn_SPC_S1AP_ENBDirectInformationTransferIEs_specs_333 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_340[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEDirectInformationTransferIEs__value, choice.Inter_SystemInformationTransferType), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Inter_SystemInformationTransferType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Inter-SystemInformationTransferType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_340[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rIMTransfer */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_340 = { + sizeof(struct S1AP_MMEDirectInformationTransferIEs__value), + offsetof(struct S1AP_MMEDirectInformationTransferIEs__value, _asn_ctx), + offsetof(struct S1AP_MMEDirectInformationTransferIEs__value, present), + sizeof(((struct S1AP_MMEDirectInformationTransferIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_340, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_340 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_340, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_340 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MMEDirectInformationTransferIEs_337[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEDirectInformationTransferIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_338, &asn_PER_memb_S1AP_id_constr_338, memb_S1AP_id_constraint_337 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEDirectInformationTransferIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_MMEDirectInformationTransferIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_339, &asn_PER_memb_S1AP_criticality_constr_339, memb_S1AP_criticality_constraint_337 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEDirectInformationTransferIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_340, + select_MMEDirectInformationTransferIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_340, &asn_PER_memb_S1AP_value_constr_340, memb_S1AP_value_constraint_337 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEDirectInformationTransferIEs_tags_337[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEDirectInformationTransferIEs_tag2el_337[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEDirectInformationTransferIEs_specs_337 = { + sizeof(struct S1AP_MMEDirectInformationTransferIEs), + offsetof(struct S1AP_MMEDirectInformationTransferIEs, _asn_ctx), + asn_MAP_S1AP_MMEDirectInformationTransferIEs_tag2el_337, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEDirectInformationTransferIEs = { + "MMEDirectInformationTransferIEs", + "MMEDirectInformationTransferIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEDirectInformationTransferIEs_tags_337, + sizeof(asn_DEF_S1AP_MMEDirectInformationTransferIEs_tags_337) + /sizeof(asn_DEF_S1AP_MMEDirectInformationTransferIEs_tags_337[0]), /* 1 */ + asn_DEF_S1AP_MMEDirectInformationTransferIEs_tags_337, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEDirectInformationTransferIEs_tags_337) + /sizeof(asn_DEF_S1AP_MMEDirectInformationTransferIEs_tags_337[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEDirectInformationTransferIEs_337, + 3, /* Elements count */ + &asn_SPC_S1AP_MMEDirectInformationTransferIEs_specs_337 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_344[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationTransferIEs__value, choice.SONConfigurationTransfer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SONConfigurationTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SONConfigurationTransfer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_344[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* SONConfigurationTransfer */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_344 = { + sizeof(struct S1AP_ENBConfigurationTransferIEs__value), + offsetof(struct S1AP_ENBConfigurationTransferIEs__value, _asn_ctx), + offsetof(struct S1AP_ENBConfigurationTransferIEs__value, present), + sizeof(((struct S1AP_ENBConfigurationTransferIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_344, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_344 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_344, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_344 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationTransferIEs_341[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationTransferIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_342, &asn_PER_memb_S1AP_id_constr_342, memb_S1AP_id_constraint_341 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationTransferIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ENBConfigurationTransferIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_343, &asn_PER_memb_S1AP_criticality_constr_343, memb_S1AP_criticality_constraint_341 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBConfigurationTransferIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_344, + select_ENBConfigurationTransferIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_344, &asn_PER_memb_S1AP_value_constr_344, memb_S1AP_value_constraint_341 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBConfigurationTransferIEs_tags_341[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBConfigurationTransferIEs_tag2el_341[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationTransferIEs_specs_341 = { + sizeof(struct S1AP_ENBConfigurationTransferIEs), + offsetof(struct S1AP_ENBConfigurationTransferIEs, _asn_ctx), + asn_MAP_S1AP_ENBConfigurationTransferIEs_tag2el_341, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationTransferIEs = { + "ENBConfigurationTransferIEs", + "ENBConfigurationTransferIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBConfigurationTransferIEs_tags_341, + sizeof(asn_DEF_S1AP_ENBConfigurationTransferIEs_tags_341) + /sizeof(asn_DEF_S1AP_ENBConfigurationTransferIEs_tags_341[0]), /* 1 */ + asn_DEF_S1AP_ENBConfigurationTransferIEs_tags_341, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBConfigurationTransferIEs_tags_341) + /sizeof(asn_DEF_S1AP_ENBConfigurationTransferIEs_tags_341[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBConfigurationTransferIEs_341, + 3, /* Elements count */ + &asn_SPC_S1AP_ENBConfigurationTransferIEs_specs_341 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_348[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationTransferIEs__value, choice.SONConfigurationTransfer), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SONConfigurationTransfer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SONConfigurationTransfer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_348[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* SONConfigurationTransfer */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_348 = { + sizeof(struct S1AP_MMEConfigurationTransferIEs__value), + offsetof(struct S1AP_MMEConfigurationTransferIEs__value, _asn_ctx), + offsetof(struct S1AP_MMEConfigurationTransferIEs__value, present), + sizeof(((struct S1AP_MMEConfigurationTransferIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_348, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_348 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_348, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_348 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationTransferIEs_345[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationTransferIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_346, &asn_PER_memb_S1AP_id_constr_346, memb_S1AP_id_constraint_345 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationTransferIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_MMEConfigurationTransferIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_347, &asn_PER_memb_S1AP_criticality_constr_347, memb_S1AP_criticality_constraint_345 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MMEConfigurationTransferIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_348, + select_MMEConfigurationTransferIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_348, &asn_PER_memb_S1AP_value_constr_348, memb_S1AP_value_constraint_345 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMEConfigurationTransferIEs_tags_345[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMEConfigurationTransferIEs_tag2el_345[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationTransferIEs_specs_345 = { + sizeof(struct S1AP_MMEConfigurationTransferIEs), + offsetof(struct S1AP_MMEConfigurationTransferIEs, _asn_ctx), + asn_MAP_S1AP_MMEConfigurationTransferIEs_tag2el_345, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationTransferIEs = { + "MMEConfigurationTransferIEs", + "MMEConfigurationTransferIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMEConfigurationTransferIEs_tags_345, + sizeof(asn_DEF_S1AP_MMEConfigurationTransferIEs_tags_345) + /sizeof(asn_DEF_S1AP_MMEConfigurationTransferIEs_tags_345[0]), /* 1 */ + asn_DEF_S1AP_MMEConfigurationTransferIEs_tags_345, /* Same as above */ + sizeof(asn_DEF_S1AP_MMEConfigurationTransferIEs_tags_345) + /sizeof(asn_DEF_S1AP_MMEConfigurationTransferIEs_tags_345[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMEConfigurationTransferIEs_345, + 3, /* Elements count */ + &asn_SPC_S1AP_MMEConfigurationTransferIEs_specs_345 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_352[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillRequestIEs__value, choice.MessageIdentifier), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_MessageIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MessageIdentifier" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillRequestIEs__value, choice.SerialNumber), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_SerialNumber, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SerialNumber" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillRequestIEs__value, choice.WarningAreaList), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_WarningAreaList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "WarningAreaList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillRequestIEs__value, choice.KillAllWarningMessages), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_KillAllWarningMessages, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "KillAllWarningMessages" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_352[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_352[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_352[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 1 }, /* MessageIdentifier */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 1, -1, 0 }, /* SerialNumber */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* KillAllWarningMessages */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* cellIDList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* trackingAreaListforWarning */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* emergencyAreaIDList */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_352 = { + sizeof(struct S1AP_KillRequestIEs__value), + offsetof(struct S1AP_KillRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_KillRequestIEs__value, present), + sizeof(((struct S1AP_KillRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_352, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_352, + asn_MAP_S1AP_value_from_canonical_352, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_352 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_352, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_352 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_KillRequestIEs_349[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_350, &asn_PER_memb_S1AP_id_constr_350, memb_S1AP_id_constraint_349 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_KillRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_351, &asn_PER_memb_S1AP_criticality_constr_351, memb_S1AP_criticality_constraint_349 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_KillRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_352, + select_KillRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_352, &asn_PER_memb_S1AP_value_constr_352, memb_S1AP_value_constraint_349 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_KillRequestIEs_tags_349[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_KillRequestIEs_tag2el_349[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_KillRequestIEs_specs_349 = { + sizeof(struct S1AP_KillRequestIEs), + offsetof(struct S1AP_KillRequestIEs, _asn_ctx), + asn_MAP_S1AP_KillRequestIEs_tag2el_349, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_KillRequestIEs = { + "KillRequestIEs", + "KillRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_KillRequestIEs_tags_349, + sizeof(asn_DEF_S1AP_KillRequestIEs_tags_349) + /sizeof(asn_DEF_S1AP_KillRequestIEs_tags_349[0]), /* 1 */ + asn_DEF_S1AP_KillRequestIEs_tags_349, /* Same as above */ + sizeof(asn_DEF_S1AP_KillRequestIEs_tags_349) + /sizeof(asn_DEF_S1AP_KillRequestIEs_tags_349[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_KillRequestIEs_349, + 3, /* Elements count */ + &asn_SPC_S1AP_KillRequestIEs_specs_349 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_356[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillResponseIEs__value, choice.MessageIdentifier), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_MessageIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MessageIdentifier" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillResponseIEs__value, choice.SerialNumber), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_S1AP_SerialNumber, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SerialNumber" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillResponseIEs__value, choice.BroadcastCancelledAreaList), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_BroadcastCancelledAreaList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BroadcastCancelledAreaList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_356[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_356[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_356[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 1 }, /* MessageIdentifier */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 1, -1, 0 }, /* SerialNumber */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* cellID-Cancelled */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* tAI-Cancelled */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* emergencyAreaID-Cancelled */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_356 = { + sizeof(struct S1AP_KillResponseIEs__value), + offsetof(struct S1AP_KillResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_KillResponseIEs__value, present), + sizeof(((struct S1AP_KillResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_356, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_356, + asn_MAP_S1AP_value_from_canonical_356, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_356 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_356, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_356 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_KillResponseIEs_353[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_354, &asn_PER_memb_S1AP_id_constr_354, memb_S1AP_id_constraint_353 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_KillResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_KillResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_355, &asn_PER_memb_S1AP_criticality_constr_355, memb_S1AP_criticality_constraint_353 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_KillResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_356, + select_KillResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_356, &asn_PER_memb_S1AP_value_constr_356, memb_S1AP_value_constraint_353 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_KillResponseIEs_tags_353[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_KillResponseIEs_tag2el_353[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_KillResponseIEs_specs_353 = { + sizeof(struct S1AP_KillResponseIEs), + offsetof(struct S1AP_KillResponseIEs, _asn_ctx), + asn_MAP_S1AP_KillResponseIEs_tag2el_353, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_KillResponseIEs = { + "KillResponseIEs", + "KillResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_KillResponseIEs_tags_353, + sizeof(asn_DEF_S1AP_KillResponseIEs_tags_353) + /sizeof(asn_DEF_S1AP_KillResponseIEs_tags_353[0]), /* 1 */ + asn_DEF_S1AP_KillResponseIEs_tags_353, /* Same as above */ + sizeof(asn_DEF_S1AP_KillResponseIEs_tags_353) + /sizeof(asn_DEF_S1AP_KillResponseIEs_tags_353[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_KillResponseIEs_353, + 3, /* Elements count */ + &asn_SPC_S1AP_KillResponseIEs_specs_353 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_360[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSRestartIndicationIEs__value, choice.ECGIListForRestart), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ECGIListForRestart, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGIListForRestart" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSRestartIndicationIEs__value, choice.Global_ENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Global_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Global-ENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSRestartIndicationIEs__value, choice.TAIListForRestart), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAIListForRestart, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAIListForRestart" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSRestartIndicationIEs__value, choice.EmergencyAreaIDListForRestart), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EmergencyAreaIDListForRestart, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EmergencyAreaIDListForRestart" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_360[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 3 }, /* ECGIListForRestart */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 2 }, /* Global-ENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 1 }, /* TAIListForRestart */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 0 } /* EmergencyAreaIDListForRestart */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_360 = { + sizeof(struct S1AP_PWSRestartIndicationIEs__value), + offsetof(struct S1AP_PWSRestartIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_PWSRestartIndicationIEs__value, present), + sizeof(((struct S1AP_PWSRestartIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_360, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_360 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_360, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_360 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_PWSRestartIndicationIEs_357[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSRestartIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_358, &asn_PER_memb_S1AP_id_constr_358, memb_S1AP_id_constraint_357 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSRestartIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_PWSRestartIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_359, &asn_PER_memb_S1AP_criticality_constr_359, memb_S1AP_criticality_constraint_357 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSRestartIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_360, + select_PWSRestartIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_360, &asn_PER_memb_S1AP_value_constr_360, memb_S1AP_value_constraint_357 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PWSRestartIndicationIEs_tags_357[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PWSRestartIndicationIEs_tag2el_357[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PWSRestartIndicationIEs_specs_357 = { + sizeof(struct S1AP_PWSRestartIndicationIEs), + offsetof(struct S1AP_PWSRestartIndicationIEs, _asn_ctx), + asn_MAP_S1AP_PWSRestartIndicationIEs_tag2el_357, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PWSRestartIndicationIEs = { + "PWSRestartIndicationIEs", + "PWSRestartIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PWSRestartIndicationIEs_tags_357, + sizeof(asn_DEF_S1AP_PWSRestartIndicationIEs_tags_357) + /sizeof(asn_DEF_S1AP_PWSRestartIndicationIEs_tags_357[0]), /* 1 */ + asn_DEF_S1AP_PWSRestartIndicationIEs_tags_357, /* Same as above */ + sizeof(asn_DEF_S1AP_PWSRestartIndicationIEs_tags_357) + /sizeof(asn_DEF_S1AP_PWSRestartIndicationIEs_tags_357[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PWSRestartIndicationIEs_357, + 3, /* Elements count */ + &asn_SPC_S1AP_PWSRestartIndicationIEs_specs_357 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_364[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSFailureIndicationIEs__value, choice.PWSfailedECGIList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PWSfailedECGIList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PWSfailedECGIList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSFailureIndicationIEs__value, choice.Global_ENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_Global_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Global-ENB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_364[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* PWSfailedECGIList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* Global-ENB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_364 = { + sizeof(struct S1AP_PWSFailureIndicationIEs__value), + offsetof(struct S1AP_PWSFailureIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_PWSFailureIndicationIEs__value, present), + sizeof(((struct S1AP_PWSFailureIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_364, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_364 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_364, + 2, /* Elements count */ + &asn_SPC_S1AP_value_specs_364 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_PWSFailureIndicationIEs_361[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSFailureIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_362, &asn_PER_memb_S1AP_id_constr_362, memb_S1AP_id_constraint_361 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSFailureIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_PWSFailureIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_363, &asn_PER_memb_S1AP_criticality_constr_363, memb_S1AP_criticality_constraint_361 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_PWSFailureIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_364, + select_PWSFailureIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_364, &asn_PER_memb_S1AP_value_constr_364, memb_S1AP_value_constraint_361 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_PWSFailureIndicationIEs_tags_361[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_PWSFailureIndicationIEs_tag2el_361[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_PWSFailureIndicationIEs_specs_361 = { + sizeof(struct S1AP_PWSFailureIndicationIEs), + offsetof(struct S1AP_PWSFailureIndicationIEs, _asn_ctx), + asn_MAP_S1AP_PWSFailureIndicationIEs_tag2el_361, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_PWSFailureIndicationIEs = { + "PWSFailureIndicationIEs", + "PWSFailureIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_PWSFailureIndicationIEs_tags_361, + sizeof(asn_DEF_S1AP_PWSFailureIndicationIEs_tags_361) + /sizeof(asn_DEF_S1AP_PWSFailureIndicationIEs_tags_361[0]), /* 1 */ + asn_DEF_S1AP_PWSFailureIndicationIEs_tags_361, /* Same as above */ + sizeof(asn_DEF_S1AP_PWSFailureIndicationIEs_tags_361) + /sizeof(asn_DEF_S1AP_PWSFailureIndicationIEs_tags_361[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_PWSFailureIndicationIEs_361, + 3, /* Elements count */ + &asn_SPC_S1AP_PWSFailureIndicationIEs_specs_361 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_368[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value, choice.Routing_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_Routing_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Routing-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value, choice.LPPa_PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_LPPa_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LPPa-PDU" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_368[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -2, 0 }, /* Routing-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 } /* LPPa-PDU */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_368 = { + sizeof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value), + offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value, _asn_ctx), + offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value, present), + sizeof(((struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_368, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_368 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_368, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_368 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_365[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_366, &asn_PER_memb_S1AP_id_constr_366, memb_S1AP_id_constraint_365 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_DownlinkUEAssociatedLPPaTransport_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_367, &asn_PER_memb_S1AP_criticality_constr_367, memb_S1AP_criticality_constraint_365 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_368, + select_DownlinkUEAssociatedLPPaTransport_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_368, &asn_PER_memb_S1AP_value_constr_368, memb_S1AP_value_constraint_365 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_tags_365[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_tag2el_365[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_specs_365 = { + sizeof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs), + offsetof(struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs, _asn_ctx), + asn_MAP_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_tag2el_365, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs = { + "DownlinkUEAssociatedLPPaTransport-IEs", + "DownlinkUEAssociatedLPPaTransport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_tags_365, + sizeof(asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_tags_365) + /sizeof(asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_tags_365[0]), /* 1 */ + asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_tags_365, /* Same as above */ + sizeof(asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_tags_365) + /sizeof(asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_tags_365[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_365, + 3, /* Elements count */ + &asn_SPC_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_specs_365 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_372[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs__value, choice.Routing_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_Routing_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Routing-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs__value, choice.LPPa_PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_LPPa_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LPPa-PDU" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_372[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -2, 0 }, /* Routing-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 } /* LPPa-PDU */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_372 = { + sizeof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs__value), + offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs__value, _asn_ctx), + offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs__value, present), + sizeof(((struct S1AP_UplinkUEAssociatedLPPaTransport_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_372, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_372 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_372, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_372 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UplinkUEAssociatedLPPaTransport_IEs_369[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_370, &asn_PER_memb_S1AP_id_constr_370, memb_S1AP_id_constraint_369 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UplinkUEAssociatedLPPaTransport_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_371, &asn_PER_memb_S1AP_criticality_constr_371, memb_S1AP_criticality_constraint_369 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_372, + select_UplinkUEAssociatedLPPaTransport_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_372, &asn_PER_memb_S1AP_value_constr_372, memb_S1AP_value_constraint_369 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs_tags_369[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UplinkUEAssociatedLPPaTransport_IEs_tag2el_369[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkUEAssociatedLPPaTransport_IEs_specs_369 = { + sizeof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs), + offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport_IEs, _asn_ctx), + asn_MAP_S1AP_UplinkUEAssociatedLPPaTransport_IEs_tag2el_369, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs = { + "UplinkUEAssociatedLPPaTransport-IEs", + "UplinkUEAssociatedLPPaTransport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs_tags_369, + sizeof(asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs_tags_369) + /sizeof(asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs_tags_369[0]), /* 1 */ + asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs_tags_369, /* Same as above */ + sizeof(asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs_tags_369) + /sizeof(asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs_tags_369[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UplinkUEAssociatedLPPaTransport_IEs_369, + 3, /* Elements count */ + &asn_SPC_S1AP_UplinkUEAssociatedLPPaTransport_IEs_specs_369 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_376[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value, choice.Routing_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_Routing_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Routing-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value, choice.LPPa_PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_LPPa_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LPPa-PDU" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_376[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Routing-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 } /* LPPa-PDU */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_376 = { + sizeof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value), + offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value, _asn_ctx), + offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value, present), + sizeof(((struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_376, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_376 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_376, + 2, /* Elements count */ + &asn_SPC_S1AP_value_specs_376 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_373[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_374, &asn_PER_memb_S1AP_id_constr_374, memb_S1AP_id_constraint_373 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_DownlinkNonUEAssociatedLPPaTransport_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_375, &asn_PER_memb_S1AP_criticality_constr_375, memb_S1AP_criticality_constraint_373 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_376, + select_DownlinkNonUEAssociatedLPPaTransport_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_376, &asn_PER_memb_S1AP_value_constr_376, memb_S1AP_value_constraint_373 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_tags_373[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_tag2el_373[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_specs_373 = { + sizeof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs), + offsetof(struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs, _asn_ctx), + asn_MAP_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_tag2el_373, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs = { + "DownlinkNonUEAssociatedLPPaTransport-IEs", + "DownlinkNonUEAssociatedLPPaTransport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_tags_373, + sizeof(asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_tags_373) + /sizeof(asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_tags_373[0]), /* 1 */ + asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_tags_373, /* Same as above */ + sizeof(asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_tags_373) + /sizeof(asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_tags_373[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_373, + 3, /* Elements count */ + &asn_SPC_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_specs_373 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_380[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value, choice.Routing_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_Routing_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Routing-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value, choice.LPPa_PDU), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_LPPa_PDU, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LPPa-PDU" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_380[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Routing-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 } /* LPPa-PDU */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_380 = { + sizeof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value), + offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value, _asn_ctx), + offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value, present), + sizeof(((struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_380, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_380 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_380, + 2, /* Elements count */ + &asn_SPC_S1AP_value_specs_380 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_377[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_378, &asn_PER_memb_S1AP_id_constr_378, memb_S1AP_id_constraint_377 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UplinkNonUEAssociatedLPPaTransport_IEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_379, &asn_PER_memb_S1AP_criticality_constr_379, memb_S1AP_criticality_constraint_377 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_380, + select_UplinkNonUEAssociatedLPPaTransport_IEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_380, &asn_PER_memb_S1AP_value_constr_380, memb_S1AP_value_constraint_377 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_tags_377[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_tag2el_377[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_specs_377 = { + sizeof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs), + offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs, _asn_ctx), + asn_MAP_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_tag2el_377, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs = { + "UplinkNonUEAssociatedLPPaTransport-IEs", + "UplinkNonUEAssociatedLPPaTransport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_tags_377, + sizeof(asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_tags_377) + /sizeof(asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_tags_377[0]), /* 1 */ + asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_tags_377, /* Same as above */ + sizeof(asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_tags_377) + /sizeof(asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_tags_377[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_377, + 3, /* Elements count */ + &asn_SPC_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_specs_377 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_384[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndicationIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndicationIEs__value, choice.E_RABToBeModifiedListBearerModInd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeModifiedListBearerModInd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeModifiedListBearerModInd" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndicationIEs__value, choice.E_RABNotToBeModifiedListBearerModInd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABNotToBeModifiedListBearerModInd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABNotToBeModifiedListBearerModInd" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndicationIEs__value, choice.CSGMembershipInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndicationIEs__value, choice.TunnelInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TunnelInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TunnelInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_384[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 3 }, /* E-RABToBeModifiedListBearerModInd */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* E-RABNotToBeModifiedListBearerModInd */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 1 }, /* CSGMembershipInfo */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 0 } /* TunnelInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_384 = { + sizeof(struct S1AP_E_RABModificationIndicationIEs__value), + offsetof(struct S1AP_E_RABModificationIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABModificationIndicationIEs__value, present), + sizeof(((struct S1AP_E_RABModificationIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_384, + 6, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_384 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_384, + 6, /* Elements count */ + &asn_SPC_S1AP_value_specs_384 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModificationIndicationIEs_381[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_382, &asn_PER_memb_S1AP_id_constr_382, memb_S1AP_id_constraint_381 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABModificationIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_383, &asn_PER_memb_S1AP_criticality_constr_383, memb_S1AP_criticality_constraint_381 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_384, + select_E_RABModificationIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_384, &asn_PER_memb_S1AP_value_constr_384, memb_S1AP_value_constraint_381 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModificationIndicationIEs_tags_381[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModificationIndicationIEs_tag2el_381[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModificationIndicationIEs_specs_381 = { + sizeof(struct S1AP_E_RABModificationIndicationIEs), + offsetof(struct S1AP_E_RABModificationIndicationIEs, _asn_ctx), + asn_MAP_S1AP_E_RABModificationIndicationIEs_tag2el_381, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModificationIndicationIEs = { + "E-RABModificationIndicationIEs", + "E-RABModificationIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModificationIndicationIEs_tags_381, + sizeof(asn_DEF_S1AP_E_RABModificationIndicationIEs_tags_381) + /sizeof(asn_DEF_S1AP_E_RABModificationIndicationIEs_tags_381[0]), /* 1 */ + asn_DEF_S1AP_E_RABModificationIndicationIEs_tags_381, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModificationIndicationIEs_tags_381) + /sizeof(asn_DEF_S1AP_E_RABModificationIndicationIEs_tags_381[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModificationIndicationIEs_381, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModificationIndicationIEs_specs_381 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_388[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirmIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirmIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirmIEs__value, choice.E_RABModifyListBearerModConf), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyListBearerModConf, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABModifyListBearerModConf" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirmIEs__value, choice.E_RABList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirmIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirmIEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_388[] = { 0, 1, 5, 2, 3, 4 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_388[] = { 0, 1, 3, 4, 5, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_388[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* E-RABModifyListBearerModConf */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 1 }, /* E-RABList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_388 = { + sizeof(struct S1AP_E_RABModificationConfirmIEs__value), + offsetof(struct S1AP_E_RABModificationConfirmIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABModificationConfirmIEs__value, present), + sizeof(((struct S1AP_E_RABModificationConfirmIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_388, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_388, + asn_MAP_S1AP_value_from_canonical_388, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_388 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_388, + 6, /* Elements count */ + &asn_SPC_S1AP_value_specs_388 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABModificationConfirmIEs_385[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirmIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_386, &asn_PER_memb_S1AP_id_constr_386, memb_S1AP_id_constraint_385 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirmIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_E_RABModificationConfirmIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_387, &asn_PER_memb_S1AP_criticality_constr_387, memb_S1AP_criticality_constraint_385 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABModificationConfirmIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_388, + select_E_RABModificationConfirmIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_388, &asn_PER_memb_S1AP_value_constr_388, memb_S1AP_value_constraint_385 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABModificationConfirmIEs_tags_385[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABModificationConfirmIEs_tag2el_385[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModificationConfirmIEs_specs_385 = { + sizeof(struct S1AP_E_RABModificationConfirmIEs), + offsetof(struct S1AP_E_RABModificationConfirmIEs, _asn_ctx), + asn_MAP_S1AP_E_RABModificationConfirmIEs_tag2el_385, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModificationConfirmIEs = { + "E-RABModificationConfirmIEs", + "E-RABModificationConfirmIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABModificationConfirmIEs_tags_385, + sizeof(asn_DEF_S1AP_E_RABModificationConfirmIEs_tags_385) + /sizeof(asn_DEF_S1AP_E_RABModificationConfirmIEs_tags_385[0]), /* 1 */ + asn_DEF_S1AP_E_RABModificationConfirmIEs_tags_385, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABModificationConfirmIEs_tags_385) + /sizeof(asn_DEF_S1AP_E_RABModificationConfirmIEs_tags_385[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModificationConfirmIEs_385, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModificationConfirmIEs_specs_385 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_392[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationIndicationIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationIndicationIEs__value, choice.CSGMembershipInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipInfo" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_392[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* CSGMembershipInfo */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_392 = { + sizeof(struct S1AP_UEContextModificationIndicationIEs__value), + offsetof(struct S1AP_UEContextModificationIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextModificationIndicationIEs__value, present), + sizeof(((struct S1AP_UEContextModificationIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_392, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_392 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_392, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_392 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationIndicationIEs_389[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_390, &asn_PER_memb_S1AP_id_constr_390, memb_S1AP_id_constraint_389 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextModificationIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_391, &asn_PER_memb_S1AP_criticality_constr_391, memb_S1AP_criticality_constraint_389 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_392, + select_UEContextModificationIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_392, &asn_PER_memb_S1AP_value_constr_392, memb_S1AP_value_constraint_389 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationIndicationIEs_tags_389[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationIndicationIEs_tag2el_389[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationIndicationIEs_specs_389 = { + sizeof(struct S1AP_UEContextModificationIndicationIEs), + offsetof(struct S1AP_UEContextModificationIndicationIEs, _asn_ctx), + asn_MAP_S1AP_UEContextModificationIndicationIEs_tag2el_389, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationIndicationIEs = { + "UEContextModificationIndicationIEs", + "UEContextModificationIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationIndicationIEs_tags_389, + sizeof(asn_DEF_S1AP_UEContextModificationIndicationIEs_tags_389) + /sizeof(asn_DEF_S1AP_UEContextModificationIndicationIEs_tags_389[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationIndicationIEs_tags_389, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationIndicationIEs_tags_389) + /sizeof(asn_DEF_S1AP_UEContextModificationIndicationIEs_tags_389[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationIndicationIEs_389, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationIndicationIEs_specs_389 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_396[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationConfirmIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationConfirmIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationConfirmIEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationConfirmIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_396[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_396 = { + sizeof(struct S1AP_UEContextModificationConfirmIEs__value), + offsetof(struct S1AP_UEContextModificationConfirmIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextModificationConfirmIEs__value, present), + sizeof(((struct S1AP_UEContextModificationConfirmIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_396, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_396 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_396, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_396 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationConfirmIEs_393[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationConfirmIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_394, &asn_PER_memb_S1AP_id_constr_394, memb_S1AP_id_constraint_393 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationConfirmIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextModificationConfirmIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_395, &asn_PER_memb_S1AP_criticality_constr_395, memb_S1AP_criticality_constraint_393 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationConfirmIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_396, + select_UEContextModificationConfirmIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_396, &asn_PER_memb_S1AP_value_constr_396, memb_S1AP_value_constraint_393 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationConfirmIEs_tags_393[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationConfirmIEs_tag2el_393[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationConfirmIEs_specs_393 = { + sizeof(struct S1AP_UEContextModificationConfirmIEs), + offsetof(struct S1AP_UEContextModificationConfirmIEs, _asn_ctx), + asn_MAP_S1AP_UEContextModificationConfirmIEs_tag2el_393, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationConfirmIEs = { + "UEContextModificationConfirmIEs", + "UEContextModificationConfirmIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationConfirmIEs_tags_393, + sizeof(asn_DEF_S1AP_UEContextModificationConfirmIEs_tags_393) + /sizeof(asn_DEF_S1AP_UEContextModificationConfirmIEs_tags_393[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationConfirmIEs_tags_393, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationConfirmIEs_tags_393) + /sizeof(asn_DEF_S1AP_UEContextModificationConfirmIEs_tags_393[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationConfirmIEs_393, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationConfirmIEs_specs_393 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_400[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendRequestIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendRequestIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendRequestIEs__value, choice.InformationOnRecommendedCellsAndENBsForPaging), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InformationOnRecommendedCellsAndENBsForPaging, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InformationOnRecommendedCellsAndENBsForPaging" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendRequestIEs__value, choice.CellIdentifierAndCELevelForCECapableUEs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CellIdentifierAndCELevelForCECapableUEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellIdentifierAndCELevelForCECapableUEs" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_400[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* InformationOnRecommendedCellsAndENBsForPaging */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* CellIdentifierAndCELevelForCECapableUEs */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_400 = { + sizeof(struct S1AP_UEContextSuspendRequestIEs__value), + offsetof(struct S1AP_UEContextSuspendRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextSuspendRequestIEs__value, present), + sizeof(((struct S1AP_UEContextSuspendRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_400, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_400 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_400, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_400 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextSuspendRequestIEs_397[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_398, &asn_PER_memb_S1AP_id_constr_398, memb_S1AP_id_constraint_397 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextSuspendRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_399, &asn_PER_memb_S1AP_criticality_constr_399, memb_S1AP_criticality_constraint_397 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_400, + select_UEContextSuspendRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_400, &asn_PER_memb_S1AP_value_constr_400, memb_S1AP_value_constraint_397 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextSuspendRequestIEs_tags_397[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextSuspendRequestIEs_tag2el_397[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextSuspendRequestIEs_specs_397 = { + sizeof(struct S1AP_UEContextSuspendRequestIEs), + offsetof(struct S1AP_UEContextSuspendRequestIEs, _asn_ctx), + asn_MAP_S1AP_UEContextSuspendRequestIEs_tag2el_397, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextSuspendRequestIEs = { + "UEContextSuspendRequestIEs", + "UEContextSuspendRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextSuspendRequestIEs_tags_397, + sizeof(asn_DEF_S1AP_UEContextSuspendRequestIEs_tags_397) + /sizeof(asn_DEF_S1AP_UEContextSuspendRequestIEs_tags_397[0]), /* 1 */ + asn_DEF_S1AP_UEContextSuspendRequestIEs_tags_397, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextSuspendRequestIEs_tags_397) + /sizeof(asn_DEF_S1AP_UEContextSuspendRequestIEs_tags_397[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextSuspendRequestIEs_397, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextSuspendRequestIEs_specs_397 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_404[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendResponseIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendResponseIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendResponseIEs__value, choice.SecurityContext), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SecurityContext, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecurityContext" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_404[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* SecurityContext */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_404 = { + sizeof(struct S1AP_UEContextSuspendResponseIEs__value), + offsetof(struct S1AP_UEContextSuspendResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextSuspendResponseIEs__value, present), + sizeof(((struct S1AP_UEContextSuspendResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_404, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_404 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_404, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_404 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextSuspendResponseIEs_401[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_402, &asn_PER_memb_S1AP_id_constr_402, memb_S1AP_id_constraint_401 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextSuspendResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_403, &asn_PER_memb_S1AP_criticality_constr_403, memb_S1AP_criticality_constraint_401 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_404, + select_UEContextSuspendResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_404, &asn_PER_memb_S1AP_value_constr_404, memb_S1AP_value_constraint_401 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextSuspendResponseIEs_tags_401[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextSuspendResponseIEs_tag2el_401[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextSuspendResponseIEs_specs_401 = { + sizeof(struct S1AP_UEContextSuspendResponseIEs), + offsetof(struct S1AP_UEContextSuspendResponseIEs, _asn_ctx), + asn_MAP_S1AP_UEContextSuspendResponseIEs_tag2el_401, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextSuspendResponseIEs = { + "UEContextSuspendResponseIEs", + "UEContextSuspendResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextSuspendResponseIEs_tags_401, + sizeof(asn_DEF_S1AP_UEContextSuspendResponseIEs_tags_401) + /sizeof(asn_DEF_S1AP_UEContextSuspendResponseIEs_tags_401[0]), /* 1 */ + asn_DEF_S1AP_UEContextSuspendResponseIEs_tags_401, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextSuspendResponseIEs_tags_401) + /sizeof(asn_DEF_S1AP_UEContextSuspendResponseIEs_tags_401[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextSuspendResponseIEs_401, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextSuspendResponseIEs_specs_401 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_408[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeRequestIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeRequestIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeRequestIEs__value, choice.E_RABFailedToResumeListResumeReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABFailedToResumeListResumeReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABFailedToResumeListResumeReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeRequestIEs__value, choice.RRC_Establishment_Cause), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_RRC_Establishment_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRC-Establishment-Cause" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_408[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_408[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_408[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* RRC-Establishment-Cause */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* E-RABFailedToResumeListResumeReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_408 = { + sizeof(struct S1AP_UEContextResumeRequestIEs__value), + offsetof(struct S1AP_UEContextResumeRequestIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextResumeRequestIEs__value, present), + sizeof(((struct S1AP_UEContextResumeRequestIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_408, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_408, + asn_MAP_S1AP_value_from_canonical_408, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_408 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_408, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_408 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeRequestIEs_405[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_406, &asn_PER_memb_S1AP_id_constr_406, memb_S1AP_id_constraint_405 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextResumeRequestIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_407, &asn_PER_memb_S1AP_criticality_constr_407, memb_S1AP_criticality_constraint_405 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_408, + select_UEContextResumeRequestIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_408, &asn_PER_memb_S1AP_value_constr_408, memb_S1AP_value_constraint_405 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextResumeRequestIEs_tags_405[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextResumeRequestIEs_tag2el_405[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeRequestIEs_specs_405 = { + sizeof(struct S1AP_UEContextResumeRequestIEs), + offsetof(struct S1AP_UEContextResumeRequestIEs, _asn_ctx), + asn_MAP_S1AP_UEContextResumeRequestIEs_tag2el_405, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeRequestIEs = { + "UEContextResumeRequestIEs", + "UEContextResumeRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextResumeRequestIEs_tags_405, + sizeof(asn_DEF_S1AP_UEContextResumeRequestIEs_tags_405) + /sizeof(asn_DEF_S1AP_UEContextResumeRequestIEs_tags_405[0]), /* 1 */ + asn_DEF_S1AP_UEContextResumeRequestIEs_tags_405, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextResumeRequestIEs_tags_405) + /sizeof(asn_DEF_S1AP_UEContextResumeRequestIEs_tags_405[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextResumeRequestIEs_405, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextResumeRequestIEs_specs_405 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_412[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeResponseIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeResponseIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeResponseIEs__value, choice.E_RABFailedToResumeListResumeRes), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABFailedToResumeListResumeRes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABFailedToResumeListResumeRes" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeResponseIEs__value, choice.SecurityContext), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SecurityContext, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecurityContext" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_412[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* E-RABFailedToResumeListResumeRes */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 } /* SecurityContext */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_412 = { + sizeof(struct S1AP_UEContextResumeResponseIEs__value), + offsetof(struct S1AP_UEContextResumeResponseIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextResumeResponseIEs__value, present), + sizeof(((struct S1AP_UEContextResumeResponseIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_412, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_412 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_412, + 5, /* Elements count */ + &asn_SPC_S1AP_value_specs_412 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeResponseIEs_409[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_410, &asn_PER_memb_S1AP_id_constr_410, memb_S1AP_id_constraint_409 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextResumeResponseIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_411, &asn_PER_memb_S1AP_criticality_constr_411, memb_S1AP_criticality_constraint_409 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_412, + select_UEContextResumeResponseIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_412, &asn_PER_memb_S1AP_value_constr_412, memb_S1AP_value_constraint_409 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextResumeResponseIEs_tags_409[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextResumeResponseIEs_tag2el_409[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeResponseIEs_specs_409 = { + sizeof(struct S1AP_UEContextResumeResponseIEs), + offsetof(struct S1AP_UEContextResumeResponseIEs, _asn_ctx), + asn_MAP_S1AP_UEContextResumeResponseIEs_tag2el_409, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeResponseIEs = { + "UEContextResumeResponseIEs", + "UEContextResumeResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextResumeResponseIEs_tags_409, + sizeof(asn_DEF_S1AP_UEContextResumeResponseIEs_tags_409) + /sizeof(asn_DEF_S1AP_UEContextResumeResponseIEs_tags_409[0]), /* 1 */ + asn_DEF_S1AP_UEContextResumeResponseIEs_tags_409, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextResumeResponseIEs_tags_409) + /sizeof(asn_DEF_S1AP_UEContextResumeResponseIEs_tags_409[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextResumeResponseIEs_409, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextResumeResponseIEs_specs_409 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_416[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeFailureIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeFailureIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_416[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_416[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_416[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_416 = { + sizeof(struct S1AP_UEContextResumeFailureIEs__value), + offsetof(struct S1AP_UEContextResumeFailureIEs__value, _asn_ctx), + offsetof(struct S1AP_UEContextResumeFailureIEs__value, present), + sizeof(((struct S1AP_UEContextResumeFailureIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_416, + 8, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_416, + asn_MAP_S1AP_value_from_canonical_416, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_416 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_416, + 4, /* Elements count */ + &asn_SPC_S1AP_value_specs_416 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeFailureIEs_413[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_414, &asn_PER_memb_S1AP_id_constr_414, memb_S1AP_id_constraint_413 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEContextResumeFailureIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_415, &asn_PER_memb_S1AP_criticality_constr_415, memb_S1AP_criticality_constraint_413 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_416, + select_UEContextResumeFailureIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_416, &asn_PER_memb_S1AP_value_constr_416, memb_S1AP_value_constraint_413 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextResumeFailureIEs_tags_413[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextResumeFailureIEs_tag2el_413[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeFailureIEs_specs_413 = { + sizeof(struct S1AP_UEContextResumeFailureIEs), + offsetof(struct S1AP_UEContextResumeFailureIEs, _asn_ctx), + asn_MAP_S1AP_UEContextResumeFailureIEs_tag2el_413, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeFailureIEs = { + "UEContextResumeFailureIEs", + "UEContextResumeFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextResumeFailureIEs_tags_413, + sizeof(asn_DEF_S1AP_UEContextResumeFailureIEs_tags_413) + /sizeof(asn_DEF_S1AP_UEContextResumeFailureIEs_tags_413[0]), /* 1 */ + asn_DEF_S1AP_UEContextResumeFailureIEs_tags_413, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextResumeFailureIEs_tags_413) + /sizeof(asn_DEF_S1AP_UEContextResumeFailureIEs_tags_413[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextResumeFailureIEs_413, + 3, /* Elements count */ + &asn_SPC_S1AP_UEContextResumeFailureIEs_specs_413 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_420[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs__value, choice.UERadioCapability), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapability" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs__value, choice.EnhancedCoverageRestricted), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_EnhancedCoverageRestricted, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EnhancedCoverageRestricted" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs__value, choice.DL_CP_SecurityInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_DL_CP_SecurityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DL-CP-SecurityInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_420[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* UERadioCapability */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* EnhancedCoverageRestricted */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 0 } /* DL-CP-SecurityInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_420 = { + sizeof(struct S1AP_ConnectionEstablishmentIndicationIEs__value), + offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs__value, present), + sizeof(((struct S1AP_ConnectionEstablishmentIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_420, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_420 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_420, + 5, /* Elements count */ + &asn_SPC_S1AP_value_specs_420 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ConnectionEstablishmentIndicationIEs_417[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_418, &asn_PER_memb_S1AP_id_constr_418, memb_S1AP_id_constraint_417 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ConnectionEstablishmentIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_419, &asn_PER_memb_S1AP_criticality_constr_419, memb_S1AP_criticality_constraint_417 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_420, + select_ConnectionEstablishmentIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_420, &asn_PER_memb_S1AP_value_constr_420, memb_S1AP_value_constraint_417 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs_tags_417[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ConnectionEstablishmentIndicationIEs_tag2el_417[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ConnectionEstablishmentIndicationIEs_specs_417 = { + sizeof(struct S1AP_ConnectionEstablishmentIndicationIEs), + offsetof(struct S1AP_ConnectionEstablishmentIndicationIEs, _asn_ctx), + asn_MAP_S1AP_ConnectionEstablishmentIndicationIEs_tag2el_417, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs = { + "ConnectionEstablishmentIndicationIEs", + "ConnectionEstablishmentIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs_tags_417, + sizeof(asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs_tags_417) + /sizeof(asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs_tags_417[0]), /* 1 */ + asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs_tags_417, /* Same as above */ + sizeof(asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs_tags_417) + /sizeof(asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs_tags_417[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ConnectionEstablishmentIndicationIEs_417, + 3, /* Elements count */ + &asn_SPC_S1AP_ConnectionEstablishmentIndicationIEs_specs_417 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_424[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RetrieveUEInformationIEs__value, choice.S_TMSI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S_TMSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "S-TMSI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_424[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* S-TMSI */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_424 = { + sizeof(struct S1AP_RetrieveUEInformationIEs__value), + offsetof(struct S1AP_RetrieveUEInformationIEs__value, _asn_ctx), + offsetof(struct S1AP_RetrieveUEInformationIEs__value, present), + sizeof(((struct S1AP_RetrieveUEInformationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_424, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_424 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_424, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_424 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_RetrieveUEInformationIEs_421[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RetrieveUEInformationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_422, &asn_PER_memb_S1AP_id_constr_422, memb_S1AP_id_constraint_421 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RetrieveUEInformationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_RetrieveUEInformationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_423, &asn_PER_memb_S1AP_criticality_constr_423, memb_S1AP_criticality_constraint_421 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_RetrieveUEInformationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_424, + select_RetrieveUEInformationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_424, &asn_PER_memb_S1AP_value_constr_424, memb_S1AP_value_constraint_421 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RetrieveUEInformationIEs_tags_421[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RetrieveUEInformationIEs_tag2el_421[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RetrieveUEInformationIEs_specs_421 = { + sizeof(struct S1AP_RetrieveUEInformationIEs), + offsetof(struct S1AP_RetrieveUEInformationIEs, _asn_ctx), + asn_MAP_S1AP_RetrieveUEInformationIEs_tag2el_421, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RetrieveUEInformationIEs = { + "RetrieveUEInformationIEs", + "RetrieveUEInformationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RetrieveUEInformationIEs_tags_421, + sizeof(asn_DEF_S1AP_RetrieveUEInformationIEs_tags_421) + /sizeof(asn_DEF_S1AP_RetrieveUEInformationIEs_tags_421[0]), /* 1 */ + asn_DEF_S1AP_RetrieveUEInformationIEs_tags_421, /* Same as above */ + sizeof(asn_DEF_S1AP_RetrieveUEInformationIEs_tags_421) + /sizeof(asn_DEF_S1AP_RetrieveUEInformationIEs_tags_421[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RetrieveUEInformationIEs_421, + 3, /* Elements count */ + &asn_SPC_S1AP_RetrieveUEInformationIEs_specs_421 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_428[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEInformationTransferIEs__value, choice.S_TMSI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S_TMSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "S-TMSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEInformationTransferIEs__value, choice.E_RABLevelQoSParameters), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABLevelQoSParameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABLevelQoSParameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEInformationTransferIEs__value, choice.UERadioCapability), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapability" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_428[] = { 2, 0, 1 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_428[] = { 1, 2, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_428[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* UERadioCapability */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* S-TMSI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* E-RABLevelQoSParameters */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_428 = { + sizeof(struct S1AP_UEInformationTransferIEs__value), + offsetof(struct S1AP_UEInformationTransferIEs__value, _asn_ctx), + offsetof(struct S1AP_UEInformationTransferIEs__value, present), + sizeof(((struct S1AP_UEInformationTransferIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_428, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_428, + asn_MAP_S1AP_value_from_canonical_428, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_428 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_428, + 3, /* Elements count */ + &asn_SPC_S1AP_value_specs_428 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UEInformationTransferIEs_425[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEInformationTransferIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_426, &asn_PER_memb_S1AP_id_constr_426, memb_S1AP_id_constraint_425 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEInformationTransferIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UEInformationTransferIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_427, &asn_PER_memb_S1AP_criticality_constr_427, memb_S1AP_criticality_constraint_425 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UEInformationTransferIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_428, + select_UEInformationTransferIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_428, &asn_PER_memb_S1AP_value_constr_428, memb_S1AP_value_constraint_425 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEInformationTransferIEs_tags_425[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEInformationTransferIEs_tag2el_425[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEInformationTransferIEs_specs_425 = { + sizeof(struct S1AP_UEInformationTransferIEs), + offsetof(struct S1AP_UEInformationTransferIEs, _asn_ctx), + asn_MAP_S1AP_UEInformationTransferIEs_tag2el_425, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEInformationTransferIEs = { + "UEInformationTransferIEs", + "UEInformationTransferIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEInformationTransferIEs_tags_425, + sizeof(asn_DEF_S1AP_UEInformationTransferIEs_tags_425) + /sizeof(asn_DEF_S1AP_UEInformationTransferIEs_tags_425[0]), /* 1 */ + asn_DEF_S1AP_UEInformationTransferIEs_tags_425, /* Same as above */ + sizeof(asn_DEF_S1AP_UEInformationTransferIEs_tags_425) + /sizeof(asn_DEF_S1AP_UEInformationTransferIEs_tags_425[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEInformationTransferIEs_425, + 3, /* Elements count */ + &asn_SPC_S1AP_UEInformationTransferIEs_specs_425 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_432[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBCPRelocationIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBCPRelocationIndicationIEs__value, choice.S_TMSI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S_TMSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "S-TMSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBCPRelocationIndicationIEs__value, choice.EUTRAN_CGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRAN-CGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBCPRelocationIndicationIEs__value, choice.TAI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBCPRelocationIndicationIEs__value, choice.UL_CP_SecurityInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UL_CP_SecurityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UL-CP-SecurityInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_432[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* ENB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 3 }, /* S-TMSI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 2 }, /* EUTRAN-CGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 1 }, /* TAI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 0 } /* UL-CP-SecurityInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_432 = { + sizeof(struct S1AP_ENBCPRelocationIndicationIEs__value), + offsetof(struct S1AP_ENBCPRelocationIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_ENBCPRelocationIndicationIEs__value, present), + sizeof(((struct S1AP_ENBCPRelocationIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_432, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_432 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_432, + 5, /* Elements count */ + &asn_SPC_S1AP_value_specs_432 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_ENBCPRelocationIndicationIEs_429[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBCPRelocationIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_430, &asn_PER_memb_S1AP_id_constr_430, memb_S1AP_id_constraint_429 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBCPRelocationIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_ENBCPRelocationIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_431, &asn_PER_memb_S1AP_criticality_constr_431, memb_S1AP_criticality_constraint_429 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_ENBCPRelocationIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_432, + select_ENBCPRelocationIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_432, &asn_PER_memb_S1AP_value_constr_432, memb_S1AP_value_constraint_429 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ENBCPRelocationIndicationIEs_tags_429[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ENBCPRelocationIndicationIEs_tag2el_429[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBCPRelocationIndicationIEs_specs_429 = { + sizeof(struct S1AP_ENBCPRelocationIndicationIEs), + offsetof(struct S1AP_ENBCPRelocationIndicationIEs, _asn_ctx), + asn_MAP_S1AP_ENBCPRelocationIndicationIEs_tag2el_429, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ENBCPRelocationIndicationIEs = { + "ENBCPRelocationIndicationIEs", + "ENBCPRelocationIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ENBCPRelocationIndicationIEs_tags_429, + sizeof(asn_DEF_S1AP_ENBCPRelocationIndicationIEs_tags_429) + /sizeof(asn_DEF_S1AP_ENBCPRelocationIndicationIEs_tags_429[0]), /* 1 */ + asn_DEF_S1AP_ENBCPRelocationIndicationIEs_tags_429, /* Same as above */ + sizeof(asn_DEF_S1AP_ENBCPRelocationIndicationIEs_tags_429) + /sizeof(asn_DEF_S1AP_ENBCPRelocationIndicationIEs_tags_429[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ENBCPRelocationIndicationIEs_429, + 3, /* Elements count */ + &asn_SPC_S1AP_ENBCPRelocationIndicationIEs_specs_429 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_436[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMECPRelocationIndicationIEs__value, choice.MME_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMECPRelocationIndicationIEs__value, choice.ENB_UE_S1AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENB-UE-S1AP-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_436[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* MME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 } /* ENB-UE-S1AP-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_436 = { + sizeof(struct S1AP_MMECPRelocationIndicationIEs__value), + offsetof(struct S1AP_MMECPRelocationIndicationIEs__value, _asn_ctx), + offsetof(struct S1AP_MMECPRelocationIndicationIEs__value, present), + sizeof(((struct S1AP_MMECPRelocationIndicationIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_436, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_436 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_436, + 2, /* Elements count */ + &asn_SPC_S1AP_value_specs_436 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_MMECPRelocationIndicationIEs_433[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMECPRelocationIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_434, &asn_PER_memb_S1AP_id_constr_434, memb_S1AP_id_constraint_433 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_MMECPRelocationIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_MMECPRelocationIndicationIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_435, &asn_PER_memb_S1AP_criticality_constr_435, memb_S1AP_criticality_constraint_433 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_MMECPRelocationIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_436, + select_MMECPRelocationIndicationIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_436, &asn_PER_memb_S1AP_value_constr_436, memb_S1AP_value_constraint_433 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_MMECPRelocationIndicationIEs_tags_433[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_MMECPRelocationIndicationIEs_tag2el_433[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMECPRelocationIndicationIEs_specs_433 = { + sizeof(struct S1AP_MMECPRelocationIndicationIEs), + offsetof(struct S1AP_MMECPRelocationIndicationIEs, _asn_ctx), + asn_MAP_S1AP_MMECPRelocationIndicationIEs_tag2el_433, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_MMECPRelocationIndicationIEs = { + "MMECPRelocationIndicationIEs", + "MMECPRelocationIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_MMECPRelocationIndicationIEs_tags_433, + sizeof(asn_DEF_S1AP_MMECPRelocationIndicationIEs_tags_433) + /sizeof(asn_DEF_S1AP_MMECPRelocationIndicationIEs_tags_433[0]), /* 1 */ + asn_DEF_S1AP_MMECPRelocationIndicationIEs_tags_433, /* Same as above */ + sizeof(asn_DEF_S1AP_MMECPRelocationIndicationIEs_tags_433) + /sizeof(asn_DEF_S1AP_MMECPRelocationIndicationIEs_tags_433[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MMECPRelocationIndicationIEs_433, + 3, /* Elements count */ + &asn_SPC_S1AP_MMECPRelocationIndicationIEs_specs_433 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_440[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABDataForwardingItemIEs__value, choice.E_RABDataForwardingItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABDataForwardingItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABDataForwardingItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_440[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABDataForwardingItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_440 = { + sizeof(struct S1AP_E_RABDataForwardingItemIEs__value), + offsetof(struct S1AP_E_RABDataForwardingItemIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABDataForwardingItemIEs__value, present), + sizeof(((struct S1AP_E_RABDataForwardingItemIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_440, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_440 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_440, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_440 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABDataForwardingItemIEs_437[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABDataForwardingItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_438, &asn_PER_memb_S1AP_id_constr_438, memb_S1AP_id_constraint_437 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABDataForwardingItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABDataForwardingItemIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_439, &asn_PER_memb_S1AP_criticality_constr_439, memb_S1AP_criticality_constraint_437 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABDataForwardingItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_440, + select_E_RABDataForwardingItemIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_440, &asn_PER_memb_S1AP_value_constr_440, memb_S1AP_value_constraint_437 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABDataForwardingItemIEs_tags_437[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABDataForwardingItemIEs_tag2el_437[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABDataForwardingItemIEs_specs_437 = { + sizeof(struct S1AP_E_RABDataForwardingItemIEs), + offsetof(struct S1AP_E_RABDataForwardingItemIEs, _asn_ctx), + asn_MAP_S1AP_E_RABDataForwardingItemIEs_tag2el_437, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABDataForwardingItemIEs = { + "E-RABDataForwardingItemIEs", + "E-RABDataForwardingItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABDataForwardingItemIEs_tags_437, + sizeof(asn_DEF_S1AP_E_RABDataForwardingItemIEs_tags_437) + /sizeof(asn_DEF_S1AP_E_RABDataForwardingItemIEs_tags_437[0]), /* 1 */ + asn_DEF_S1AP_E_RABDataForwardingItemIEs_tags_437, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABDataForwardingItemIEs_tags_437) + /sizeof(asn_DEF_S1AP_E_RABDataForwardingItemIEs_tags_437[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABDataForwardingItemIEs_437, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABDataForwardingItemIEs_specs_437 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_444[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReqIEs__value, choice.E_RABToBeSetupItemHOReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSetupItemHOReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSetupItemHOReq" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_444[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABToBeSetupItemHOReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_444 = { + sizeof(struct S1AP_E_RABToBeSetupItemHOReqIEs__value), + offsetof(struct S1AP_E_RABToBeSetupItemHOReqIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSetupItemHOReqIEs__value, present), + sizeof(((struct S1AP_E_RABToBeSetupItemHOReqIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_444, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_444 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_444, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_444 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemHOReqIEs_441[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReqIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_442, &asn_PER_memb_S1AP_id_constr_442, memb_S1AP_id_constraint_441 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReqIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABToBeSetupItemHOReqIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_443, &asn_PER_memb_S1AP_criticality_constr_443, memb_S1AP_criticality_constraint_441 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSetupItemHOReqIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_444, + select_E_RABToBeSetupItemHOReqIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_444, &asn_PER_memb_S1AP_value_constr_444, memb_S1AP_value_constraint_441 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSetupItemHOReqIEs_tags_441[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSetupItemHOReqIEs_tag2el_441[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemHOReqIEs_specs_441 = { + sizeof(struct S1AP_E_RABToBeSetupItemHOReqIEs), + offsetof(struct S1AP_E_RABToBeSetupItemHOReqIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSetupItemHOReqIEs_tag2el_441, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemHOReqIEs = { + "E-RABToBeSetupItemHOReqIEs", + "E-RABToBeSetupItemHOReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSetupItemHOReqIEs_tags_441, + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReqIEs_tags_441) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReqIEs_tags_441[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSetupItemHOReqIEs_tags_441, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReqIEs_tags_441) + /sizeof(asn_DEF_S1AP_E_RABToBeSetupItemHOReqIEs_tags_441[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemHOReqIEs_441, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemHOReqIEs_specs_441 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_448[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItemIEs__value, choice.E_RABAdmittedItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABAdmittedItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABAdmittedItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_448[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABAdmittedItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_448 = { + sizeof(struct S1AP_E_RABAdmittedItemIEs__value), + offsetof(struct S1AP_E_RABAdmittedItemIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABAdmittedItemIEs__value, present), + sizeof(((struct S1AP_E_RABAdmittedItemIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_448, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_448 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_448, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_448 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABAdmittedItemIEs_445[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_446, &asn_PER_memb_S1AP_id_constr_446, memb_S1AP_id_constraint_445 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABAdmittedItemIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_447, &asn_PER_memb_S1AP_criticality_constr_447, memb_S1AP_criticality_constraint_445 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABAdmittedItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_448, + select_E_RABAdmittedItemIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_448, &asn_PER_memb_S1AP_value_constr_448, memb_S1AP_value_constraint_445 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABAdmittedItemIEs_tags_445[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABAdmittedItemIEs_tag2el_445[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABAdmittedItemIEs_specs_445 = { + sizeof(struct S1AP_E_RABAdmittedItemIEs), + offsetof(struct S1AP_E_RABAdmittedItemIEs, _asn_ctx), + asn_MAP_S1AP_E_RABAdmittedItemIEs_tag2el_445, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABAdmittedItemIEs = { + "E-RABAdmittedItemIEs", + "E-RABAdmittedItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABAdmittedItemIEs_tags_445, + sizeof(asn_DEF_S1AP_E_RABAdmittedItemIEs_tags_445) + /sizeof(asn_DEF_S1AP_E_RABAdmittedItemIEs_tags_445[0]), /* 1 */ + asn_DEF_S1AP_E_RABAdmittedItemIEs_tags_445, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABAdmittedItemIEs_tags_445) + /sizeof(asn_DEF_S1AP_E_RABAdmittedItemIEs_tags_445[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABAdmittedItemIEs_445, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABAdmittedItemIEs_specs_445 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_452[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs__value, choice.E_RABFailedToSetupItemHOReqAck), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABFailedToSetupItemHOReqAck, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABFailedToSetupItemHOReqAck" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_452[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABFailedToSetupItemHOReqAck */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_452 = { + sizeof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs__value), + offsetof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs__value, present), + sizeof(((struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_452, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_452 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_452, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_452 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_449[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_450, &asn_PER_memb_S1AP_id_constr_450, memb_S1AP_id_constraint_449 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABFailedtoSetupItemHOReqAckIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_451, &asn_PER_memb_S1AP_criticality_constr_451, memb_S1AP_criticality_constraint_449 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_452, + select_E_RABFailedtoSetupItemHOReqAckIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_452, &asn_PER_memb_S1AP_value_constr_452, memb_S1AP_value_constraint_449 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_tags_449[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_tag2el_449[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_specs_449 = { + sizeof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs), + offsetof(struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs, _asn_ctx), + asn_MAP_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_tag2el_449, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedtoSetupItemHOReqAckIEs = { + "E-RABFailedtoSetupItemHOReqAckIEs", + "E-RABFailedtoSetupItemHOReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_tags_449, + sizeof(asn_DEF_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_tags_449) + /sizeof(asn_DEF_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_tags_449[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_tags_449, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_tags_449) + /sizeof(asn_DEF_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_tags_449[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_449, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_specs_449 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_456[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItemIEs__value, choice.E_RABToBeSwitchedDLItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSwitchedDLItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSwitchedDLItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_456[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABToBeSwitchedDLItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_456 = { + sizeof(struct S1AP_E_RABToBeSwitchedDLItemIEs__value), + offsetof(struct S1AP_E_RABToBeSwitchedDLItemIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSwitchedDLItemIEs__value, present), + sizeof(((struct S1AP_E_RABToBeSwitchedDLItemIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_456, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_456 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_456, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_456 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedDLItemIEs_453[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_454, &asn_PER_memb_S1AP_id_constr_454, memb_S1AP_id_constraint_453 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABToBeSwitchedDLItemIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_455, &asn_PER_memb_S1AP_criticality_constr_455, memb_S1AP_criticality_constraint_453 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedDLItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_456, + select_E_RABToBeSwitchedDLItemIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_456, &asn_PER_memb_S1AP_value_constr_456, memb_S1AP_value_constraint_453 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSwitchedDLItemIEs_tags_453[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSwitchedDLItemIEs_tag2el_453[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedDLItemIEs_specs_453 = { + sizeof(struct S1AP_E_RABToBeSwitchedDLItemIEs), + offsetof(struct S1AP_E_RABToBeSwitchedDLItemIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSwitchedDLItemIEs_tag2el_453, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedDLItemIEs = { + "E-RABToBeSwitchedDLItemIEs", + "E-RABToBeSwitchedDLItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSwitchedDLItemIEs_tags_453, + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItemIEs_tags_453) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItemIEs_tags_453[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSwitchedDLItemIEs_tags_453, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItemIEs_tags_453) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedDLItemIEs_tags_453[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSwitchedDLItemIEs_453, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSwitchedDLItemIEs_specs_453 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_460[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItemIEs__value, choice.E_RABToBeSwitchedULItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeSwitchedULItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeSwitchedULItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_460[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABToBeSwitchedULItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_460 = { + sizeof(struct S1AP_E_RABToBeSwitchedULItemIEs__value), + offsetof(struct S1AP_E_RABToBeSwitchedULItemIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABToBeSwitchedULItemIEs__value, present), + sizeof(((struct S1AP_E_RABToBeSwitchedULItemIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_460, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_460 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_460, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_460 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedULItemIEs_457[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_458, &asn_PER_memb_S1AP_id_constr_458, memb_S1AP_id_constraint_457 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABToBeSwitchedULItemIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_459, &asn_PER_memb_S1AP_criticality_constr_459, memb_S1AP_criticality_constraint_457 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeSwitchedULItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_460, + select_E_RABToBeSwitchedULItemIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_460, &asn_PER_memb_S1AP_value_constr_460, memb_S1AP_value_constraint_457 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeSwitchedULItemIEs_tags_457[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeSwitchedULItemIEs_tag2el_457[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedULItemIEs_specs_457 = { + sizeof(struct S1AP_E_RABToBeSwitchedULItemIEs), + offsetof(struct S1AP_E_RABToBeSwitchedULItemIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeSwitchedULItemIEs_tag2el_457, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedULItemIEs = { + "E-RABToBeSwitchedULItemIEs", + "E-RABToBeSwitchedULItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeSwitchedULItemIEs_tags_457, + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItemIEs_tags_457) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItemIEs_tags_457[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeSwitchedULItemIEs_tags_457, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItemIEs_tags_457) + /sizeof(asn_DEF_S1AP_E_RABToBeSwitchedULItemIEs_tags_457[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSwitchedULItemIEs_457, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSwitchedULItemIEs_specs_457 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_464[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs__value, choice.E_RABToBeModifiedItemBearerModInd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABToBeModifiedItemBearerModInd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABToBeModifiedItemBearerModInd" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_464[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABToBeModifiedItemBearerModInd */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_464 = { + sizeof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs__value), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs__value, present), + sizeof(((struct S1AP_E_RABToBeModifiedItemBearerModIndIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_464, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_464 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_464, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_464 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifiedItemBearerModIndIEs_461[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_462, &asn_PER_memb_S1AP_id_constr_462, memb_S1AP_id_constraint_461 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABToBeModifiedItemBearerModIndIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_463, &asn_PER_memb_S1AP_criticality_constr_463, memb_S1AP_criticality_constraint_461 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_464, + select_E_RABToBeModifiedItemBearerModIndIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_464, &asn_PER_memb_S1AP_value_constr_464, memb_S1AP_value_constraint_461 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModIndIEs_tags_461[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABToBeModifiedItemBearerModIndIEs_tag2el_461[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifiedItemBearerModIndIEs_specs_461 = { + sizeof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs), + offsetof(struct S1AP_E_RABToBeModifiedItemBearerModIndIEs, _asn_ctx), + asn_MAP_S1AP_E_RABToBeModifiedItemBearerModIndIEs_tag2el_461, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModIndIEs = { + "E-RABToBeModifiedItemBearerModIndIEs", + "E-RABToBeModifiedItemBearerModIndIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModIndIEs_tags_461, + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModIndIEs_tags_461) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModIndIEs_tags_461[0]), /* 1 */ + asn_DEF_S1AP_E_RABToBeModifiedItemBearerModIndIEs_tags_461, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModIndIEs_tags_461) + /sizeof(asn_DEF_S1AP_E_RABToBeModifiedItemBearerModIndIEs_tags_461[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeModifiedItemBearerModIndIEs_461, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeModifiedItemBearerModIndIEs_specs_461 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_468[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value, choice.E_RABNotToBeModifiedItemBearerModInd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModInd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABNotToBeModifiedItemBearerModInd" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_468[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABNotToBeModifiedItemBearerModInd */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_468 = { + sizeof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value), + offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value, present), + sizeof(((struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_468, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_468 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_468, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_468 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_465[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_466, &asn_PER_memb_S1AP_id_constr_466, memb_S1AP_id_constraint_465 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABNotToBeModifiedItemBearerModIndIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_467, &asn_PER_memb_S1AP_criticality_constr_467, memb_S1AP_criticality_constraint_465 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_468, + select_E_RABNotToBeModifiedItemBearerModIndIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_468, &asn_PER_memb_S1AP_value_constr_468, memb_S1AP_value_constraint_465 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_tags_465[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_tag2el_465[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_specs_465 = { + sizeof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs), + offsetof(struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs, _asn_ctx), + asn_MAP_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_tag2el_465, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs = { + "E-RABNotToBeModifiedItemBearerModIndIEs", + "E-RABNotToBeModifiedItemBearerModIndIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_tags_465, + sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_tags_465) + /sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_tags_465[0]), /* 1 */ + asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_tags_465, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_tags_465) + /sizeof(asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_tags_465[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_465, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_specs_465 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_472[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs__value, choice.E_RABFailedToResumeItemResumeReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABFailedToResumeItemResumeReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABFailedToResumeItemResumeReq" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_472[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABFailedToResumeItemResumeReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_472 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs__value), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs__value, present), + sizeof(((struct S1AP_E_RABFailedToResumeItemResumeReqIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_472, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_472 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_472, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_472 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeReqIEs_469[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_470, &asn_PER_memb_S1AP_id_constr_470, memb_S1AP_id_constraint_469 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABFailedToResumeItemResumeReqIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_471, &asn_PER_memb_S1AP_criticality_constr_471, memb_S1AP_criticality_constraint_469 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_472, + select_E_RABFailedToResumeItemResumeReqIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_472, &asn_PER_memb_S1AP_value_constr_472, memb_S1AP_value_constraint_469 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeReqIEs_tags_469[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABFailedToResumeItemResumeReqIEs_tag2el_469[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeReqIEs_specs_469 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeReqIEs, _asn_ctx), + asn_MAP_S1AP_E_RABFailedToResumeItemResumeReqIEs_tag2el_469, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeReqIEs = { + "E-RABFailedToResumeItemResumeReqIEs", + "E-RABFailedToResumeItemResumeReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABFailedToResumeItemResumeReqIEs_tags_469, + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReqIEs_tags_469) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReqIEs_tags_469[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToResumeItemResumeReqIEs_tags_469, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReqIEs_tags_469) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeReqIEs_tags_469[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToResumeItemResumeReqIEs_469, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToResumeItemResumeReqIEs_specs_469 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_S1AP_value_476[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeResIEs__value, choice.E_RABFailedToResumeItemResumeRes), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABFailedToResumeItemResumeRes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABFailedToResumeItemResumeRes" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_476[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABFailedToResumeItemResumeRes */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_476 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeResIEs__value), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeResIEs__value, _asn_ctx), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeResIEs__value, present), + sizeof(((struct S1AP_E_RABFailedToResumeItemResumeResIEs__value *)0)->present), + asn_MAP_S1AP_value_tag2el_476, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_476 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_476, + 1, /* Elements count */ + &asn_SPC_S1AP_value_specs_476 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeResIEs_473[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeResIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_ID, + 0, + { &asn_OER_memb_S1AP_id_constr_474, &asn_PER_memb_S1AP_id_constr_474, memb_S1AP_id_constraint_473 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeResIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_S1AP_Criticality, + select_E_RABFailedToResumeItemResumeResIEs_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_475, &asn_PER_memb_S1AP_criticality_constr_475, memb_S1AP_criticality_constraint_473 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_E_RABFailedToResumeItemResumeResIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_S1AP_value_476, + select_E_RABFailedToResumeItemResumeResIEs_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_476, &asn_PER_memb_S1AP_value_constr_476, memb_S1AP_value_constraint_473 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeResIEs_tags_473[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_E_RABFailedToResumeItemResumeResIEs_tag2el_473[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeResIEs_specs_473 = { + sizeof(struct S1AP_E_RABFailedToResumeItemResumeResIEs), + offsetof(struct S1AP_E_RABFailedToResumeItemResumeResIEs, _asn_ctx), + asn_MAP_S1AP_E_RABFailedToResumeItemResumeResIEs_tag2el_473, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeResIEs = { + "E-RABFailedToResumeItemResumeResIEs", + "E-RABFailedToResumeItemResumeResIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_E_RABFailedToResumeItemResumeResIEs_tags_473, + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeResIEs_tags_473) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeResIEs_tags_473[0]), /* 1 */ + asn_DEF_S1AP_E_RABFailedToResumeItemResumeResIEs_tags_473, /* Same as above */ + sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeResIEs_tags_473) + /sizeof(asn_DEF_S1AP_E_RABFailedToResumeItemResumeResIEs_tags_473[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToResumeItemResumeResIEs_473, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToResumeItemResumeResIEs_specs_473 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.h b/lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.h new file mode 100644 index 0000000000..0f1ec27629 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-Field.h @@ -0,0 +1,3711 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolIE_Field_H_ +#define _S1AP_ProtocolIE_Field_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-ID.h" +#include "S1AP_Criticality.h" +#include +#include +#include "S1AP_E-RABToBeSetupItemBearerSUReq.h" +#include "S1AP_Presence.h" +#include +#include +#include +#include "S1AP_E-RABSetupItemBearerSURes.h" +#include "S1AP_E-RABToBeModifiedItemBearerModReq.h" +#include "S1AP_E-RABModifyItemBearerModRes.h" +#include "S1AP_E-RABReleaseItemBearerRelComp.h" +#include "S1AP_E-RABToBeSetupItemCtxtSUReq.h" +#include "S1AP_E-RABSetupItemCtxtSURes.h" +#include "S1AP_TAIItem.h" +#include "S1AP_UE-associatedLogicalS1-ConnectionItem.h" +#include "S1AP_E-RABModifyItemBearerModConf.h" +#include "S1AP_Bearers-SubjectToStatusTransfer-Item.h" +#include "S1AP_E-RABInformationListItem.h" +#include "S1AP_E-RABItem.h" +#include "S1AP_LoggedMBSFNMDT.h" +#include "S1AP_RecommendedCellItem.h" +#include "S1AP_RecommendedENBItem.h" +#include "S1AP_SONInformationReport.h" +#include "S1AP_MME-UE-S1AP-ID.h" +#include "S1AP_ENB-UE-S1AP-ID.h" +#include "S1AP_HandoverType.h" +#include "S1AP_Cause.h" +#include "S1AP_TargetID.h" +#include "S1AP_Direct-Forwarding-Path-Availability.h" +#include "S1AP_SRVCCHOIndication.h" +#include "S1AP_Source-ToTarget-TransparentContainer.h" +#include "S1AP_MSClassmark2.h" +#include "S1AP_MSClassmark3.h" +#include "S1AP_CSG-Id.h" +#include "S1AP_CellAccessMode.h" +#include "S1AP_PS-ServiceNotAvailable.h" +#include "S1AP_NASSecurityParametersfromE-UTRAN.h" +#include "S1AP_E-RABSubjecttoDataForwardingList.h" +#include "S1AP_E-RABList.h" +#include "S1AP_Target-ToSource-TransparentContainer.h" +#include "S1AP_CriticalityDiagnostics.h" +#include "S1AP_UEAggregateMaximumBitrate.h" +#include "S1AP_E-RABToBeSetupListHOReq.h" +#include "S1AP_UESecurityCapabilities.h" +#include "S1AP_HandoverRestrictionList.h" +#include "S1AP_TraceActivation.h" +#include "S1AP_RequestType.h" +#include "S1AP_SRVCCOperationPossible.h" +#include "S1AP_SecurityContext.h" +#include "S1AP_NASSecurityParameterstoE-UTRAN.h" +#include "S1AP_CSGMembershipStatus.h" +#include "S1AP_GUMMEI.h" +#include "S1AP_ManagementBasedMDTAllowed.h" +#include "S1AP_MDTPLMNList.h" +#include "S1AP_Masked-IMEISV.h" +#include "S1AP_ExpectedUEBehaviour.h" +#include "S1AP_ProSeAuthorized.h" +#include "S1AP_UEUserPlaneCIoTSupportIndicator.h" +#include "S1AP_V2XServicesAuthorized.h" +#include "S1AP_UESidelinkAggregateMaximumBitrate.h" +#include "S1AP_EnhancedCoverageRestricted.h" +#include "S1AP_E-RABAdmittedList.h" +#include "S1AP_E-RABFailedtoSetupListHOReqAck.h" +#include "S1AP_CE-mode-B-SupportIndicator.h" +#include "S1AP_EUTRAN-CGI.h" +#include "S1AP_TAI.h" +#include "S1AP_TunnelInformation.h" +#include "S1AP_LHN-ID.h" +#include "S1AP_E-RABToBeSwitchedDLList.h" +#include "S1AP_RRC-Establishment-Cause.h" +#include "S1AP_E-RABToBeSwitchedULList.h" +#include "S1AP_E-RABToBeSetupListBearerSUReq.h" +#include "S1AP_E-RABSetupListBearerSURes.h" +#include "S1AP_E-RABToBeModifiedListBearerModReq.h" +#include "S1AP_E-RABModifyListBearerModRes.h" +#include "S1AP_NAS-PDU.h" +#include "S1AP_E-RABReleaseListBearerRelComp.h" +#include "S1AP_UserLocationInformation.h" +#include "S1AP_E-RABToBeSetupListCtxtSUReq.h" +#include "S1AP_SecurityKey.h" +#include "S1AP_UERadioCapability.h" +#include "S1AP_SubscriberProfileIDforRFP.h" +#include "S1AP_CSFallbackIndicator.h" +#include "S1AP_LAI.h" +#include "S1AP_AdditionalCSFallbackIndicator.h" +#include "S1AP_E-RABSetupListCtxtSURes.h" +#include "S1AP_UEIdentityIndexValue.h" +#include "S1AP_UEPagingID.h" +#include "S1AP_PagingDRX.h" +#include "S1AP_CNDomain.h" +#include "S1AP_TAIList.h" +#include "S1AP_CSG-IdList.h" +#include "S1AP_PagingPriority.h" +#include "S1AP_UERadioCapabilityForPaging.h" +#include "S1AP_AssistanceDataForPaging.h" +#include "S1AP_Paging-eDRXInformation.h" +#include "S1AP_Extended-UEIdentityIndexValue.h" +#include "S1AP_NB-IoT-Paging-eDRXInformation.h" +#include "S1AP_NB-IoT-UEIdentityIndexValue.h" +#include "S1AP_GWContextReleaseIndication.h" +#include "S1AP_UE-S1AP-IDs.h" +#include "S1AP_InformationOnRecommendedCellsAndENBsForPaging.h" +#include "S1AP_CellIdentifierAndCELevelForCECapableUEs.h" +#include "S1AP_SRVCCOperationNotPossible.h" +#include "S1AP_VoiceSupportMatchIndicator.h" +#include "S1AP_DLNASPDUDeliveryAckRequest.h" +#include "S1AP_S-TMSI.h" +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_RelayNode-Indicator.h" +#include "S1AP_GUMMEIType.h" +#include "S1AP_MME-Group-ID.h" +#include "S1AP_UE-Usage-Type.h" +#include "S1AP_DCN-ID.h" +#include "S1AP_Coverage-Level.h" +#include +#include "S1AP_Additional-GUTI.h" +#include "S1AP_ResetType.h" +#include "S1AP_UE-associatedLogicalS1-ConnectionListResAck.h" +#include "S1AP_Global-ENB-ID.h" +#include "S1AP_ENBname.h" +#include "S1AP_SupportedTAs.h" +#include "S1AP_UE-RetentionInformation.h" +#include "S1AP_NB-IoT-DefaultPagingDRX.h" +#include "S1AP_MMEname.h" +#include "S1AP_ServedGUMMEIs.h" +#include "S1AP_RelativeMMECapacity.h" +#include "S1AP_MMERelaySupportIndicator.h" +#include "S1AP_ServedDCNs.h" +#include "S1AP_TimeToWait.h" +#include "S1AP_Cdma2000HOStatus.h" +#include "S1AP_Cdma2000RATType.h" +#include "S1AP_Cdma2000PDU.h" +#include "S1AP_Cdma2000SectorID.h" +#include "S1AP_Cdma2000HORequiredIndication.h" +#include "S1AP_Cdma2000OneXSRVCCInfo.h" +#include "S1AP_Cdma2000OneXRAND.h" +#include "S1AP_EUTRANRoundTripDelayEstimationInfo.h" +#include "S1AP_ENB-StatusTransfer-TransparentContainer.h" +#include "S1AP_E-UTRAN-Trace-ID.h" +#include "S1AP_PrivacyIndicator.h" +#include "S1AP_OverloadResponse.h" +#include "S1AP_GUMMEIList.h" +#include "S1AP_TrafficLoadReductionIndication.h" +#include "S1AP_MessageIdentifier.h" +#include "S1AP_SerialNumber.h" +#include "S1AP_WarningAreaList.h" +#include "S1AP_RepetitionPeriod.h" +#include "S1AP_ExtendedRepetitionPeriod.h" +#include "S1AP_NumberofBroadcastRequest.h" +#include "S1AP_WarningType.h" +#include "S1AP_WarningSecurityInfo.h" +#include "S1AP_DataCodingScheme.h" +#include "S1AP_WarningMessageContents.h" +#include "S1AP_ConcurrentWarningMessageIndicator.h" +#include "S1AP_BroadcastCompletedAreaList.h" +#include "S1AP_Inter-SystemInformationTransferType.h" +#include "S1AP_SONConfigurationTransfer.h" +#include "S1AP_KillAllWarningMessages.h" +#include "S1AP_BroadcastCancelledAreaList.h" +#include "S1AP_ECGIListForRestart.h" +#include "S1AP_TAIListForRestart.h" +#include "S1AP_EmergencyAreaIDListForRestart.h" +#include "S1AP_PWSfailedECGIList.h" +#include "S1AP_Routing-ID.h" +#include "S1AP_LPPa-PDU.h" +#include "S1AP_E-RABToBeModifiedListBearerModInd.h" +#include "S1AP_E-RABNotToBeModifiedListBearerModInd.h" +#include "S1AP_CSGMembershipInfo.h" +#include "S1AP_E-RABModifyListBearerModConf.h" +#include "S1AP_E-RABFailedToResumeListResumeReq.h" +#include "S1AP_E-RABFailedToResumeListResumeRes.h" +#include "S1AP_DL-CP-SecurityInformation.h" +#include "S1AP_E-RABLevelQoSParameters.h" +#include "S1AP_UL-CP-SecurityInformation.h" +#include "S1AP_E-RABDataForwardingItem.h" +#include "S1AP_E-RABToBeSetupItemHOReq.h" +#include "S1AP_E-RABAdmittedItem.h" +#include "S1AP_E-RABFailedToSetupItemHOReqAck.h" +#include "S1AP_E-RABToBeSwitchedDLItem.h" +#include "S1AP_E-RABToBeSwitchedULItem.h" +#include "S1AP_E-RABToBeModifiedItemBearerModInd.h" +#include "S1AP_E-RABNotToBeModifiedItemBearerModInd.h" +#include "S1AP_E-RABFailedToResumeItemResumeReq.h" +#include "S1AP_E-RABFailedToResumeItemResumeRes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_E_RABToBeSetupItemBearerSUReqIEs__value_PR { + E_RABToBeSetupItemBearerSUReqIEs__value_PR_NOTHING, /* No components present */ + E_RABToBeSetupItemBearerSUReqIEs__value_PR_E_RABToBeSetupItemBearerSUReq +} S1AP_E_RABToBeSetupItemBearerSUReqIEs__value_PR; +typedef enum S1AP_E_RABSetupItemBearerSUResIEs__value_PR { + E_RABSetupItemBearerSUResIEs__value_PR_NOTHING, /* No components present */ + E_RABSetupItemBearerSUResIEs__value_PR_E_RABSetupItemBearerSURes +} S1AP_E_RABSetupItemBearerSUResIEs__value_PR; +typedef enum S1AP_E_RABToBeModifiedItemBearerModReqIEs__value_PR { + E_RABToBeModifiedItemBearerModReqIEs__value_PR_NOTHING, /* No components present */ + E_RABToBeModifiedItemBearerModReqIEs__value_PR_E_RABToBeModifiedItemBearerModReq +} S1AP_E_RABToBeModifiedItemBearerModReqIEs__value_PR; +typedef enum S1AP_E_RABModifyItemBearerModResIEs__value_PR { + E_RABModifyItemBearerModResIEs__value_PR_NOTHING, /* No components present */ + E_RABModifyItemBearerModResIEs__value_PR_E_RABModifyItemBearerModRes +} S1AP_E_RABModifyItemBearerModResIEs__value_PR; +typedef enum S1AP_E_RABReleaseItemBearerRelCompIEs__value_PR { + E_RABReleaseItemBearerRelCompIEs__value_PR_NOTHING, /* No components present */ + E_RABReleaseItemBearerRelCompIEs__value_PR_E_RABReleaseItemBearerRelComp +} S1AP_E_RABReleaseItemBearerRelCompIEs__value_PR; +typedef enum S1AP_E_RABToBeSetupItemCtxtSUReqIEs__value_PR { + E_RABToBeSetupItemCtxtSUReqIEs__value_PR_NOTHING, /* No components present */ + E_RABToBeSetupItemCtxtSUReqIEs__value_PR_E_RABToBeSetupItemCtxtSUReq +} S1AP_E_RABToBeSetupItemCtxtSUReqIEs__value_PR; +typedef enum S1AP_E_RABSetupItemCtxtSUResIEs__value_PR { + E_RABSetupItemCtxtSUResIEs__value_PR_NOTHING, /* No components present */ + E_RABSetupItemCtxtSUResIEs__value_PR_E_RABSetupItemCtxtSURes +} S1AP_E_RABSetupItemCtxtSUResIEs__value_PR; +typedef enum S1AP_TAIItemIEs__value_PR { + TAIItemIEs__value_PR_NOTHING, /* No components present */ + TAIItemIEs__value_PR_TAIItem +} S1AP_TAIItemIEs__value_PR; +typedef enum S1AP_UE_associatedLogicalS1_ConnectionItemRes__value_PR { + UE_associatedLogicalS1_ConnectionItemRes__value_PR_NOTHING, /* No components present */ + UE_associatedLogicalS1_ConnectionItemRes__value_PR_UE_associatedLogicalS1_ConnectionItem +} S1AP_UE_associatedLogicalS1_ConnectionItemRes__value_PR; +typedef enum S1AP_UE_associatedLogicalS1_ConnectionItemResAck__value_PR { + UE_associatedLogicalS1_ConnectionItemResAck__value_PR_NOTHING, /* No components present */ + UE_associatedLogicalS1_ConnectionItemResAck__value_PR_UE_associatedLogicalS1_ConnectionItem +} S1AP_UE_associatedLogicalS1_ConnectionItemResAck__value_PR; +typedef enum S1AP_E_RABModifyItemBearerModConfIEs__value_PR { + E_RABModifyItemBearerModConfIEs__value_PR_NOTHING, /* No components present */ + E_RABModifyItemBearerModConfIEs__value_PR_E_RABModifyItemBearerModConf +} S1AP_E_RABModifyItemBearerModConfIEs__value_PR; +typedef enum S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__value_PR { + Bearers_SubjectToStatusTransfer_ItemIEs__value_PR_NOTHING, /* No components present */ + Bearers_SubjectToStatusTransfer_ItemIEs__value_PR_Bearers_SubjectToStatusTransfer_Item +} S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__value_PR; +typedef enum S1AP_E_RABInformationListIEs__value_PR { + E_RABInformationListIEs__value_PR_NOTHING, /* No components present */ + E_RABInformationListIEs__value_PR_E_RABInformationListItem +} S1AP_E_RABInformationListIEs__value_PR; +typedef enum S1AP_E_RABItemIEs__value_PR { + E_RABItemIEs__value_PR_NOTHING, /* No components present */ + E_RABItemIEs__value_PR_E_RABItem +} S1AP_E_RABItemIEs__value_PR; +typedef enum S1AP_MDTMode_ExtensionIE__value_PR { + MDTMode_ExtensionIE__value_PR_NOTHING, /* No components present */ + MDTMode_ExtensionIE__value_PR_LoggedMBSFNMDT +} S1AP_MDTMode_ExtensionIE__value_PR; +typedef enum S1AP_RecommendedCellItemIEs__value_PR { + RecommendedCellItemIEs__value_PR_NOTHING, /* No components present */ + RecommendedCellItemIEs__value_PR_RecommendedCellItem +} S1AP_RecommendedCellItemIEs__value_PR; +typedef enum S1AP_RecommendedENBItemIEs__value_PR { + RecommendedENBItemIEs__value_PR_NOTHING, /* No components present */ + RecommendedENBItemIEs__value_PR_RecommendedENBItem +} S1AP_RecommendedENBItemIEs__value_PR; +typedef enum S1AP_SONInformation_ExtensionIE__value_PR { + SONInformation_ExtensionIE__value_PR_NOTHING, /* No components present */ + SONInformation_ExtensionIE__value_PR_SONInformationReport +} S1AP_SONInformation_ExtensionIE__value_PR; +typedef enum S1AP_HandoverRequiredIEs__value_PR { + HandoverRequiredIEs__value_PR_NOTHING, /* No components present */ + HandoverRequiredIEs__value_PR_MME_UE_S1AP_ID, + HandoverRequiredIEs__value_PR_ENB_UE_S1AP_ID, + HandoverRequiredIEs__value_PR_HandoverType, + HandoverRequiredIEs__value_PR_Cause, + HandoverRequiredIEs__value_PR_TargetID, + HandoverRequiredIEs__value_PR_Direct_Forwarding_Path_Availability, + HandoverRequiredIEs__value_PR_SRVCCHOIndication, + HandoverRequiredIEs__value_PR_Source_ToTarget_TransparentContainer, + HandoverRequiredIEs__value_PR_MSClassmark2, + HandoverRequiredIEs__value_PR_MSClassmark3, + HandoverRequiredIEs__value_PR_CSG_Id, + HandoverRequiredIEs__value_PR_CellAccessMode, + HandoverRequiredIEs__value_PR_PS_ServiceNotAvailable +} S1AP_HandoverRequiredIEs__value_PR; +typedef enum S1AP_HandoverCommandIEs__value_PR { + HandoverCommandIEs__value_PR_NOTHING, /* No components present */ + HandoverCommandIEs__value_PR_MME_UE_S1AP_ID, + HandoverCommandIEs__value_PR_ENB_UE_S1AP_ID, + HandoverCommandIEs__value_PR_HandoverType, + HandoverCommandIEs__value_PR_NASSecurityParametersfromE_UTRAN, + HandoverCommandIEs__value_PR_E_RABSubjecttoDataForwardingList, + HandoverCommandIEs__value_PR_E_RABList, + HandoverCommandIEs__value_PR_Target_ToSource_TransparentContainer, + HandoverCommandIEs__value_PR_CriticalityDiagnostics +} S1AP_HandoverCommandIEs__value_PR; +typedef enum S1AP_HandoverPreparationFailureIEs__value_PR { + HandoverPreparationFailureIEs__value_PR_NOTHING, /* No components present */ + HandoverPreparationFailureIEs__value_PR_MME_UE_S1AP_ID, + HandoverPreparationFailureIEs__value_PR_ENB_UE_S1AP_ID, + HandoverPreparationFailureIEs__value_PR_Cause, + HandoverPreparationFailureIEs__value_PR_CriticalityDiagnostics +} S1AP_HandoverPreparationFailureIEs__value_PR; +typedef enum S1AP_HandoverRequestIEs__value_PR { + HandoverRequestIEs__value_PR_NOTHING, /* No components present */ + HandoverRequestIEs__value_PR_MME_UE_S1AP_ID, + HandoverRequestIEs__value_PR_HandoverType, + HandoverRequestIEs__value_PR_Cause, + HandoverRequestIEs__value_PR_UEAggregateMaximumBitrate, + HandoverRequestIEs__value_PR_E_RABToBeSetupListHOReq, + HandoverRequestIEs__value_PR_Source_ToTarget_TransparentContainer, + HandoverRequestIEs__value_PR_UESecurityCapabilities, + HandoverRequestIEs__value_PR_HandoverRestrictionList, + HandoverRequestIEs__value_PR_TraceActivation, + HandoverRequestIEs__value_PR_RequestType, + HandoverRequestIEs__value_PR_SRVCCOperationPossible, + HandoverRequestIEs__value_PR_SecurityContext, + HandoverRequestIEs__value_PR_NASSecurityParameterstoE_UTRAN, + HandoverRequestIEs__value_PR_CSG_Id, + HandoverRequestIEs__value_PR_CSGMembershipStatus, + HandoverRequestIEs__value_PR_GUMMEI, + HandoverRequestIEs__value_PR_ManagementBasedMDTAllowed, + HandoverRequestIEs__value_PR_MDTPLMNList, + HandoverRequestIEs__value_PR_Masked_IMEISV, + HandoverRequestIEs__value_PR_ExpectedUEBehaviour, + HandoverRequestIEs__value_PR_ProSeAuthorized, + HandoverRequestIEs__value_PR_UEUserPlaneCIoTSupportIndicator, + HandoverRequestIEs__value_PR_V2XServicesAuthorized, + HandoverRequestIEs__value_PR_UESidelinkAggregateMaximumBitrate, + HandoverRequestIEs__value_PR_EnhancedCoverageRestricted +} S1AP_HandoverRequestIEs__value_PR; +typedef enum S1AP_HandoverRequestAcknowledgeIEs__value_PR { + HandoverRequestAcknowledgeIEs__value_PR_NOTHING, /* No components present */ + HandoverRequestAcknowledgeIEs__value_PR_MME_UE_S1AP_ID, + HandoverRequestAcknowledgeIEs__value_PR_ENB_UE_S1AP_ID, + HandoverRequestAcknowledgeIEs__value_PR_E_RABAdmittedList, + HandoverRequestAcknowledgeIEs__value_PR_E_RABFailedtoSetupListHOReqAck, + HandoverRequestAcknowledgeIEs__value_PR_Target_ToSource_TransparentContainer, + HandoverRequestAcknowledgeIEs__value_PR_CSG_Id, + HandoverRequestAcknowledgeIEs__value_PR_CriticalityDiagnostics, + HandoverRequestAcknowledgeIEs__value_PR_CellAccessMode, + HandoverRequestAcknowledgeIEs__value_PR_CE_mode_B_SupportIndicator +} S1AP_HandoverRequestAcknowledgeIEs__value_PR; +typedef enum S1AP_HandoverFailureIEs__value_PR { + HandoverFailureIEs__value_PR_NOTHING, /* No components present */ + HandoverFailureIEs__value_PR_MME_UE_S1AP_ID, + HandoverFailureIEs__value_PR_Cause, + HandoverFailureIEs__value_PR_CriticalityDiagnostics +} S1AP_HandoverFailureIEs__value_PR; +typedef enum S1AP_HandoverNotifyIEs__value_PR { + HandoverNotifyIEs__value_PR_NOTHING, /* No components present */ + HandoverNotifyIEs__value_PR_MME_UE_S1AP_ID, + HandoverNotifyIEs__value_PR_ENB_UE_S1AP_ID, + HandoverNotifyIEs__value_PR_EUTRAN_CGI, + HandoverNotifyIEs__value_PR_TAI, + HandoverNotifyIEs__value_PR_TunnelInformation, + HandoverNotifyIEs__value_PR_LHN_ID +} S1AP_HandoverNotifyIEs__value_PR; +typedef enum S1AP_PathSwitchRequestIEs__value_PR { + PathSwitchRequestIEs__value_PR_NOTHING, /* No components present */ + PathSwitchRequestIEs__value_PR_ENB_UE_S1AP_ID, + PathSwitchRequestIEs__value_PR_E_RABToBeSwitchedDLList, + PathSwitchRequestIEs__value_PR_MME_UE_S1AP_ID, + PathSwitchRequestIEs__value_PR_EUTRAN_CGI, + PathSwitchRequestIEs__value_PR_TAI, + PathSwitchRequestIEs__value_PR_UESecurityCapabilities, + PathSwitchRequestIEs__value_PR_CSG_Id, + PathSwitchRequestIEs__value_PR_CellAccessMode, + PathSwitchRequestIEs__value_PR_GUMMEI, + PathSwitchRequestIEs__value_PR_CSGMembershipStatus, + PathSwitchRequestIEs__value_PR_TunnelInformation, + PathSwitchRequestIEs__value_PR_LHN_ID, + PathSwitchRequestIEs__value_PR_RRC_Establishment_Cause +} S1AP_PathSwitchRequestIEs__value_PR; +typedef enum S1AP_PathSwitchRequestAcknowledgeIEs__value_PR { + PathSwitchRequestAcknowledgeIEs__value_PR_NOTHING, /* No components present */ + PathSwitchRequestAcknowledgeIEs__value_PR_MME_UE_S1AP_ID, + PathSwitchRequestAcknowledgeIEs__value_PR_ENB_UE_S1AP_ID, + PathSwitchRequestAcknowledgeIEs__value_PR_UEAggregateMaximumBitrate, + PathSwitchRequestAcknowledgeIEs__value_PR_E_RABToBeSwitchedULList, + PathSwitchRequestAcknowledgeIEs__value_PR_E_RABList, + PathSwitchRequestAcknowledgeIEs__value_PR_SecurityContext, + PathSwitchRequestAcknowledgeIEs__value_PR_CriticalityDiagnostics, + PathSwitchRequestAcknowledgeIEs__value_PR_CSGMembershipStatus, + PathSwitchRequestAcknowledgeIEs__value_PR_ProSeAuthorized, + PathSwitchRequestAcknowledgeIEs__value_PR_UEUserPlaneCIoTSupportIndicator, + PathSwitchRequestAcknowledgeIEs__value_PR_V2XServicesAuthorized, + PathSwitchRequestAcknowledgeIEs__value_PR_UESidelinkAggregateMaximumBitrate, + PathSwitchRequestAcknowledgeIEs__value_PR_EnhancedCoverageRestricted +} S1AP_PathSwitchRequestAcknowledgeIEs__value_PR; +typedef enum S1AP_PathSwitchRequestFailureIEs__value_PR { + PathSwitchRequestFailureIEs__value_PR_NOTHING, /* No components present */ + PathSwitchRequestFailureIEs__value_PR_MME_UE_S1AP_ID, + PathSwitchRequestFailureIEs__value_PR_ENB_UE_S1AP_ID, + PathSwitchRequestFailureIEs__value_PR_Cause, + PathSwitchRequestFailureIEs__value_PR_CriticalityDiagnostics +} S1AP_PathSwitchRequestFailureIEs__value_PR; +typedef enum S1AP_HandoverCancelIEs__value_PR { + HandoverCancelIEs__value_PR_NOTHING, /* No components present */ + HandoverCancelIEs__value_PR_MME_UE_S1AP_ID, + HandoverCancelIEs__value_PR_ENB_UE_S1AP_ID, + HandoverCancelIEs__value_PR_Cause +} S1AP_HandoverCancelIEs__value_PR; +typedef enum S1AP_HandoverCancelAcknowledgeIEs__value_PR { + HandoverCancelAcknowledgeIEs__value_PR_NOTHING, /* No components present */ + HandoverCancelAcknowledgeIEs__value_PR_MME_UE_S1AP_ID, + HandoverCancelAcknowledgeIEs__value_PR_ENB_UE_S1AP_ID, + HandoverCancelAcknowledgeIEs__value_PR_CriticalityDiagnostics +} S1AP_HandoverCancelAcknowledgeIEs__value_PR; +typedef enum S1AP_E_RABSetupRequestIEs__value_PR { + E_RABSetupRequestIEs__value_PR_NOTHING, /* No components present */ + E_RABSetupRequestIEs__value_PR_MME_UE_S1AP_ID, + E_RABSetupRequestIEs__value_PR_ENB_UE_S1AP_ID, + E_RABSetupRequestIEs__value_PR_UEAggregateMaximumBitrate, + E_RABSetupRequestIEs__value_PR_E_RABToBeSetupListBearerSUReq +} S1AP_E_RABSetupRequestIEs__value_PR; +typedef enum S1AP_E_RABSetupResponseIEs__value_PR { + E_RABSetupResponseIEs__value_PR_NOTHING, /* No components present */ + E_RABSetupResponseIEs__value_PR_MME_UE_S1AP_ID, + E_RABSetupResponseIEs__value_PR_ENB_UE_S1AP_ID, + E_RABSetupResponseIEs__value_PR_E_RABSetupListBearerSURes, + E_RABSetupResponseIEs__value_PR_E_RABList, + E_RABSetupResponseIEs__value_PR_CriticalityDiagnostics +} S1AP_E_RABSetupResponseIEs__value_PR; +typedef enum S1AP_E_RABModifyRequestIEs__value_PR { + E_RABModifyRequestIEs__value_PR_NOTHING, /* No components present */ + E_RABModifyRequestIEs__value_PR_MME_UE_S1AP_ID, + E_RABModifyRequestIEs__value_PR_ENB_UE_S1AP_ID, + E_RABModifyRequestIEs__value_PR_UEAggregateMaximumBitrate, + E_RABModifyRequestIEs__value_PR_E_RABToBeModifiedListBearerModReq +} S1AP_E_RABModifyRequestIEs__value_PR; +typedef enum S1AP_E_RABModifyResponseIEs__value_PR { + E_RABModifyResponseIEs__value_PR_NOTHING, /* No components present */ + E_RABModifyResponseIEs__value_PR_MME_UE_S1AP_ID, + E_RABModifyResponseIEs__value_PR_ENB_UE_S1AP_ID, + E_RABModifyResponseIEs__value_PR_E_RABModifyListBearerModRes, + E_RABModifyResponseIEs__value_PR_E_RABList, + E_RABModifyResponseIEs__value_PR_CriticalityDiagnostics +} S1AP_E_RABModifyResponseIEs__value_PR; +typedef enum S1AP_E_RABReleaseCommandIEs__value_PR { + E_RABReleaseCommandIEs__value_PR_NOTHING, /* No components present */ + E_RABReleaseCommandIEs__value_PR_MME_UE_S1AP_ID, + E_RABReleaseCommandIEs__value_PR_ENB_UE_S1AP_ID, + E_RABReleaseCommandIEs__value_PR_UEAggregateMaximumBitrate, + E_RABReleaseCommandIEs__value_PR_E_RABList, + E_RABReleaseCommandIEs__value_PR_NAS_PDU +} S1AP_E_RABReleaseCommandIEs__value_PR; +typedef enum S1AP_E_RABReleaseResponseIEs__value_PR { + E_RABReleaseResponseIEs__value_PR_NOTHING, /* No components present */ + E_RABReleaseResponseIEs__value_PR_MME_UE_S1AP_ID, + E_RABReleaseResponseIEs__value_PR_ENB_UE_S1AP_ID, + E_RABReleaseResponseIEs__value_PR_E_RABReleaseListBearerRelComp, + E_RABReleaseResponseIEs__value_PR_E_RABList, + E_RABReleaseResponseIEs__value_PR_CriticalityDiagnostics, + E_RABReleaseResponseIEs__value_PR_UserLocationInformation +} S1AP_E_RABReleaseResponseIEs__value_PR; +typedef enum S1AP_E_RABReleaseIndicationIEs__value_PR { + E_RABReleaseIndicationIEs__value_PR_NOTHING, /* No components present */ + E_RABReleaseIndicationIEs__value_PR_MME_UE_S1AP_ID, + E_RABReleaseIndicationIEs__value_PR_ENB_UE_S1AP_ID, + E_RABReleaseIndicationIEs__value_PR_E_RABList, + E_RABReleaseIndicationIEs__value_PR_UserLocationInformation +} S1AP_E_RABReleaseIndicationIEs__value_PR; +typedef enum S1AP_InitialContextSetupRequestIEs__value_PR { + InitialContextSetupRequestIEs__value_PR_NOTHING, /* No components present */ + InitialContextSetupRequestIEs__value_PR_MME_UE_S1AP_ID, + InitialContextSetupRequestIEs__value_PR_ENB_UE_S1AP_ID, + InitialContextSetupRequestIEs__value_PR_UEAggregateMaximumBitrate, + InitialContextSetupRequestIEs__value_PR_E_RABToBeSetupListCtxtSUReq, + InitialContextSetupRequestIEs__value_PR_UESecurityCapabilities, + InitialContextSetupRequestIEs__value_PR_SecurityKey, + InitialContextSetupRequestIEs__value_PR_TraceActivation, + InitialContextSetupRequestIEs__value_PR_HandoverRestrictionList, + InitialContextSetupRequestIEs__value_PR_UERadioCapability, + InitialContextSetupRequestIEs__value_PR_SubscriberProfileIDforRFP, + InitialContextSetupRequestIEs__value_PR_CSFallbackIndicator, + InitialContextSetupRequestIEs__value_PR_SRVCCOperationPossible, + InitialContextSetupRequestIEs__value_PR_CSGMembershipStatus, + InitialContextSetupRequestIEs__value_PR_LAI, + InitialContextSetupRequestIEs__value_PR_GUMMEI, + InitialContextSetupRequestIEs__value_PR_ManagementBasedMDTAllowed, + InitialContextSetupRequestIEs__value_PR_MDTPLMNList, + InitialContextSetupRequestIEs__value_PR_AdditionalCSFallbackIndicator, + InitialContextSetupRequestIEs__value_PR_Masked_IMEISV, + InitialContextSetupRequestIEs__value_PR_ExpectedUEBehaviour, + InitialContextSetupRequestIEs__value_PR_ProSeAuthorized, + InitialContextSetupRequestIEs__value_PR_UEUserPlaneCIoTSupportIndicator, + InitialContextSetupRequestIEs__value_PR_V2XServicesAuthorized, + InitialContextSetupRequestIEs__value_PR_UESidelinkAggregateMaximumBitrate, + InitialContextSetupRequestIEs__value_PR_EnhancedCoverageRestricted +} S1AP_InitialContextSetupRequestIEs__value_PR; +typedef enum S1AP_InitialContextSetupResponseIEs__value_PR { + InitialContextSetupResponseIEs__value_PR_NOTHING, /* No components present */ + InitialContextSetupResponseIEs__value_PR_MME_UE_S1AP_ID, + InitialContextSetupResponseIEs__value_PR_ENB_UE_S1AP_ID, + InitialContextSetupResponseIEs__value_PR_E_RABSetupListCtxtSURes, + InitialContextSetupResponseIEs__value_PR_E_RABList, + InitialContextSetupResponseIEs__value_PR_CriticalityDiagnostics +} S1AP_InitialContextSetupResponseIEs__value_PR; +typedef enum S1AP_InitialContextSetupFailureIEs__value_PR { + InitialContextSetupFailureIEs__value_PR_NOTHING, /* No components present */ + InitialContextSetupFailureIEs__value_PR_MME_UE_S1AP_ID, + InitialContextSetupFailureIEs__value_PR_ENB_UE_S1AP_ID, + InitialContextSetupFailureIEs__value_PR_Cause, + InitialContextSetupFailureIEs__value_PR_CriticalityDiagnostics +} S1AP_InitialContextSetupFailureIEs__value_PR; +typedef enum S1AP_PagingIEs__value_PR { + PagingIEs__value_PR_NOTHING, /* No components present */ + PagingIEs__value_PR_UEIdentityIndexValue, + PagingIEs__value_PR_UEPagingID, + PagingIEs__value_PR_PagingDRX, + PagingIEs__value_PR_CNDomain, + PagingIEs__value_PR_TAIList, + PagingIEs__value_PR_CSG_IdList, + PagingIEs__value_PR_PagingPriority, + PagingIEs__value_PR_UERadioCapabilityForPaging, + PagingIEs__value_PR_AssistanceDataForPaging, + PagingIEs__value_PR_Paging_eDRXInformation, + PagingIEs__value_PR_Extended_UEIdentityIndexValue, + PagingIEs__value_PR_NB_IoT_Paging_eDRXInformation, + PagingIEs__value_PR_NB_IoT_UEIdentityIndexValue +} S1AP_PagingIEs__value_PR; +typedef enum S1AP_UEContextReleaseRequest_IEs__value_PR { + UEContextReleaseRequest_IEs__value_PR_NOTHING, /* No components present */ + UEContextReleaseRequest_IEs__value_PR_MME_UE_S1AP_ID, + UEContextReleaseRequest_IEs__value_PR_ENB_UE_S1AP_ID, + UEContextReleaseRequest_IEs__value_PR_Cause, + UEContextReleaseRequest_IEs__value_PR_GWContextReleaseIndication +} S1AP_UEContextReleaseRequest_IEs__value_PR; +typedef enum S1AP_UEContextReleaseCommand_IEs__value_PR { + UEContextReleaseCommand_IEs__value_PR_NOTHING, /* No components present */ + UEContextReleaseCommand_IEs__value_PR_UE_S1AP_IDs, + UEContextReleaseCommand_IEs__value_PR_Cause +} S1AP_UEContextReleaseCommand_IEs__value_PR; +typedef enum S1AP_UEContextReleaseComplete_IEs__value_PR { + UEContextReleaseComplete_IEs__value_PR_NOTHING, /* No components present */ + UEContextReleaseComplete_IEs__value_PR_MME_UE_S1AP_ID, + UEContextReleaseComplete_IEs__value_PR_ENB_UE_S1AP_ID, + UEContextReleaseComplete_IEs__value_PR_CriticalityDiagnostics, + UEContextReleaseComplete_IEs__value_PR_UserLocationInformation, + UEContextReleaseComplete_IEs__value_PR_InformationOnRecommendedCellsAndENBsForPaging, + UEContextReleaseComplete_IEs__value_PR_CellIdentifierAndCELevelForCECapableUEs +} S1AP_UEContextReleaseComplete_IEs__value_PR; +typedef enum S1AP_UEContextModificationRequestIEs__value_PR { + UEContextModificationRequestIEs__value_PR_NOTHING, /* No components present */ + UEContextModificationRequestIEs__value_PR_MME_UE_S1AP_ID, + UEContextModificationRequestIEs__value_PR_ENB_UE_S1AP_ID, + UEContextModificationRequestIEs__value_PR_SecurityKey, + UEContextModificationRequestIEs__value_PR_SubscriberProfileIDforRFP, + UEContextModificationRequestIEs__value_PR_UEAggregateMaximumBitrate, + UEContextModificationRequestIEs__value_PR_CSFallbackIndicator, + UEContextModificationRequestIEs__value_PR_UESecurityCapabilities, + UEContextModificationRequestIEs__value_PR_CSGMembershipStatus, + UEContextModificationRequestIEs__value_PR_LAI, + UEContextModificationRequestIEs__value_PR_AdditionalCSFallbackIndicator, + UEContextModificationRequestIEs__value_PR_ProSeAuthorized, + UEContextModificationRequestIEs__value_PR_SRVCCOperationPossible, + UEContextModificationRequestIEs__value_PR_SRVCCOperationNotPossible, + UEContextModificationRequestIEs__value_PR_V2XServicesAuthorized, + UEContextModificationRequestIEs__value_PR_UESidelinkAggregateMaximumBitrate +} S1AP_UEContextModificationRequestIEs__value_PR; +typedef enum S1AP_UEContextModificationResponseIEs__value_PR { + UEContextModificationResponseIEs__value_PR_NOTHING, /* No components present */ + UEContextModificationResponseIEs__value_PR_MME_UE_S1AP_ID, + UEContextModificationResponseIEs__value_PR_ENB_UE_S1AP_ID, + UEContextModificationResponseIEs__value_PR_CriticalityDiagnostics +} S1AP_UEContextModificationResponseIEs__value_PR; +typedef enum S1AP_UEContextModificationFailureIEs__value_PR { + UEContextModificationFailureIEs__value_PR_NOTHING, /* No components present */ + UEContextModificationFailureIEs__value_PR_MME_UE_S1AP_ID, + UEContextModificationFailureIEs__value_PR_ENB_UE_S1AP_ID, + UEContextModificationFailureIEs__value_PR_Cause, + UEContextModificationFailureIEs__value_PR_CriticalityDiagnostics +} S1AP_UEContextModificationFailureIEs__value_PR; +typedef enum S1AP_UERadioCapabilityMatchRequestIEs__value_PR { + UERadioCapabilityMatchRequestIEs__value_PR_NOTHING, /* No components present */ + UERadioCapabilityMatchRequestIEs__value_PR_MME_UE_S1AP_ID, + UERadioCapabilityMatchRequestIEs__value_PR_ENB_UE_S1AP_ID, + UERadioCapabilityMatchRequestIEs__value_PR_UERadioCapability +} S1AP_UERadioCapabilityMatchRequestIEs__value_PR; +typedef enum S1AP_UERadioCapabilityMatchResponseIEs__value_PR { + UERadioCapabilityMatchResponseIEs__value_PR_NOTHING, /* No components present */ + UERadioCapabilityMatchResponseIEs__value_PR_MME_UE_S1AP_ID, + UERadioCapabilityMatchResponseIEs__value_PR_ENB_UE_S1AP_ID, + UERadioCapabilityMatchResponseIEs__value_PR_VoiceSupportMatchIndicator, + UERadioCapabilityMatchResponseIEs__value_PR_CriticalityDiagnostics +} S1AP_UERadioCapabilityMatchResponseIEs__value_PR; +typedef enum S1AP_DownlinkNASTransport_IEs__value_PR { + DownlinkNASTransport_IEs__value_PR_NOTHING, /* No components present */ + DownlinkNASTransport_IEs__value_PR_MME_UE_S1AP_ID, + DownlinkNASTransport_IEs__value_PR_ENB_UE_S1AP_ID, + DownlinkNASTransport_IEs__value_PR_NAS_PDU, + DownlinkNASTransport_IEs__value_PR_HandoverRestrictionList, + DownlinkNASTransport_IEs__value_PR_SubscriberProfileIDforRFP, + DownlinkNASTransport_IEs__value_PR_SRVCCOperationPossible, + DownlinkNASTransport_IEs__value_PR_UERadioCapability, + DownlinkNASTransport_IEs__value_PR_DLNASPDUDeliveryAckRequest, + DownlinkNASTransport_IEs__value_PR_EnhancedCoverageRestricted +} S1AP_DownlinkNASTransport_IEs__value_PR; +typedef enum S1AP_InitialUEMessage_IEs__value_PR { + InitialUEMessage_IEs__value_PR_NOTHING, /* No components present */ + InitialUEMessage_IEs__value_PR_ENB_UE_S1AP_ID, + InitialUEMessage_IEs__value_PR_NAS_PDU, + InitialUEMessage_IEs__value_PR_TAI, + InitialUEMessage_IEs__value_PR_EUTRAN_CGI, + InitialUEMessage_IEs__value_PR_RRC_Establishment_Cause, + InitialUEMessage_IEs__value_PR_S_TMSI, + InitialUEMessage_IEs__value_PR_CSG_Id, + InitialUEMessage_IEs__value_PR_GUMMEI, + InitialUEMessage_IEs__value_PR_CellAccessMode, + InitialUEMessage_IEs__value_PR_TransportLayerAddress, + InitialUEMessage_IEs__value_PR_RelayNode_Indicator, + InitialUEMessage_IEs__value_PR_GUMMEIType, + InitialUEMessage_IEs__value_PR_TunnelInformation, + InitialUEMessage_IEs__value_PR_LHN_ID, + InitialUEMessage_IEs__value_PR_MME_Group_ID, + InitialUEMessage_IEs__value_PR_UE_Usage_Type, + InitialUEMessage_IEs__value_PR_CE_mode_B_SupportIndicator, + InitialUEMessage_IEs__value_PR_DCN_ID, + InitialUEMessage_IEs__value_PR_Coverage_Level +} S1AP_InitialUEMessage_IEs__value_PR; +typedef enum S1AP_UplinkNASTransport_IEs__value_PR { + UplinkNASTransport_IEs__value_PR_NOTHING, /* No components present */ + UplinkNASTransport_IEs__value_PR_MME_UE_S1AP_ID, + UplinkNASTransport_IEs__value_PR_ENB_UE_S1AP_ID, + UplinkNASTransport_IEs__value_PR_NAS_PDU, + UplinkNASTransport_IEs__value_PR_EUTRAN_CGI, + UplinkNASTransport_IEs__value_PR_TAI, + UplinkNASTransport_IEs__value_PR_TransportLayerAddress, + UplinkNASTransport_IEs__value_PR_LHN_ID +} S1AP_UplinkNASTransport_IEs__value_PR; +typedef enum S1AP_NASNonDeliveryIndication_IEs__value_PR { + NASNonDeliveryIndication_IEs__value_PR_NOTHING, /* No components present */ + NASNonDeliveryIndication_IEs__value_PR_MME_UE_S1AP_ID, + NASNonDeliveryIndication_IEs__value_PR_ENB_UE_S1AP_ID, + NASNonDeliveryIndication_IEs__value_PR_NAS_PDU, + NASNonDeliveryIndication_IEs__value_PR_Cause +} S1AP_NASNonDeliveryIndication_IEs__value_PR; +typedef enum S1AP_RerouteNASRequest_IEs__value_PR { + RerouteNASRequest_IEs__value_PR_NOTHING, /* No components present */ + RerouteNASRequest_IEs__value_PR_ENB_UE_S1AP_ID, + RerouteNASRequest_IEs__value_PR_MME_UE_S1AP_ID, + RerouteNASRequest_IEs__value_PR_OCTET_STRING, + RerouteNASRequest_IEs__value_PR_MME_Group_ID, + RerouteNASRequest_IEs__value_PR_Additional_GUTI, + RerouteNASRequest_IEs__value_PR_UE_Usage_Type +} S1AP_RerouteNASRequest_IEs__value_PR; +typedef enum S1AP_NASDeliveryIndicationIEs__value_PR { + NASDeliveryIndicationIEs__value_PR_NOTHING /* No components present */ + +} S1AP_NASDeliveryIndicationIEs__value_PR; +typedef enum S1AP_ResetIEs__value_PR { + ResetIEs__value_PR_NOTHING, /* No components present */ + ResetIEs__value_PR_Cause, + ResetIEs__value_PR_ResetType +} S1AP_ResetIEs__value_PR; +typedef enum S1AP_ResetAcknowledgeIEs__value_PR { + ResetAcknowledgeIEs__value_PR_NOTHING, /* No components present */ + ResetAcknowledgeIEs__value_PR_UE_associatedLogicalS1_ConnectionListResAck, + ResetAcknowledgeIEs__value_PR_CriticalityDiagnostics +} S1AP_ResetAcknowledgeIEs__value_PR; +typedef enum S1AP_ErrorIndicationIEs__value_PR { + ErrorIndicationIEs__value_PR_NOTHING, /* No components present */ + ErrorIndicationIEs__value_PR_MME_UE_S1AP_ID, + ErrorIndicationIEs__value_PR_ENB_UE_S1AP_ID, + ErrorIndicationIEs__value_PR_Cause, + ErrorIndicationIEs__value_PR_CriticalityDiagnostics +} S1AP_ErrorIndicationIEs__value_PR; +typedef enum S1AP_S1SetupRequestIEs__value_PR { + S1SetupRequestIEs__value_PR_NOTHING, /* No components present */ + S1SetupRequestIEs__value_PR_Global_ENB_ID, + S1SetupRequestIEs__value_PR_ENBname, + S1SetupRequestIEs__value_PR_SupportedTAs, + S1SetupRequestIEs__value_PR_PagingDRX, + S1SetupRequestIEs__value_PR_CSG_IdList, + S1SetupRequestIEs__value_PR_UE_RetentionInformation, + S1SetupRequestIEs__value_PR_NB_IoT_DefaultPagingDRX +} S1AP_S1SetupRequestIEs__value_PR; +typedef enum S1AP_S1SetupResponseIEs__value_PR { + S1SetupResponseIEs__value_PR_NOTHING, /* No components present */ + S1SetupResponseIEs__value_PR_MMEname, + S1SetupResponseIEs__value_PR_ServedGUMMEIs, + S1SetupResponseIEs__value_PR_RelativeMMECapacity, + S1SetupResponseIEs__value_PR_MMERelaySupportIndicator, + S1SetupResponseIEs__value_PR_CriticalityDiagnostics, + S1SetupResponseIEs__value_PR_UE_RetentionInformation, + S1SetupResponseIEs__value_PR_ServedDCNs +} S1AP_S1SetupResponseIEs__value_PR; +typedef enum S1AP_S1SetupFailureIEs__value_PR { + S1SetupFailureIEs__value_PR_NOTHING, /* No components present */ + S1SetupFailureIEs__value_PR_Cause, + S1SetupFailureIEs__value_PR_TimeToWait, + S1SetupFailureIEs__value_PR_CriticalityDiagnostics +} S1AP_S1SetupFailureIEs__value_PR; +typedef enum S1AP_ENBConfigurationUpdateIEs__value_PR { + ENBConfigurationUpdateIEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationUpdateIEs__value_PR_ENBname, + ENBConfigurationUpdateIEs__value_PR_SupportedTAs, + ENBConfigurationUpdateIEs__value_PR_CSG_IdList, + ENBConfigurationUpdateIEs__value_PR_PagingDRX, + ENBConfigurationUpdateIEs__value_PR_NB_IoT_DefaultPagingDRX +} S1AP_ENBConfigurationUpdateIEs__value_PR; +typedef enum S1AP_ENBConfigurationUpdateAcknowledgeIEs__value_PR { + ENBConfigurationUpdateAcknowledgeIEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationUpdateAcknowledgeIEs__value_PR_CriticalityDiagnostics +} S1AP_ENBConfigurationUpdateAcknowledgeIEs__value_PR; +typedef enum S1AP_ENBConfigurationUpdateFailureIEs__value_PR { + ENBConfigurationUpdateFailureIEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationUpdateFailureIEs__value_PR_Cause, + ENBConfigurationUpdateFailureIEs__value_PR_TimeToWait, + ENBConfigurationUpdateFailureIEs__value_PR_CriticalityDiagnostics +} S1AP_ENBConfigurationUpdateFailureIEs__value_PR; +typedef enum S1AP_MMEConfigurationUpdateIEs__value_PR { + MMEConfigurationUpdateIEs__value_PR_NOTHING, /* No components present */ + MMEConfigurationUpdateIEs__value_PR_MMEname, + MMEConfigurationUpdateIEs__value_PR_ServedGUMMEIs, + MMEConfigurationUpdateIEs__value_PR_RelativeMMECapacity, + MMEConfigurationUpdateIEs__value_PR_ServedDCNs +} S1AP_MMEConfigurationUpdateIEs__value_PR; +typedef enum S1AP_MMEConfigurationUpdateAcknowledgeIEs__value_PR { + MMEConfigurationUpdateAcknowledgeIEs__value_PR_NOTHING, /* No components present */ + MMEConfigurationUpdateAcknowledgeIEs__value_PR_CriticalityDiagnostics +} S1AP_MMEConfigurationUpdateAcknowledgeIEs__value_PR; +typedef enum S1AP_MMEConfigurationUpdateFailureIEs__value_PR { + MMEConfigurationUpdateFailureIEs__value_PR_NOTHING, /* No components present */ + MMEConfigurationUpdateFailureIEs__value_PR_Cause, + MMEConfigurationUpdateFailureIEs__value_PR_TimeToWait, + MMEConfigurationUpdateFailureIEs__value_PR_CriticalityDiagnostics +} S1AP_MMEConfigurationUpdateFailureIEs__value_PR; +typedef enum S1AP_DownlinkS1cdma2000tunnellingIEs__value_PR { + DownlinkS1cdma2000tunnellingIEs__value_PR_NOTHING, /* No components present */ + DownlinkS1cdma2000tunnellingIEs__value_PR_MME_UE_S1AP_ID, + DownlinkS1cdma2000tunnellingIEs__value_PR_ENB_UE_S1AP_ID, + DownlinkS1cdma2000tunnellingIEs__value_PR_E_RABSubjecttoDataForwardingList, + DownlinkS1cdma2000tunnellingIEs__value_PR_Cdma2000HOStatus, + DownlinkS1cdma2000tunnellingIEs__value_PR_Cdma2000RATType, + DownlinkS1cdma2000tunnellingIEs__value_PR_Cdma2000PDU +} S1AP_DownlinkS1cdma2000tunnellingIEs__value_PR; +typedef enum S1AP_UplinkS1cdma2000tunnellingIEs__value_PR { + UplinkS1cdma2000tunnellingIEs__value_PR_NOTHING, /* No components present */ + UplinkS1cdma2000tunnellingIEs__value_PR_MME_UE_S1AP_ID, + UplinkS1cdma2000tunnellingIEs__value_PR_ENB_UE_S1AP_ID, + UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000RATType, + UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000SectorID, + UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000HORequiredIndication, + UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000OneXSRVCCInfo, + UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000OneXRAND, + UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000PDU, + UplinkS1cdma2000tunnellingIEs__value_PR_EUTRANRoundTripDelayEstimationInfo +} S1AP_UplinkS1cdma2000tunnellingIEs__value_PR; +typedef enum S1AP_UECapabilityInfoIndicationIEs__value_PR { + UECapabilityInfoIndicationIEs__value_PR_NOTHING, /* No components present */ + UECapabilityInfoIndicationIEs__value_PR_MME_UE_S1AP_ID, + UECapabilityInfoIndicationIEs__value_PR_ENB_UE_S1AP_ID, + UECapabilityInfoIndicationIEs__value_PR_UERadioCapability, + UECapabilityInfoIndicationIEs__value_PR_UERadioCapabilityForPaging +} S1AP_UECapabilityInfoIndicationIEs__value_PR; +typedef enum S1AP_ENBStatusTransferIEs__value_PR { + ENBStatusTransferIEs__value_PR_NOTHING, /* No components present */ + ENBStatusTransferIEs__value_PR_MME_UE_S1AP_ID, + ENBStatusTransferIEs__value_PR_ENB_UE_S1AP_ID, + ENBStatusTransferIEs__value_PR_ENB_StatusTransfer_TransparentContainer +} S1AP_ENBStatusTransferIEs__value_PR; +typedef enum S1AP_MMEStatusTransferIEs__value_PR { + MMEStatusTransferIEs__value_PR_NOTHING, /* No components present */ + MMEStatusTransferIEs__value_PR_MME_UE_S1AP_ID, + MMEStatusTransferIEs__value_PR_ENB_UE_S1AP_ID, + MMEStatusTransferIEs__value_PR_ENB_StatusTransfer_TransparentContainer +} S1AP_MMEStatusTransferIEs__value_PR; +typedef enum S1AP_TraceStartIEs__value_PR { + TraceStartIEs__value_PR_NOTHING, /* No components present */ + TraceStartIEs__value_PR_MME_UE_S1AP_ID, + TraceStartIEs__value_PR_ENB_UE_S1AP_ID, + TraceStartIEs__value_PR_TraceActivation +} S1AP_TraceStartIEs__value_PR; +typedef enum S1AP_TraceFailureIndicationIEs__value_PR { + TraceFailureIndicationIEs__value_PR_NOTHING, /* No components present */ + TraceFailureIndicationIEs__value_PR_MME_UE_S1AP_ID, + TraceFailureIndicationIEs__value_PR_ENB_UE_S1AP_ID, + TraceFailureIndicationIEs__value_PR_E_UTRAN_Trace_ID, + TraceFailureIndicationIEs__value_PR_Cause +} S1AP_TraceFailureIndicationIEs__value_PR; +typedef enum S1AP_DeactivateTraceIEs__value_PR { + DeactivateTraceIEs__value_PR_NOTHING, /* No components present */ + DeactivateTraceIEs__value_PR_MME_UE_S1AP_ID, + DeactivateTraceIEs__value_PR_ENB_UE_S1AP_ID, + DeactivateTraceIEs__value_PR_E_UTRAN_Trace_ID +} S1AP_DeactivateTraceIEs__value_PR; +typedef enum S1AP_CellTrafficTraceIEs__value_PR { + CellTrafficTraceIEs__value_PR_NOTHING, /* No components present */ + CellTrafficTraceIEs__value_PR_MME_UE_S1AP_ID, + CellTrafficTraceIEs__value_PR_ENB_UE_S1AP_ID, + CellTrafficTraceIEs__value_PR_E_UTRAN_Trace_ID, + CellTrafficTraceIEs__value_PR_EUTRAN_CGI, + CellTrafficTraceIEs__value_PR_TransportLayerAddress, + CellTrafficTraceIEs__value_PR_PrivacyIndicator +} S1AP_CellTrafficTraceIEs__value_PR; +typedef enum S1AP_LocationReportingControlIEs__value_PR { + LocationReportingControlIEs__value_PR_NOTHING, /* No components present */ + LocationReportingControlIEs__value_PR_MME_UE_S1AP_ID, + LocationReportingControlIEs__value_PR_ENB_UE_S1AP_ID, + LocationReportingControlIEs__value_PR_RequestType +} S1AP_LocationReportingControlIEs__value_PR; +typedef enum S1AP_LocationReportingFailureIndicationIEs__value_PR { + LocationReportingFailureIndicationIEs__value_PR_NOTHING, /* No components present */ + LocationReportingFailureIndicationIEs__value_PR_MME_UE_S1AP_ID, + LocationReportingFailureIndicationIEs__value_PR_ENB_UE_S1AP_ID, + LocationReportingFailureIndicationIEs__value_PR_Cause +} S1AP_LocationReportingFailureIndicationIEs__value_PR; +typedef enum S1AP_LocationReportIEs__value_PR { + LocationReportIEs__value_PR_NOTHING, /* No components present */ + LocationReportIEs__value_PR_MME_UE_S1AP_ID, + LocationReportIEs__value_PR_ENB_UE_S1AP_ID, + LocationReportIEs__value_PR_EUTRAN_CGI, + LocationReportIEs__value_PR_TAI, + LocationReportIEs__value_PR_RequestType +} S1AP_LocationReportIEs__value_PR; +typedef enum S1AP_OverloadStartIEs__value_PR { + OverloadStartIEs__value_PR_NOTHING, /* No components present */ + OverloadStartIEs__value_PR_OverloadResponse, + OverloadStartIEs__value_PR_GUMMEIList, + OverloadStartIEs__value_PR_TrafficLoadReductionIndication +} S1AP_OverloadStartIEs__value_PR; +typedef enum S1AP_OverloadStopIEs__value_PR { + OverloadStopIEs__value_PR_NOTHING, /* No components present */ + OverloadStopIEs__value_PR_GUMMEIList +} S1AP_OverloadStopIEs__value_PR; +typedef enum S1AP_WriteReplaceWarningRequestIEs__value_PR { + WriteReplaceWarningRequestIEs__value_PR_NOTHING, /* No components present */ + WriteReplaceWarningRequestIEs__value_PR_MessageIdentifier, + WriteReplaceWarningRequestIEs__value_PR_SerialNumber, + WriteReplaceWarningRequestIEs__value_PR_WarningAreaList, + WriteReplaceWarningRequestIEs__value_PR_RepetitionPeriod, + WriteReplaceWarningRequestIEs__value_PR_ExtendedRepetitionPeriod, + WriteReplaceWarningRequestIEs__value_PR_NumberofBroadcastRequest, + WriteReplaceWarningRequestIEs__value_PR_WarningType, + WriteReplaceWarningRequestIEs__value_PR_WarningSecurityInfo, + WriteReplaceWarningRequestIEs__value_PR_DataCodingScheme, + WriteReplaceWarningRequestIEs__value_PR_WarningMessageContents, + WriteReplaceWarningRequestIEs__value_PR_ConcurrentWarningMessageIndicator +} S1AP_WriteReplaceWarningRequestIEs__value_PR; +typedef enum S1AP_WriteReplaceWarningResponseIEs__value_PR { + WriteReplaceWarningResponseIEs__value_PR_NOTHING, /* No components present */ + WriteReplaceWarningResponseIEs__value_PR_MessageIdentifier, + WriteReplaceWarningResponseIEs__value_PR_SerialNumber, + WriteReplaceWarningResponseIEs__value_PR_BroadcastCompletedAreaList, + WriteReplaceWarningResponseIEs__value_PR_CriticalityDiagnostics +} S1AP_WriteReplaceWarningResponseIEs__value_PR; +typedef enum S1AP_ENBDirectInformationTransferIEs__value_PR { + ENBDirectInformationTransferIEs__value_PR_NOTHING, /* No components present */ + ENBDirectInformationTransferIEs__value_PR_Inter_SystemInformationTransferType +} S1AP_ENBDirectInformationTransferIEs__value_PR; +typedef enum S1AP_MMEDirectInformationTransferIEs__value_PR { + MMEDirectInformationTransferIEs__value_PR_NOTHING, /* No components present */ + MMEDirectInformationTransferIEs__value_PR_Inter_SystemInformationTransferType +} S1AP_MMEDirectInformationTransferIEs__value_PR; +typedef enum S1AP_ENBConfigurationTransferIEs__value_PR { + ENBConfigurationTransferIEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationTransferIEs__value_PR_SONConfigurationTransfer +} S1AP_ENBConfigurationTransferIEs__value_PR; +typedef enum S1AP_MMEConfigurationTransferIEs__value_PR { + MMEConfigurationTransferIEs__value_PR_NOTHING, /* No components present */ + MMEConfigurationTransferIEs__value_PR_SONConfigurationTransfer +} S1AP_MMEConfigurationTransferIEs__value_PR; +typedef enum S1AP_KillRequestIEs__value_PR { + KillRequestIEs__value_PR_NOTHING, /* No components present */ + KillRequestIEs__value_PR_MessageIdentifier, + KillRequestIEs__value_PR_SerialNumber, + KillRequestIEs__value_PR_WarningAreaList, + KillRequestIEs__value_PR_KillAllWarningMessages +} S1AP_KillRequestIEs__value_PR; +typedef enum S1AP_KillResponseIEs__value_PR { + KillResponseIEs__value_PR_NOTHING, /* No components present */ + KillResponseIEs__value_PR_MessageIdentifier, + KillResponseIEs__value_PR_SerialNumber, + KillResponseIEs__value_PR_BroadcastCancelledAreaList, + KillResponseIEs__value_PR_CriticalityDiagnostics +} S1AP_KillResponseIEs__value_PR; +typedef enum S1AP_PWSRestartIndicationIEs__value_PR { + PWSRestartIndicationIEs__value_PR_NOTHING, /* No components present */ + PWSRestartIndicationIEs__value_PR_ECGIListForRestart, + PWSRestartIndicationIEs__value_PR_Global_ENB_ID, + PWSRestartIndicationIEs__value_PR_TAIListForRestart, + PWSRestartIndicationIEs__value_PR_EmergencyAreaIDListForRestart +} S1AP_PWSRestartIndicationIEs__value_PR; +typedef enum S1AP_PWSFailureIndicationIEs__value_PR { + PWSFailureIndicationIEs__value_PR_NOTHING, /* No components present */ + PWSFailureIndicationIEs__value_PR_PWSfailedECGIList, + PWSFailureIndicationIEs__value_PR_Global_ENB_ID +} S1AP_PWSFailureIndicationIEs__value_PR; +typedef enum S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value_PR { + DownlinkUEAssociatedLPPaTransport_IEs__value_PR_NOTHING, /* No components present */ + DownlinkUEAssociatedLPPaTransport_IEs__value_PR_MME_UE_S1AP_ID, + DownlinkUEAssociatedLPPaTransport_IEs__value_PR_ENB_UE_S1AP_ID, + DownlinkUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID, + DownlinkUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU +} S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value_PR; +typedef enum S1AP_UplinkUEAssociatedLPPaTransport_IEs__value_PR { + UplinkUEAssociatedLPPaTransport_IEs__value_PR_NOTHING, /* No components present */ + UplinkUEAssociatedLPPaTransport_IEs__value_PR_MME_UE_S1AP_ID, + UplinkUEAssociatedLPPaTransport_IEs__value_PR_ENB_UE_S1AP_ID, + UplinkUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID, + UplinkUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU +} S1AP_UplinkUEAssociatedLPPaTransport_IEs__value_PR; +typedef enum S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR { + DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR_NOTHING, /* No components present */ + DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID, + DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU +} S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR; +typedef enum S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value_PR { + UplinkNonUEAssociatedLPPaTransport_IEs__value_PR_NOTHING, /* No components present */ + UplinkNonUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID, + UplinkNonUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU +} S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value_PR; +typedef enum S1AP_E_RABModificationIndicationIEs__value_PR { + E_RABModificationIndicationIEs__value_PR_NOTHING, /* No components present */ + E_RABModificationIndicationIEs__value_PR_MME_UE_S1AP_ID, + E_RABModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID, + E_RABModificationIndicationIEs__value_PR_E_RABToBeModifiedListBearerModInd, + E_RABModificationIndicationIEs__value_PR_E_RABNotToBeModifiedListBearerModInd, + E_RABModificationIndicationIEs__value_PR_CSGMembershipInfo, + E_RABModificationIndicationIEs__value_PR_TunnelInformation +} S1AP_E_RABModificationIndicationIEs__value_PR; +typedef enum S1AP_E_RABModificationConfirmIEs__value_PR { + E_RABModificationConfirmIEs__value_PR_NOTHING, /* No components present */ + E_RABModificationConfirmIEs__value_PR_MME_UE_S1AP_ID, + E_RABModificationConfirmIEs__value_PR_ENB_UE_S1AP_ID, + E_RABModificationConfirmIEs__value_PR_E_RABModifyListBearerModConf, + E_RABModificationConfirmIEs__value_PR_E_RABList, + E_RABModificationConfirmIEs__value_PR_CriticalityDiagnostics, + E_RABModificationConfirmIEs__value_PR_CSGMembershipStatus +} S1AP_E_RABModificationConfirmIEs__value_PR; +typedef enum S1AP_UEContextModificationIndicationIEs__value_PR { + UEContextModificationIndicationIEs__value_PR_NOTHING, /* No components present */ + UEContextModificationIndicationIEs__value_PR_MME_UE_S1AP_ID, + UEContextModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID, + UEContextModificationIndicationIEs__value_PR_CSGMembershipInfo +} S1AP_UEContextModificationIndicationIEs__value_PR; +typedef enum S1AP_UEContextModificationConfirmIEs__value_PR { + UEContextModificationConfirmIEs__value_PR_NOTHING, /* No components present */ + UEContextModificationConfirmIEs__value_PR_MME_UE_S1AP_ID, + UEContextModificationConfirmIEs__value_PR_ENB_UE_S1AP_ID, + UEContextModificationConfirmIEs__value_PR_CSGMembershipStatus, + UEContextModificationConfirmIEs__value_PR_CriticalityDiagnostics +} S1AP_UEContextModificationConfirmIEs__value_PR; +typedef enum S1AP_UEContextSuspendRequestIEs__value_PR { + UEContextSuspendRequestIEs__value_PR_NOTHING, /* No components present */ + UEContextSuspendRequestIEs__value_PR_MME_UE_S1AP_ID, + UEContextSuspendRequestIEs__value_PR_ENB_UE_S1AP_ID, + UEContextSuspendRequestIEs__value_PR_InformationOnRecommendedCellsAndENBsForPaging, + UEContextSuspendRequestIEs__value_PR_CellIdentifierAndCELevelForCECapableUEs +} S1AP_UEContextSuspendRequestIEs__value_PR; +typedef enum S1AP_UEContextSuspendResponseIEs__value_PR { + UEContextSuspendResponseIEs__value_PR_NOTHING, /* No components present */ + UEContextSuspendResponseIEs__value_PR_MME_UE_S1AP_ID, + UEContextSuspendResponseIEs__value_PR_ENB_UE_S1AP_ID, + UEContextSuspendResponseIEs__value_PR_CriticalityDiagnostics, + UEContextSuspendResponseIEs__value_PR_SecurityContext +} S1AP_UEContextSuspendResponseIEs__value_PR; +typedef enum S1AP_UEContextResumeRequestIEs__value_PR { + UEContextResumeRequestIEs__value_PR_NOTHING, /* No components present */ + UEContextResumeRequestIEs__value_PR_MME_UE_S1AP_ID, + UEContextResumeRequestIEs__value_PR_ENB_UE_S1AP_ID, + UEContextResumeRequestIEs__value_PR_E_RABFailedToResumeListResumeReq, + UEContextResumeRequestIEs__value_PR_RRC_Establishment_Cause +} S1AP_UEContextResumeRequestIEs__value_PR; +typedef enum S1AP_UEContextResumeResponseIEs__value_PR { + UEContextResumeResponseIEs__value_PR_NOTHING, /* No components present */ + UEContextResumeResponseIEs__value_PR_MME_UE_S1AP_ID, + UEContextResumeResponseIEs__value_PR_ENB_UE_S1AP_ID, + UEContextResumeResponseIEs__value_PR_E_RABFailedToResumeListResumeRes, + UEContextResumeResponseIEs__value_PR_CriticalityDiagnostics, + UEContextResumeResponseIEs__value_PR_SecurityContext +} S1AP_UEContextResumeResponseIEs__value_PR; +typedef enum S1AP_UEContextResumeFailureIEs__value_PR { + UEContextResumeFailureIEs__value_PR_NOTHING, /* No components present */ + UEContextResumeFailureIEs__value_PR_MME_UE_S1AP_ID, + UEContextResumeFailureIEs__value_PR_ENB_UE_S1AP_ID, + UEContextResumeFailureIEs__value_PR_Cause, + UEContextResumeFailureIEs__value_PR_CriticalityDiagnostics +} S1AP_UEContextResumeFailureIEs__value_PR; +typedef enum S1AP_ConnectionEstablishmentIndicationIEs__value_PR { + ConnectionEstablishmentIndicationIEs__value_PR_NOTHING, /* No components present */ + ConnectionEstablishmentIndicationIEs__value_PR_MME_UE_S1AP_ID, + ConnectionEstablishmentIndicationIEs__value_PR_ENB_UE_S1AP_ID, + ConnectionEstablishmentIndicationIEs__value_PR_UERadioCapability, + ConnectionEstablishmentIndicationIEs__value_PR_EnhancedCoverageRestricted, + ConnectionEstablishmentIndicationIEs__value_PR_DL_CP_SecurityInformation +} S1AP_ConnectionEstablishmentIndicationIEs__value_PR; +typedef enum S1AP_RetrieveUEInformationIEs__value_PR { + RetrieveUEInformationIEs__value_PR_NOTHING, /* No components present */ + RetrieveUEInformationIEs__value_PR_S_TMSI +} S1AP_RetrieveUEInformationIEs__value_PR; +typedef enum S1AP_UEInformationTransferIEs__value_PR { + UEInformationTransferIEs__value_PR_NOTHING, /* No components present */ + UEInformationTransferIEs__value_PR_S_TMSI, + UEInformationTransferIEs__value_PR_E_RABLevelQoSParameters, + UEInformationTransferIEs__value_PR_UERadioCapability +} S1AP_UEInformationTransferIEs__value_PR; +typedef enum S1AP_ENBCPRelocationIndicationIEs__value_PR { + ENBCPRelocationIndicationIEs__value_PR_NOTHING, /* No components present */ + ENBCPRelocationIndicationIEs__value_PR_ENB_UE_S1AP_ID, + ENBCPRelocationIndicationIEs__value_PR_S_TMSI, + ENBCPRelocationIndicationIEs__value_PR_EUTRAN_CGI, + ENBCPRelocationIndicationIEs__value_PR_TAI, + ENBCPRelocationIndicationIEs__value_PR_UL_CP_SecurityInformation +} S1AP_ENBCPRelocationIndicationIEs__value_PR; +typedef enum S1AP_MMECPRelocationIndicationIEs__value_PR { + MMECPRelocationIndicationIEs__value_PR_NOTHING, /* No components present */ + MMECPRelocationIndicationIEs__value_PR_MME_UE_S1AP_ID, + MMECPRelocationIndicationIEs__value_PR_ENB_UE_S1AP_ID +} S1AP_MMECPRelocationIndicationIEs__value_PR; +typedef enum S1AP_E_RABDataForwardingItemIEs__value_PR { + E_RABDataForwardingItemIEs__value_PR_NOTHING, /* No components present */ + E_RABDataForwardingItemIEs__value_PR_E_RABDataForwardingItem +} S1AP_E_RABDataForwardingItemIEs__value_PR; +typedef enum S1AP_E_RABToBeSetupItemHOReqIEs__value_PR { + E_RABToBeSetupItemHOReqIEs__value_PR_NOTHING, /* No components present */ + E_RABToBeSetupItemHOReqIEs__value_PR_E_RABToBeSetupItemHOReq +} S1AP_E_RABToBeSetupItemHOReqIEs__value_PR; +typedef enum S1AP_E_RABAdmittedItemIEs__value_PR { + E_RABAdmittedItemIEs__value_PR_NOTHING, /* No components present */ + E_RABAdmittedItemIEs__value_PR_E_RABAdmittedItem +} S1AP_E_RABAdmittedItemIEs__value_PR; +typedef enum S1AP_E_RABFailedtoSetupItemHOReqAckIEs__value_PR { + E_RABFailedtoSetupItemHOReqAckIEs__value_PR_NOTHING, /* No components present */ + E_RABFailedtoSetupItemHOReqAckIEs__value_PR_E_RABFailedToSetupItemHOReqAck +} S1AP_E_RABFailedtoSetupItemHOReqAckIEs__value_PR; +typedef enum S1AP_E_RABToBeSwitchedDLItemIEs__value_PR { + E_RABToBeSwitchedDLItemIEs__value_PR_NOTHING, /* No components present */ + E_RABToBeSwitchedDLItemIEs__value_PR_E_RABToBeSwitchedDLItem +} S1AP_E_RABToBeSwitchedDLItemIEs__value_PR; +typedef enum S1AP_E_RABToBeSwitchedULItemIEs__value_PR { + E_RABToBeSwitchedULItemIEs__value_PR_NOTHING, /* No components present */ + E_RABToBeSwitchedULItemIEs__value_PR_E_RABToBeSwitchedULItem +} S1AP_E_RABToBeSwitchedULItemIEs__value_PR; +typedef enum S1AP_E_RABToBeModifiedItemBearerModIndIEs__value_PR { + E_RABToBeModifiedItemBearerModIndIEs__value_PR_NOTHING, /* No components present */ + E_RABToBeModifiedItemBearerModIndIEs__value_PR_E_RABToBeModifiedItemBearerModInd +} S1AP_E_RABToBeModifiedItemBearerModIndIEs__value_PR; +typedef enum S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value_PR { + E_RABNotToBeModifiedItemBearerModIndIEs__value_PR_NOTHING, /* No components present */ + E_RABNotToBeModifiedItemBearerModIndIEs__value_PR_E_RABNotToBeModifiedItemBearerModInd +} S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value_PR; +typedef enum S1AP_E_RABFailedToResumeItemResumeReqIEs__value_PR { + E_RABFailedToResumeItemResumeReqIEs__value_PR_NOTHING, /* No components present */ + E_RABFailedToResumeItemResumeReqIEs__value_PR_E_RABFailedToResumeItemResumeReq +} S1AP_E_RABFailedToResumeItemResumeReqIEs__value_PR; +typedef enum S1AP_E_RABFailedToResumeItemResumeResIEs__value_PR { + E_RABFailedToResumeItemResumeResIEs__value_PR_NOTHING, /* No components present */ + E_RABFailedToResumeItemResumeResIEs__value_PR_E_RABFailedToResumeItemResumeRes +} S1AP_E_RABFailedToResumeItemResumeResIEs__value_PR; + +/* S1AP_ProtocolIE-Field */ +typedef struct S1AP_E_RABToBeSetupItemBearerSUReqIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSetupItemBearerSUReqIEs__value { + S1AP_E_RABToBeSetupItemBearerSUReqIEs__value_PR present; + union S1AP_E_RABToBeSetupItemBearerSUReqIEs__S1AP_value_u { + S1AP_E_RABToBeSetupItemBearerSUReq_t E_RABToBeSetupItemBearerSUReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupItemBearerSUReqIEs_t; +typedef struct S1AP_E_RABSetupItemBearerSUResIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABSetupItemBearerSUResIEs__value { + S1AP_E_RABSetupItemBearerSUResIEs__value_PR present; + union S1AP_E_RABSetupItemBearerSUResIEs__S1AP_value_u { + S1AP_E_RABSetupItemBearerSURes_t E_RABSetupItemBearerSURes; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupItemBearerSUResIEs_t; +typedef struct S1AP_E_RABToBeModifiedItemBearerModReqIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeModifiedItemBearerModReqIEs__value { + S1AP_E_RABToBeModifiedItemBearerModReqIEs__value_PR present; + union S1AP_E_RABToBeModifiedItemBearerModReqIEs__S1AP_value_u { + S1AP_E_RABToBeModifiedItemBearerModReq_t E_RABToBeModifiedItemBearerModReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeModifiedItemBearerModReqIEs_t; +typedef struct S1AP_E_RABModifyItemBearerModResIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABModifyItemBearerModResIEs__value { + S1AP_E_RABModifyItemBearerModResIEs__value_PR present; + union S1AP_E_RABModifyItemBearerModResIEs__S1AP_value_u { + S1AP_E_RABModifyItemBearerModRes_t E_RABModifyItemBearerModRes; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyItemBearerModResIEs_t; +typedef struct S1AP_E_RABReleaseItemBearerRelCompIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABReleaseItemBearerRelCompIEs__value { + S1AP_E_RABReleaseItemBearerRelCompIEs__value_PR present; + union S1AP_E_RABReleaseItemBearerRelCompIEs__S1AP_value_u { + S1AP_E_RABReleaseItemBearerRelComp_t E_RABReleaseItemBearerRelComp; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseItemBearerRelCompIEs_t; +typedef struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSetupItemCtxtSUReqIEs__value { + S1AP_E_RABToBeSetupItemCtxtSUReqIEs__value_PR present; + union S1AP_E_RABToBeSetupItemCtxtSUReqIEs__S1AP_value_u { + S1AP_E_RABToBeSetupItemCtxtSUReq_t E_RABToBeSetupItemCtxtSUReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupItemCtxtSUReqIEs_t; +typedef struct S1AP_E_RABSetupItemCtxtSUResIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABSetupItemCtxtSUResIEs__value { + S1AP_E_RABSetupItemCtxtSUResIEs__value_PR present; + union S1AP_E_RABSetupItemCtxtSUResIEs__S1AP_value_u { + S1AP_E_RABSetupItemCtxtSURes_t E_RABSetupItemCtxtSURes; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupItemCtxtSUResIEs_t; +typedef struct S1AP_TAIItemIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TAIItemIEs__value { + S1AP_TAIItemIEs__value_PR present; + union S1AP_TAIItemIEs__S1AP_value_u { + S1AP_TAIItem_t TAIItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAIItemIEs_t; +typedef struct S1AP_UE_associatedLogicalS1_ConnectionItemRes { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UE_associatedLogicalS1_ConnectionItemRes__value { + S1AP_UE_associatedLogicalS1_ConnectionItemRes__value_PR present; + union S1AP_UE_associatedLogicalS1_ConnectionItemRes__S1AP_value_u { + S1AP_UE_associatedLogicalS1_ConnectionItem_t UE_associatedLogicalS1_ConnectionItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_associatedLogicalS1_ConnectionItemRes_t; +typedef struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UE_associatedLogicalS1_ConnectionItemResAck__value { + S1AP_UE_associatedLogicalS1_ConnectionItemResAck__value_PR present; + union S1AP_UE_associatedLogicalS1_ConnectionItemResAck__S1AP_value_u { + S1AP_UE_associatedLogicalS1_ConnectionItem_t UE_associatedLogicalS1_ConnectionItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_associatedLogicalS1_ConnectionItemResAck_t; +typedef struct S1AP_E_RABModifyItemBearerModConfIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABModifyItemBearerModConfIEs__value { + S1AP_E_RABModifyItemBearerModConfIEs__value_PR present; + union S1AP_E_RABModifyItemBearerModConfIEs__S1AP_value_u { + S1AP_E_RABModifyItemBearerModConf_t E_RABModifyItemBearerModConf; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyItemBearerModConfIEs_t; +typedef struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__value { + S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__value_PR present; + union S1AP_Bearers_SubjectToStatusTransfer_ItemIEs__S1AP_value_u { + S1AP_Bearers_SubjectToStatusTransfer_Item_t Bearers_SubjectToStatusTransfer_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_t; +typedef struct S1AP_E_RABInformationListIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABInformationListIEs__value { + S1AP_E_RABInformationListIEs__value_PR present; + union S1AP_E_RABInformationListIEs__S1AP_value_u { + S1AP_E_RABInformationListItem_t E_RABInformationListItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABInformationListIEs_t; +typedef struct S1AP_E_RABItemIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABItemIEs__value { + S1AP_E_RABItemIEs__value_PR present; + union S1AP_E_RABItemIEs__S1AP_value_u { + S1AP_E_RABItem_t E_RABItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABItemIEs_t; +typedef struct S1AP_MDTMode_ExtensionIE { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MDTMode_ExtensionIE__value { + S1AP_MDTMode_ExtensionIE__value_PR present; + union S1AP_MDTMode_ExtensionIE__S1AP_value_u { + S1AP_LoggedMBSFNMDT_t LoggedMBSFNMDT; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MDTMode_ExtensionIE_t; +typedef struct S1AP_RecommendedCellItemIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RecommendedCellItemIEs__value { + S1AP_RecommendedCellItemIEs__value_PR present; + union S1AP_RecommendedCellItemIEs__S1AP_value_u { + S1AP_RecommendedCellItem_t RecommendedCellItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedCellItemIEs_t; +typedef struct S1AP_RecommendedENBItemIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RecommendedENBItemIEs__value { + S1AP_RecommendedENBItemIEs__value_PR present; + union S1AP_RecommendedENBItemIEs__S1AP_value_u { + S1AP_RecommendedENBItem_t RecommendedENBItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedENBItemIEs_t; +typedef struct S1AP_SONInformation_ExtensionIE { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_SONInformation_ExtensionIE__value { + S1AP_SONInformation_ExtensionIE__value_PR present; + union S1AP_SONInformation_ExtensionIE__S1AP_value_u { + S1AP_SONInformationReport_t SONInformationReport; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SONInformation_ExtensionIE_t; +typedef struct S1AP_HandoverRequiredIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverRequiredIEs__value { + S1AP_HandoverRequiredIEs__value_PR present; + union S1AP_HandoverRequiredIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_HandoverType_t HandoverType; + S1AP_Cause_t Cause; + S1AP_TargetID_t TargetID; + S1AP_Direct_Forwarding_Path_Availability_t Direct_Forwarding_Path_Availability; + S1AP_SRVCCHOIndication_t SRVCCHOIndication; + S1AP_Source_ToTarget_TransparentContainer_t Source_ToTarget_TransparentContainer; + S1AP_MSClassmark2_t MSClassmark2; + S1AP_MSClassmark3_t MSClassmark3; + S1AP_CSG_Id_t CSG_Id; + S1AP_CellAccessMode_t CellAccessMode; + S1AP_PS_ServiceNotAvailable_t PS_ServiceNotAvailable; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverRequiredIEs_t; +typedef struct S1AP_HandoverCommandIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverCommandIEs__value { + S1AP_HandoverCommandIEs__value_PR present; + union S1AP_HandoverCommandIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_HandoverType_t HandoverType; + S1AP_NASSecurityParametersfromE_UTRAN_t NASSecurityParametersfromE_UTRAN; + S1AP_E_RABSubjecttoDataForwardingList_t E_RABSubjecttoDataForwardingList; + S1AP_E_RABList_t E_RABList; + S1AP_Target_ToSource_TransparentContainer_t Target_ToSource_TransparentContainer; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverCommandIEs_t; +typedef struct S1AP_HandoverPreparationFailureIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverPreparationFailureIEs__value { + S1AP_HandoverPreparationFailureIEs__value_PR present; + union S1AP_HandoverPreparationFailureIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cause_t Cause; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverPreparationFailureIEs_t; +typedef struct S1AP_HandoverRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverRequestIEs__value { + S1AP_HandoverRequestIEs__value_PR present; + union S1AP_HandoverRequestIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_HandoverType_t HandoverType; + S1AP_Cause_t Cause; + S1AP_UEAggregateMaximumBitrate_t UEAggregateMaximumBitrate; + S1AP_E_RABToBeSetupListHOReq_t E_RABToBeSetupListHOReq; + S1AP_Source_ToTarget_TransparentContainer_t Source_ToTarget_TransparentContainer; + S1AP_UESecurityCapabilities_t UESecurityCapabilities; + S1AP_HandoverRestrictionList_t HandoverRestrictionList; + S1AP_TraceActivation_t TraceActivation; + S1AP_RequestType_t RequestType; + S1AP_SRVCCOperationPossible_t SRVCCOperationPossible; + S1AP_SecurityContext_t SecurityContext; + S1AP_NASSecurityParameterstoE_UTRAN_t NASSecurityParameterstoE_UTRAN; + S1AP_CSG_Id_t CSG_Id; + S1AP_CSGMembershipStatus_t CSGMembershipStatus; + S1AP_GUMMEI_t GUMMEI; + S1AP_ManagementBasedMDTAllowed_t ManagementBasedMDTAllowed; + S1AP_MDTPLMNList_t MDTPLMNList; + S1AP_Masked_IMEISV_t Masked_IMEISV; + S1AP_ExpectedUEBehaviour_t ExpectedUEBehaviour; + S1AP_ProSeAuthorized_t ProSeAuthorized; + S1AP_UEUserPlaneCIoTSupportIndicator_t UEUserPlaneCIoTSupportIndicator; + S1AP_V2XServicesAuthorized_t V2XServicesAuthorized; + S1AP_UESidelinkAggregateMaximumBitrate_t UESidelinkAggregateMaximumBitrate; + S1AP_EnhancedCoverageRestricted_t EnhancedCoverageRestricted; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverRequestIEs_t; +typedef struct S1AP_HandoverRequestAcknowledgeIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverRequestAcknowledgeIEs__value { + S1AP_HandoverRequestAcknowledgeIEs__value_PR present; + union S1AP_HandoverRequestAcknowledgeIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABAdmittedList_t E_RABAdmittedList; + S1AP_E_RABFailedtoSetupListHOReqAck_t E_RABFailedtoSetupListHOReqAck; + S1AP_Target_ToSource_TransparentContainer_t Target_ToSource_TransparentContainer; + S1AP_CSG_Id_t CSG_Id; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + S1AP_CellAccessMode_t CellAccessMode; + S1AP_CE_mode_B_SupportIndicator_t CE_mode_B_SupportIndicator; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverRequestAcknowledgeIEs_t; +typedef struct S1AP_HandoverFailureIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverFailureIEs__value { + S1AP_HandoverFailureIEs__value_PR present; + union S1AP_HandoverFailureIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_Cause_t Cause; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverFailureIEs_t; +typedef struct S1AP_HandoverNotifyIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverNotifyIEs__value { + S1AP_HandoverNotifyIEs__value_PR present; + union S1AP_HandoverNotifyIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_EUTRAN_CGI_t EUTRAN_CGI; + S1AP_TAI_t TAI; + S1AP_TunnelInformation_t TunnelInformation; + S1AP_LHN_ID_t LHN_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverNotifyIEs_t; +typedef struct S1AP_PathSwitchRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_PathSwitchRequestIEs__value { + S1AP_PathSwitchRequestIEs__value_PR present; + union S1AP_PathSwitchRequestIEs__S1AP_value_u { + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABToBeSwitchedDLList_t E_RABToBeSwitchedDLList; + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_EUTRAN_CGI_t EUTRAN_CGI; + S1AP_TAI_t TAI; + S1AP_UESecurityCapabilities_t UESecurityCapabilities; + S1AP_CSG_Id_t CSG_Id; + S1AP_CellAccessMode_t CellAccessMode; + S1AP_GUMMEI_t GUMMEI; + S1AP_CSGMembershipStatus_t CSGMembershipStatus; + S1AP_TunnelInformation_t TunnelInformation; + S1AP_LHN_ID_t LHN_ID; + S1AP_RRC_Establishment_Cause_t RRC_Establishment_Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PathSwitchRequestIEs_t; +typedef struct S1AP_PathSwitchRequestAcknowledgeIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_PathSwitchRequestAcknowledgeIEs__value { + S1AP_PathSwitchRequestAcknowledgeIEs__value_PR present; + union S1AP_PathSwitchRequestAcknowledgeIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_UEAggregateMaximumBitrate_t UEAggregateMaximumBitrate; + S1AP_E_RABToBeSwitchedULList_t E_RABToBeSwitchedULList; + S1AP_E_RABList_t E_RABList; + S1AP_SecurityContext_t SecurityContext; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + S1AP_CSGMembershipStatus_t CSGMembershipStatus; + S1AP_ProSeAuthorized_t ProSeAuthorized; + S1AP_UEUserPlaneCIoTSupportIndicator_t UEUserPlaneCIoTSupportIndicator; + S1AP_V2XServicesAuthorized_t V2XServicesAuthorized; + S1AP_UESidelinkAggregateMaximumBitrate_t UESidelinkAggregateMaximumBitrate; + S1AP_EnhancedCoverageRestricted_t EnhancedCoverageRestricted; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PathSwitchRequestAcknowledgeIEs_t; +typedef struct S1AP_PathSwitchRequestFailureIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_PathSwitchRequestFailureIEs__value { + S1AP_PathSwitchRequestFailureIEs__value_PR present; + union S1AP_PathSwitchRequestFailureIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cause_t Cause; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PathSwitchRequestFailureIEs_t; +typedef struct S1AP_HandoverCancelIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverCancelIEs__value { + S1AP_HandoverCancelIEs__value_PR present; + union S1AP_HandoverCancelIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverCancelIEs_t; +typedef struct S1AP_HandoverCancelAcknowledgeIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_HandoverCancelAcknowledgeIEs__value { + S1AP_HandoverCancelAcknowledgeIEs__value_PR present; + union S1AP_HandoverCancelAcknowledgeIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_HandoverCancelAcknowledgeIEs_t; +typedef struct S1AP_E_RABSetupRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABSetupRequestIEs__value { + S1AP_E_RABSetupRequestIEs__value_PR present; + union S1AP_E_RABSetupRequestIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_UEAggregateMaximumBitrate_t UEAggregateMaximumBitrate; + S1AP_E_RABToBeSetupListBearerSUReq_t E_RABToBeSetupListBearerSUReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupRequestIEs_t; +typedef struct S1AP_E_RABSetupResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABSetupResponseIEs__value { + S1AP_E_RABSetupResponseIEs__value_PR present; + union S1AP_E_RABSetupResponseIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABSetupListBearerSURes_t E_RABSetupListBearerSURes; + S1AP_E_RABList_t E_RABList; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABSetupResponseIEs_t; +typedef struct S1AP_E_RABModifyRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABModifyRequestIEs__value { + S1AP_E_RABModifyRequestIEs__value_PR present; + union S1AP_E_RABModifyRequestIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_UEAggregateMaximumBitrate_t UEAggregateMaximumBitrate; + S1AP_E_RABToBeModifiedListBearerModReq_t E_RABToBeModifiedListBearerModReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyRequestIEs_t; +typedef struct S1AP_E_RABModifyResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABModifyResponseIEs__value { + S1AP_E_RABModifyResponseIEs__value_PR present; + union S1AP_E_RABModifyResponseIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABModifyListBearerModRes_t E_RABModifyListBearerModRes; + S1AP_E_RABList_t E_RABList; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModifyResponseIEs_t; +typedef struct S1AP_E_RABReleaseCommandIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABReleaseCommandIEs__value { + S1AP_E_RABReleaseCommandIEs__value_PR present; + union S1AP_E_RABReleaseCommandIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_UEAggregateMaximumBitrate_t UEAggregateMaximumBitrate; + S1AP_E_RABList_t E_RABList; + S1AP_NAS_PDU_t NAS_PDU; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseCommandIEs_t; +typedef struct S1AP_E_RABReleaseResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABReleaseResponseIEs__value { + S1AP_E_RABReleaseResponseIEs__value_PR present; + union S1AP_E_RABReleaseResponseIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABReleaseListBearerRelComp_t E_RABReleaseListBearerRelComp; + S1AP_E_RABList_t E_RABList; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + S1AP_UserLocationInformation_t UserLocationInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseResponseIEs_t; +typedef struct S1AP_E_RABReleaseIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABReleaseIndicationIEs__value { + S1AP_E_RABReleaseIndicationIEs__value_PR present; + union S1AP_E_RABReleaseIndicationIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABList_t E_RABList; + S1AP_UserLocationInformation_t UserLocationInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABReleaseIndicationIEs_t; +typedef struct S1AP_InitialContextSetupRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_InitialContextSetupRequestIEs__value { + S1AP_InitialContextSetupRequestIEs__value_PR present; + union S1AP_InitialContextSetupRequestIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_UEAggregateMaximumBitrate_t UEAggregateMaximumBitrate; + S1AP_E_RABToBeSetupListCtxtSUReq_t E_RABToBeSetupListCtxtSUReq; + S1AP_UESecurityCapabilities_t UESecurityCapabilities; + S1AP_SecurityKey_t SecurityKey; + S1AP_TraceActivation_t TraceActivation; + S1AP_HandoverRestrictionList_t HandoverRestrictionList; + S1AP_UERadioCapability_t UERadioCapability; + S1AP_SubscriberProfileIDforRFP_t SubscriberProfileIDforRFP; + S1AP_CSFallbackIndicator_t CSFallbackIndicator; + S1AP_SRVCCOperationPossible_t SRVCCOperationPossible; + S1AP_CSGMembershipStatus_t CSGMembershipStatus; + S1AP_LAI_t LAI; + S1AP_GUMMEI_t GUMMEI; + S1AP_ManagementBasedMDTAllowed_t ManagementBasedMDTAllowed; + S1AP_MDTPLMNList_t MDTPLMNList; + S1AP_AdditionalCSFallbackIndicator_t AdditionalCSFallbackIndicator; + S1AP_Masked_IMEISV_t Masked_IMEISV; + S1AP_ExpectedUEBehaviour_t ExpectedUEBehaviour; + S1AP_ProSeAuthorized_t ProSeAuthorized; + S1AP_UEUserPlaneCIoTSupportIndicator_t UEUserPlaneCIoTSupportIndicator; + S1AP_V2XServicesAuthorized_t V2XServicesAuthorized; + S1AP_UESidelinkAggregateMaximumBitrate_t UESidelinkAggregateMaximumBitrate; + S1AP_EnhancedCoverageRestricted_t EnhancedCoverageRestricted; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InitialContextSetupRequestIEs_t; +typedef struct S1AP_InitialContextSetupResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_InitialContextSetupResponseIEs__value { + S1AP_InitialContextSetupResponseIEs__value_PR present; + union S1AP_InitialContextSetupResponseIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABSetupListCtxtSURes_t E_RABSetupListCtxtSURes; + S1AP_E_RABList_t E_RABList; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InitialContextSetupResponseIEs_t; +typedef struct S1AP_InitialContextSetupFailureIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_InitialContextSetupFailureIEs__value { + S1AP_InitialContextSetupFailureIEs__value_PR present; + union S1AP_InitialContextSetupFailureIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cause_t Cause; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InitialContextSetupFailureIEs_t; +typedef struct S1AP_PagingIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_PagingIEs__value { + S1AP_PagingIEs__value_PR present; + union S1AP_PagingIEs__S1AP_value_u { + S1AP_UEIdentityIndexValue_t UEIdentityIndexValue; + S1AP_UEPagingID_t UEPagingID; + S1AP_PagingDRX_t PagingDRX; + S1AP_CNDomain_t CNDomain; + S1AP_TAIList_t TAIList; + S1AP_CSG_IdList_t CSG_IdList; + S1AP_PagingPriority_t PagingPriority; + S1AP_UERadioCapabilityForPaging_t UERadioCapabilityForPaging; + S1AP_AssistanceDataForPaging_t AssistanceDataForPaging; + S1AP_Paging_eDRXInformation_t Paging_eDRXInformation; + S1AP_Extended_UEIdentityIndexValue_t Extended_UEIdentityIndexValue; + S1AP_NB_IoT_Paging_eDRXInformation_t NB_IoT_Paging_eDRXInformation; + S1AP_NB_IoT_UEIdentityIndexValue_t NB_IoT_UEIdentityIndexValue; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PagingIEs_t; +typedef struct S1AP_UEContextReleaseRequest_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextReleaseRequest_IEs__value { + S1AP_UEContextReleaseRequest_IEs__value_PR present; + union S1AP_UEContextReleaseRequest_IEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cause_t Cause; + S1AP_GWContextReleaseIndication_t GWContextReleaseIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextReleaseRequest_IEs_t; +typedef struct S1AP_UEContextReleaseCommand_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextReleaseCommand_IEs__value { + S1AP_UEContextReleaseCommand_IEs__value_PR present; + union S1AP_UEContextReleaseCommand_IEs__S1AP_value_u { + S1AP_UE_S1AP_IDs_t UE_S1AP_IDs; + S1AP_Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextReleaseCommand_IEs_t; +typedef struct S1AP_UEContextReleaseComplete_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextReleaseComplete_IEs__value { + S1AP_UEContextReleaseComplete_IEs__value_PR present; + union S1AP_UEContextReleaseComplete_IEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + S1AP_UserLocationInformation_t UserLocationInformation; + S1AP_InformationOnRecommendedCellsAndENBsForPaging_t InformationOnRecommendedCellsAndENBsForPaging; + S1AP_CellIdentifierAndCELevelForCECapableUEs_t CellIdentifierAndCELevelForCECapableUEs; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextReleaseComplete_IEs_t; +typedef struct S1AP_UEContextModificationRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextModificationRequestIEs__value { + S1AP_UEContextModificationRequestIEs__value_PR present; + union S1AP_UEContextModificationRequestIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_SecurityKey_t SecurityKey; + S1AP_SubscriberProfileIDforRFP_t SubscriberProfileIDforRFP; + S1AP_UEAggregateMaximumBitrate_t UEAggregateMaximumBitrate; + S1AP_CSFallbackIndicator_t CSFallbackIndicator; + S1AP_UESecurityCapabilities_t UESecurityCapabilities; + S1AP_CSGMembershipStatus_t CSGMembershipStatus; + S1AP_LAI_t LAI; + S1AP_AdditionalCSFallbackIndicator_t AdditionalCSFallbackIndicator; + S1AP_ProSeAuthorized_t ProSeAuthorized; + S1AP_SRVCCOperationPossible_t SRVCCOperationPossible; + S1AP_SRVCCOperationNotPossible_t SRVCCOperationNotPossible; + S1AP_V2XServicesAuthorized_t V2XServicesAuthorized; + S1AP_UESidelinkAggregateMaximumBitrate_t UESidelinkAggregateMaximumBitrate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationRequestIEs_t; +typedef struct S1AP_UEContextModificationResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextModificationResponseIEs__value { + S1AP_UEContextModificationResponseIEs__value_PR present; + union S1AP_UEContextModificationResponseIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationResponseIEs_t; +typedef struct S1AP_UEContextModificationFailureIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextModificationFailureIEs__value { + S1AP_UEContextModificationFailureIEs__value_PR present; + union S1AP_UEContextModificationFailureIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cause_t Cause; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationFailureIEs_t; +typedef struct S1AP_UERadioCapabilityMatchRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UERadioCapabilityMatchRequestIEs__value { + S1AP_UERadioCapabilityMatchRequestIEs__value_PR present; + union S1AP_UERadioCapabilityMatchRequestIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_UERadioCapability_t UERadioCapability; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UERadioCapabilityMatchRequestIEs_t; +typedef struct S1AP_UERadioCapabilityMatchResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UERadioCapabilityMatchResponseIEs__value { + S1AP_UERadioCapabilityMatchResponseIEs__value_PR present; + union S1AP_UERadioCapabilityMatchResponseIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_VoiceSupportMatchIndicator_t VoiceSupportMatchIndicator; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UERadioCapabilityMatchResponseIEs_t; +typedef struct S1AP_DownlinkNASTransport_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_DownlinkNASTransport_IEs__value { + S1AP_DownlinkNASTransport_IEs__value_PR present; + union S1AP_DownlinkNASTransport_IEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_NAS_PDU_t NAS_PDU; + S1AP_HandoverRestrictionList_t HandoverRestrictionList; + S1AP_SubscriberProfileIDforRFP_t SubscriberProfileIDforRFP; + S1AP_SRVCCOperationPossible_t SRVCCOperationPossible; + S1AP_UERadioCapability_t UERadioCapability; + S1AP_DLNASPDUDeliveryAckRequest_t DLNASPDUDeliveryAckRequest; + S1AP_EnhancedCoverageRestricted_t EnhancedCoverageRestricted; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DownlinkNASTransport_IEs_t; +typedef struct S1AP_InitialUEMessage_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_InitialUEMessage_IEs__value { + S1AP_InitialUEMessage_IEs__value_PR present; + union S1AP_InitialUEMessage_IEs__S1AP_value_u { + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_NAS_PDU_t NAS_PDU; + S1AP_TAI_t TAI; + S1AP_EUTRAN_CGI_t EUTRAN_CGI; + S1AP_RRC_Establishment_Cause_t RRC_Establishment_Cause; + S1AP_S_TMSI_t S_TMSI; + S1AP_CSG_Id_t CSG_Id; + S1AP_GUMMEI_t GUMMEI; + S1AP_CellAccessMode_t CellAccessMode; + S1AP_TransportLayerAddress_t TransportLayerAddress; + S1AP_RelayNode_Indicator_t RelayNode_Indicator; + S1AP_GUMMEIType_t GUMMEIType; + S1AP_TunnelInformation_t TunnelInformation; + S1AP_LHN_ID_t LHN_ID; + S1AP_MME_Group_ID_t MME_Group_ID; + S1AP_UE_Usage_Type_t UE_Usage_Type; + S1AP_CE_mode_B_SupportIndicator_t CE_mode_B_SupportIndicator; + S1AP_DCN_ID_t DCN_ID; + S1AP_Coverage_Level_t Coverage_Level; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_InitialUEMessage_IEs_t; +typedef struct S1AP_UplinkNASTransport_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UplinkNASTransport_IEs__value { + S1AP_UplinkNASTransport_IEs__value_PR present; + union S1AP_UplinkNASTransport_IEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_NAS_PDU_t NAS_PDU; + S1AP_EUTRAN_CGI_t EUTRAN_CGI; + S1AP_TAI_t TAI; + S1AP_TransportLayerAddress_t TransportLayerAddress; + S1AP_LHN_ID_t LHN_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UplinkNASTransport_IEs_t; +typedef struct S1AP_NASNonDeliveryIndication_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_NASNonDeliveryIndication_IEs__value { + S1AP_NASNonDeliveryIndication_IEs__value_PR present; + union S1AP_NASNonDeliveryIndication_IEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_NAS_PDU_t NAS_PDU; + S1AP_Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_NASNonDeliveryIndication_IEs_t; +typedef struct S1AP_RerouteNASRequest_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RerouteNASRequest_IEs__value { + S1AP_RerouteNASRequest_IEs__value_PR present; + union S1AP_RerouteNASRequest_IEs__S1AP_value_u { + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + OCTET_STRING_t OCTET_STRING; + S1AP_MME_Group_ID_t MME_Group_ID; + S1AP_Additional_GUTI_t Additional_GUTI; + S1AP_UE_Usage_Type_t UE_Usage_Type; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RerouteNASRequest_IEs_t; +typedef struct S1AP_NASDeliveryIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_NASDeliveryIndicationIEs__value { + S1AP_NASDeliveryIndicationIEs__value_PR present; + union S1AP_NASDeliveryIndicationIEs__S1AP_value_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_NASDeliveryIndicationIEs_t; +typedef struct S1AP_ResetIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ResetIEs__value { + S1AP_ResetIEs__value_PR present; + union S1AP_ResetIEs__S1AP_value_u { + S1AP_Cause_t Cause; + S1AP_ResetType_t ResetType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ResetIEs_t; +typedef struct S1AP_ResetAcknowledgeIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ResetAcknowledgeIEs__value { + S1AP_ResetAcknowledgeIEs__value_PR present; + union S1AP_ResetAcknowledgeIEs__S1AP_value_u { + S1AP_UE_associatedLogicalS1_ConnectionListResAck_t UE_associatedLogicalS1_ConnectionListResAck; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ResetAcknowledgeIEs_t; +typedef struct S1AP_ErrorIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ErrorIndicationIEs__value { + S1AP_ErrorIndicationIEs__value_PR present; + union S1AP_ErrorIndicationIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cause_t Cause; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ErrorIndicationIEs_t; +typedef struct S1AP_S1SetupRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_S1SetupRequestIEs__value { + S1AP_S1SetupRequestIEs__value_PR present; + union S1AP_S1SetupRequestIEs__S1AP_value_u { + S1AP_Global_ENB_ID_t Global_ENB_ID; + S1AP_ENBname_t ENBname; + S1AP_SupportedTAs_t SupportedTAs; + S1AP_PagingDRX_t PagingDRX; + S1AP_CSG_IdList_t CSG_IdList; + S1AP_UE_RetentionInformation_t UE_RetentionInformation; + S1AP_NB_IoT_DefaultPagingDRX_t NB_IoT_DefaultPagingDRX; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_S1SetupRequestIEs_t; +typedef struct S1AP_S1SetupResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_S1SetupResponseIEs__value { + S1AP_S1SetupResponseIEs__value_PR present; + union S1AP_S1SetupResponseIEs__S1AP_value_u { + S1AP_MMEname_t MMEname; + S1AP_ServedGUMMEIs_t ServedGUMMEIs; + S1AP_RelativeMMECapacity_t RelativeMMECapacity; + S1AP_MMERelaySupportIndicator_t MMERelaySupportIndicator; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + S1AP_UE_RetentionInformation_t UE_RetentionInformation; + S1AP_ServedDCNs_t ServedDCNs; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_S1SetupResponseIEs_t; +typedef struct S1AP_S1SetupFailureIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_S1SetupFailureIEs__value { + S1AP_S1SetupFailureIEs__value_PR present; + union S1AP_S1SetupFailureIEs__S1AP_value_u { + S1AP_Cause_t Cause; + S1AP_TimeToWait_t TimeToWait; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_S1SetupFailureIEs_t; +typedef struct S1AP_ENBConfigurationUpdateIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ENBConfigurationUpdateIEs__value { + S1AP_ENBConfigurationUpdateIEs__value_PR present; + union S1AP_ENBConfigurationUpdateIEs__S1AP_value_u { + S1AP_ENBname_t ENBname; + S1AP_SupportedTAs_t SupportedTAs; + S1AP_CSG_IdList_t CSG_IdList; + S1AP_PagingDRX_t PagingDRX; + S1AP_NB_IoT_DefaultPagingDRX_t NB_IoT_DefaultPagingDRX; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBConfigurationUpdateIEs_t; +typedef struct S1AP_ENBConfigurationUpdateAcknowledgeIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ENBConfigurationUpdateAcknowledgeIEs__value { + S1AP_ENBConfigurationUpdateAcknowledgeIEs__value_PR present; + union S1AP_ENBConfigurationUpdateAcknowledgeIEs__S1AP_value_u { + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBConfigurationUpdateAcknowledgeIEs_t; +typedef struct S1AP_ENBConfigurationUpdateFailureIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ENBConfigurationUpdateFailureIEs__value { + S1AP_ENBConfigurationUpdateFailureIEs__value_PR present; + union S1AP_ENBConfigurationUpdateFailureIEs__S1AP_value_u { + S1AP_Cause_t Cause; + S1AP_TimeToWait_t TimeToWait; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBConfigurationUpdateFailureIEs_t; +typedef struct S1AP_MMEConfigurationUpdateIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MMEConfigurationUpdateIEs__value { + S1AP_MMEConfigurationUpdateIEs__value_PR present; + union S1AP_MMEConfigurationUpdateIEs__S1AP_value_u { + S1AP_MMEname_t MMEname; + S1AP_ServedGUMMEIs_t ServedGUMMEIs; + S1AP_RelativeMMECapacity_t RelativeMMECapacity; + S1AP_ServedDCNs_t ServedDCNs; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEConfigurationUpdateIEs_t; +typedef struct S1AP_MMEConfigurationUpdateAcknowledgeIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MMEConfigurationUpdateAcknowledgeIEs__value { + S1AP_MMEConfigurationUpdateAcknowledgeIEs__value_PR present; + union S1AP_MMEConfigurationUpdateAcknowledgeIEs__S1AP_value_u { + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEConfigurationUpdateAcknowledgeIEs_t; +typedef struct S1AP_MMEConfigurationUpdateFailureIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MMEConfigurationUpdateFailureIEs__value { + S1AP_MMEConfigurationUpdateFailureIEs__value_PR present; + union S1AP_MMEConfigurationUpdateFailureIEs__S1AP_value_u { + S1AP_Cause_t Cause; + S1AP_TimeToWait_t TimeToWait; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEConfigurationUpdateFailureIEs_t; +typedef struct S1AP_DownlinkS1cdma2000tunnellingIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_DownlinkS1cdma2000tunnellingIEs__value { + S1AP_DownlinkS1cdma2000tunnellingIEs__value_PR present; + union S1AP_DownlinkS1cdma2000tunnellingIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABSubjecttoDataForwardingList_t E_RABSubjecttoDataForwardingList; + S1AP_Cdma2000HOStatus_t Cdma2000HOStatus; + S1AP_Cdma2000RATType_t Cdma2000RATType; + S1AP_Cdma2000PDU_t Cdma2000PDU; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DownlinkS1cdma2000tunnellingIEs_t; +typedef struct S1AP_UplinkS1cdma2000tunnellingIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UplinkS1cdma2000tunnellingIEs__value { + S1AP_UplinkS1cdma2000tunnellingIEs__value_PR present; + union S1AP_UplinkS1cdma2000tunnellingIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cdma2000RATType_t Cdma2000RATType; + S1AP_Cdma2000SectorID_t Cdma2000SectorID; + S1AP_Cdma2000HORequiredIndication_t Cdma2000HORequiredIndication; + S1AP_Cdma2000OneXSRVCCInfo_t Cdma2000OneXSRVCCInfo; + S1AP_Cdma2000OneXRAND_t Cdma2000OneXRAND; + S1AP_Cdma2000PDU_t Cdma2000PDU; + S1AP_EUTRANRoundTripDelayEstimationInfo_t EUTRANRoundTripDelayEstimationInfo; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UplinkS1cdma2000tunnellingIEs_t; +typedef struct S1AP_UECapabilityInfoIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UECapabilityInfoIndicationIEs__value { + S1AP_UECapabilityInfoIndicationIEs__value_PR present; + union S1AP_UECapabilityInfoIndicationIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_UERadioCapability_t UERadioCapability; + S1AP_UERadioCapabilityForPaging_t UERadioCapabilityForPaging; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UECapabilityInfoIndicationIEs_t; +typedef struct S1AP_ENBStatusTransferIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ENBStatusTransferIEs__value { + S1AP_ENBStatusTransferIEs__value_PR present; + union S1AP_ENBStatusTransferIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_ENB_StatusTransfer_TransparentContainer_t ENB_StatusTransfer_TransparentContainer; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBStatusTransferIEs_t; +typedef struct S1AP_MMEStatusTransferIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MMEStatusTransferIEs__value { + S1AP_MMEStatusTransferIEs__value_PR present; + union S1AP_MMEStatusTransferIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_ENB_StatusTransfer_TransparentContainer_t ENB_StatusTransfer_TransparentContainer; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEStatusTransferIEs_t; +typedef struct S1AP_TraceStartIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TraceStartIEs__value { + S1AP_TraceStartIEs__value_PR present; + union S1AP_TraceStartIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_TraceActivation_t TraceActivation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TraceStartIEs_t; +typedef struct S1AP_TraceFailureIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_TraceFailureIndicationIEs__value { + S1AP_TraceFailureIndicationIEs__value_PR present; + union S1AP_TraceFailureIndicationIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_UTRAN_Trace_ID_t E_UTRAN_Trace_ID; + S1AP_Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TraceFailureIndicationIEs_t; +typedef struct S1AP_DeactivateTraceIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_DeactivateTraceIEs__value { + S1AP_DeactivateTraceIEs__value_PR present; + union S1AP_DeactivateTraceIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_UTRAN_Trace_ID_t E_UTRAN_Trace_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DeactivateTraceIEs_t; +typedef struct S1AP_CellTrafficTraceIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_CellTrafficTraceIEs__value { + S1AP_CellTrafficTraceIEs__value_PR present; + union S1AP_CellTrafficTraceIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_UTRAN_Trace_ID_t E_UTRAN_Trace_ID; + S1AP_EUTRAN_CGI_t EUTRAN_CGI; + S1AP_TransportLayerAddress_t TransportLayerAddress; + S1AP_PrivacyIndicator_t PrivacyIndicator; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_CellTrafficTraceIEs_t; +typedef struct S1AP_LocationReportingControlIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_LocationReportingControlIEs__value { + S1AP_LocationReportingControlIEs__value_PR present; + union S1AP_LocationReportingControlIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_RequestType_t RequestType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LocationReportingControlIEs_t; +typedef struct S1AP_LocationReportingFailureIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_LocationReportingFailureIndicationIEs__value { + S1AP_LocationReportingFailureIndicationIEs__value_PR present; + union S1AP_LocationReportingFailureIndicationIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LocationReportingFailureIndicationIEs_t; +typedef struct S1AP_LocationReportIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_LocationReportIEs__value { + S1AP_LocationReportIEs__value_PR present; + union S1AP_LocationReportIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_EUTRAN_CGI_t EUTRAN_CGI; + S1AP_TAI_t TAI; + S1AP_RequestType_t RequestType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_LocationReportIEs_t; +typedef struct S1AP_OverloadStartIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_OverloadStartIEs__value { + S1AP_OverloadStartIEs__value_PR present; + union S1AP_OverloadStartIEs__S1AP_value_u { + S1AP_OverloadResponse_t OverloadResponse; + S1AP_GUMMEIList_t GUMMEIList; + S1AP_TrafficLoadReductionIndication_t TrafficLoadReductionIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_OverloadStartIEs_t; +typedef struct S1AP_OverloadStopIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_OverloadStopIEs__value { + S1AP_OverloadStopIEs__value_PR present; + union S1AP_OverloadStopIEs__S1AP_value_u { + S1AP_GUMMEIList_t GUMMEIList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_OverloadStopIEs_t; +typedef struct S1AP_WriteReplaceWarningRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_WriteReplaceWarningRequestIEs__value { + S1AP_WriteReplaceWarningRequestIEs__value_PR present; + union S1AP_WriteReplaceWarningRequestIEs__S1AP_value_u { + S1AP_MessageIdentifier_t MessageIdentifier; + S1AP_SerialNumber_t SerialNumber; + S1AP_WarningAreaList_t WarningAreaList; + S1AP_RepetitionPeriod_t RepetitionPeriod; + S1AP_ExtendedRepetitionPeriod_t ExtendedRepetitionPeriod; + S1AP_NumberofBroadcastRequest_t NumberofBroadcastRequest; + S1AP_WarningType_t WarningType; + S1AP_WarningSecurityInfo_t WarningSecurityInfo; + S1AP_DataCodingScheme_t DataCodingScheme; + S1AP_WarningMessageContents_t WarningMessageContents; + S1AP_ConcurrentWarningMessageIndicator_t ConcurrentWarningMessageIndicator; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_WriteReplaceWarningRequestIEs_t; +typedef struct S1AP_WriteReplaceWarningResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_WriteReplaceWarningResponseIEs__value { + S1AP_WriteReplaceWarningResponseIEs__value_PR present; + union S1AP_WriteReplaceWarningResponseIEs__S1AP_value_u { + S1AP_MessageIdentifier_t MessageIdentifier; + S1AP_SerialNumber_t SerialNumber; + S1AP_BroadcastCompletedAreaList_t BroadcastCompletedAreaList; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_WriteReplaceWarningResponseIEs_t; +typedef struct S1AP_ENBDirectInformationTransferIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ENBDirectInformationTransferIEs__value { + S1AP_ENBDirectInformationTransferIEs__value_PR present; + union S1AP_ENBDirectInformationTransferIEs__S1AP_value_u { + S1AP_Inter_SystemInformationTransferType_t Inter_SystemInformationTransferType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBDirectInformationTransferIEs_t; +typedef struct S1AP_MMEDirectInformationTransferIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MMEDirectInformationTransferIEs__value { + S1AP_MMEDirectInformationTransferIEs__value_PR present; + union S1AP_MMEDirectInformationTransferIEs__S1AP_value_u { + S1AP_Inter_SystemInformationTransferType_t Inter_SystemInformationTransferType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEDirectInformationTransferIEs_t; +typedef struct S1AP_ENBConfigurationTransferIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ENBConfigurationTransferIEs__value { + S1AP_ENBConfigurationTransferIEs__value_PR present; + union S1AP_ENBConfigurationTransferIEs__S1AP_value_u { + S1AP_SONConfigurationTransfer_t SONConfigurationTransfer; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBConfigurationTransferIEs_t; +typedef struct S1AP_MMEConfigurationTransferIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MMEConfigurationTransferIEs__value { + S1AP_MMEConfigurationTransferIEs__value_PR present; + union S1AP_MMEConfigurationTransferIEs__S1AP_value_u { + S1AP_SONConfigurationTransfer_t SONConfigurationTransfer; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMEConfigurationTransferIEs_t; +typedef struct S1AP_KillRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_KillRequestIEs__value { + S1AP_KillRequestIEs__value_PR present; + union S1AP_KillRequestIEs__S1AP_value_u { + S1AP_MessageIdentifier_t MessageIdentifier; + S1AP_SerialNumber_t SerialNumber; + S1AP_WarningAreaList_t WarningAreaList; + S1AP_KillAllWarningMessages_t KillAllWarningMessages; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_KillRequestIEs_t; +typedef struct S1AP_KillResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_KillResponseIEs__value { + S1AP_KillResponseIEs__value_PR present; + union S1AP_KillResponseIEs__S1AP_value_u { + S1AP_MessageIdentifier_t MessageIdentifier; + S1AP_SerialNumber_t SerialNumber; + S1AP_BroadcastCancelledAreaList_t BroadcastCancelledAreaList; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_KillResponseIEs_t; +typedef struct S1AP_PWSRestartIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_PWSRestartIndicationIEs__value { + S1AP_PWSRestartIndicationIEs__value_PR present; + union S1AP_PWSRestartIndicationIEs__S1AP_value_u { + S1AP_ECGIListForRestart_t ECGIListForRestart; + S1AP_Global_ENB_ID_t Global_ENB_ID; + S1AP_TAIListForRestart_t TAIListForRestart; + S1AP_EmergencyAreaIDListForRestart_t EmergencyAreaIDListForRestart; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PWSRestartIndicationIEs_t; +typedef struct S1AP_PWSFailureIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_PWSFailureIndicationIEs__value { + S1AP_PWSFailureIndicationIEs__value_PR present; + union S1AP_PWSFailureIndicationIEs__S1AP_value_u { + S1AP_PWSfailedECGIList_t PWSfailedECGIList; + S1AP_Global_ENB_ID_t Global_ENB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_PWSFailureIndicationIEs_t; +typedef struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value { + S1AP_DownlinkUEAssociatedLPPaTransport_IEs__value_PR present; + union S1AP_DownlinkUEAssociatedLPPaTransport_IEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Routing_ID_t Routing_ID; + S1AP_LPPa_PDU_t LPPa_PDU; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DownlinkUEAssociatedLPPaTransport_IEs_t; +typedef struct S1AP_UplinkUEAssociatedLPPaTransport_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UplinkUEAssociatedLPPaTransport_IEs__value { + S1AP_UplinkUEAssociatedLPPaTransport_IEs__value_PR present; + union S1AP_UplinkUEAssociatedLPPaTransport_IEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Routing_ID_t Routing_ID; + S1AP_LPPa_PDU_t LPPa_PDU; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UplinkUEAssociatedLPPaTransport_IEs_t; +typedef struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value { + S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR present; + union S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs__S1AP_value_u { + S1AP_Routing_ID_t Routing_ID; + S1AP_LPPa_PDU_t LPPa_PDU; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_t; +typedef struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value { + S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__value_PR present; + union S1AP_UplinkNonUEAssociatedLPPaTransport_IEs__S1AP_value_u { + S1AP_Routing_ID_t Routing_ID; + S1AP_LPPa_PDU_t LPPa_PDU; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_t; +typedef struct S1AP_E_RABModificationIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABModificationIndicationIEs__value { + S1AP_E_RABModificationIndicationIEs__value_PR present; + union S1AP_E_RABModificationIndicationIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABToBeModifiedListBearerModInd_t E_RABToBeModifiedListBearerModInd; + S1AP_E_RABNotToBeModifiedListBearerModInd_t E_RABNotToBeModifiedListBearerModInd; + S1AP_CSGMembershipInfo_t CSGMembershipInfo; + S1AP_TunnelInformation_t TunnelInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModificationIndicationIEs_t; +typedef struct S1AP_E_RABModificationConfirmIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABModificationConfirmIEs__value { + S1AP_E_RABModificationConfirmIEs__value_PR present; + union S1AP_E_RABModificationConfirmIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABModifyListBearerModConf_t E_RABModifyListBearerModConf; + S1AP_E_RABList_t E_RABList; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + S1AP_CSGMembershipStatus_t CSGMembershipStatus; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABModificationConfirmIEs_t; +typedef struct S1AP_UEContextModificationIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextModificationIndicationIEs__value { + S1AP_UEContextModificationIndicationIEs__value_PR present; + union S1AP_UEContextModificationIndicationIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_CSGMembershipInfo_t CSGMembershipInfo; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationIndicationIEs_t; +typedef struct S1AP_UEContextModificationConfirmIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextModificationConfirmIEs__value { + S1AP_UEContextModificationConfirmIEs__value_PR present; + union S1AP_UEContextModificationConfirmIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_CSGMembershipStatus_t CSGMembershipStatus; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationConfirmIEs_t; +typedef struct S1AP_UEContextSuspendRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextSuspendRequestIEs__value { + S1AP_UEContextSuspendRequestIEs__value_PR present; + union S1AP_UEContextSuspendRequestIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_InformationOnRecommendedCellsAndENBsForPaging_t InformationOnRecommendedCellsAndENBsForPaging; + S1AP_CellIdentifierAndCELevelForCECapableUEs_t CellIdentifierAndCELevelForCECapableUEs; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextSuspendRequestIEs_t; +typedef struct S1AP_UEContextSuspendResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextSuspendResponseIEs__value { + S1AP_UEContextSuspendResponseIEs__value_PR present; + union S1AP_UEContextSuspendResponseIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + S1AP_SecurityContext_t SecurityContext; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextSuspendResponseIEs_t; +typedef struct S1AP_UEContextResumeRequestIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextResumeRequestIEs__value { + S1AP_UEContextResumeRequestIEs__value_PR present; + union S1AP_UEContextResumeRequestIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABFailedToResumeListResumeReq_t E_RABFailedToResumeListResumeReq; + S1AP_RRC_Establishment_Cause_t RRC_Establishment_Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextResumeRequestIEs_t; +typedef struct S1AP_UEContextResumeResponseIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextResumeResponseIEs__value { + S1AP_UEContextResumeResponseIEs__value_PR present; + union S1AP_UEContextResumeResponseIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_E_RABFailedToResumeListResumeRes_t E_RABFailedToResumeListResumeRes; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + S1AP_SecurityContext_t SecurityContext; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextResumeResponseIEs_t; +typedef struct S1AP_UEContextResumeFailureIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEContextResumeFailureIEs__value { + S1AP_UEContextResumeFailureIEs__value_PR present; + union S1AP_UEContextResumeFailureIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_Cause_t Cause; + S1AP_CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextResumeFailureIEs_t; +typedef struct S1AP_ConnectionEstablishmentIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ConnectionEstablishmentIndicationIEs__value { + S1AP_ConnectionEstablishmentIndicationIEs__value_PR present; + union S1AP_ConnectionEstablishmentIndicationIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_UERadioCapability_t UERadioCapability; + S1AP_EnhancedCoverageRestricted_t EnhancedCoverageRestricted; + S1AP_DL_CP_SecurityInformation_t DL_CP_SecurityInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ConnectionEstablishmentIndicationIEs_t; +typedef struct S1AP_RetrieveUEInformationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_RetrieveUEInformationIEs__value { + S1AP_RetrieveUEInformationIEs__value_PR present; + union S1AP_RetrieveUEInformationIEs__S1AP_value_u { + S1AP_S_TMSI_t S_TMSI; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RetrieveUEInformationIEs_t; +typedef struct S1AP_UEInformationTransferIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_UEInformationTransferIEs__value { + S1AP_UEInformationTransferIEs__value_PR present; + union S1AP_UEInformationTransferIEs__S1AP_value_u { + S1AP_S_TMSI_t S_TMSI; + S1AP_E_RABLevelQoSParameters_t E_RABLevelQoSParameters; + S1AP_UERadioCapability_t UERadioCapability; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEInformationTransferIEs_t; +typedef struct S1AP_ENBCPRelocationIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_ENBCPRelocationIndicationIEs__value { + S1AP_ENBCPRelocationIndicationIEs__value_PR present; + union S1AP_ENBCPRelocationIndicationIEs__S1AP_value_u { + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + S1AP_S_TMSI_t S_TMSI; + S1AP_EUTRAN_CGI_t EUTRAN_CGI; + S1AP_TAI_t TAI; + S1AP_UL_CP_SecurityInformation_t UL_CP_SecurityInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ENBCPRelocationIndicationIEs_t; +typedef struct S1AP_MMECPRelocationIndicationIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_MMECPRelocationIndicationIEs__value { + S1AP_MMECPRelocationIndicationIEs__value_PR present; + union S1AP_MMECPRelocationIndicationIEs__S1AP_value_u { + S1AP_MME_UE_S1AP_ID_t MME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t ENB_UE_S1AP_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_MMECPRelocationIndicationIEs_t; +typedef struct S1AP_E_RABDataForwardingItemIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABDataForwardingItemIEs__value { + S1AP_E_RABDataForwardingItemIEs__value_PR present; + union S1AP_E_RABDataForwardingItemIEs__S1AP_value_u { + S1AP_E_RABDataForwardingItem_t E_RABDataForwardingItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABDataForwardingItemIEs_t; +typedef struct S1AP_E_RABToBeSetupItemHOReqIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSetupItemHOReqIEs__value { + S1AP_E_RABToBeSetupItemHOReqIEs__value_PR present; + union S1AP_E_RABToBeSetupItemHOReqIEs__S1AP_value_u { + S1AP_E_RABToBeSetupItemHOReq_t E_RABToBeSetupItemHOReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSetupItemHOReqIEs_t; +typedef struct S1AP_E_RABAdmittedItemIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABAdmittedItemIEs__value { + S1AP_E_RABAdmittedItemIEs__value_PR present; + union S1AP_E_RABAdmittedItemIEs__S1AP_value_u { + S1AP_E_RABAdmittedItem_t E_RABAdmittedItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABAdmittedItemIEs_t; +typedef struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABFailedtoSetupItemHOReqAckIEs__value { + S1AP_E_RABFailedtoSetupItemHOReqAckIEs__value_PR present; + union S1AP_E_RABFailedtoSetupItemHOReqAckIEs__S1AP_value_u { + S1AP_E_RABFailedToSetupItemHOReqAck_t E_RABFailedToSetupItemHOReqAck; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABFailedtoSetupItemHOReqAckIEs_t; +typedef struct S1AP_E_RABToBeSwitchedDLItemIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSwitchedDLItemIEs__value { + S1AP_E_RABToBeSwitchedDLItemIEs__value_PR present; + union S1AP_E_RABToBeSwitchedDLItemIEs__S1AP_value_u { + S1AP_E_RABToBeSwitchedDLItem_t E_RABToBeSwitchedDLItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSwitchedDLItemIEs_t; +typedef struct S1AP_E_RABToBeSwitchedULItemIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeSwitchedULItemIEs__value { + S1AP_E_RABToBeSwitchedULItemIEs__value_PR present; + union S1AP_E_RABToBeSwitchedULItemIEs__S1AP_value_u { + S1AP_E_RABToBeSwitchedULItem_t E_RABToBeSwitchedULItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeSwitchedULItemIEs_t; +typedef struct S1AP_E_RABToBeModifiedItemBearerModIndIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABToBeModifiedItemBearerModIndIEs__value { + S1AP_E_RABToBeModifiedItemBearerModIndIEs__value_PR present; + union S1AP_E_RABToBeModifiedItemBearerModIndIEs__S1AP_value_u { + S1AP_E_RABToBeModifiedItemBearerModInd_t E_RABToBeModifiedItemBearerModInd; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABToBeModifiedItemBearerModIndIEs_t; +typedef struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value { + S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__value_PR present; + union S1AP_E_RABNotToBeModifiedItemBearerModIndIEs__S1AP_value_u { + S1AP_E_RABNotToBeModifiedItemBearerModInd_t E_RABNotToBeModifiedItemBearerModInd; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_t; +typedef struct S1AP_E_RABFailedToResumeItemResumeReqIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABFailedToResumeItemResumeReqIEs__value { + S1AP_E_RABFailedToResumeItemResumeReqIEs__value_PR present; + union S1AP_E_RABFailedToResumeItemResumeReqIEs__S1AP_value_u { + S1AP_E_RABFailedToResumeItemResumeReq_t E_RABFailedToResumeItemResumeReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABFailedToResumeItemResumeReqIEs_t; +typedef struct S1AP_E_RABFailedToResumeItemResumeResIEs { + S1AP_ProtocolIE_ID_t id; + S1AP_Criticality_t criticality; + struct S1AP_E_RABFailedToResumeItemResumeResIEs__value { + S1AP_E_RABFailedToResumeItemResumeResIEs__value_PR present; + union S1AP_E_RABFailedToResumeItemResumeResIEs__S1AP_value_u { + S1AP_E_RABFailedToResumeItemResumeRes_t E_RABFailedToResumeItemResumeRes; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_E_RABFailedToResumeItemResumeResIEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemBearerSUReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemBearerSUReqIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemBearerSUReqIEs_1[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemBearerSUResIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemBearerSUResIEs_specs_5; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemBearerSUResIEs_5[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifiedItemBearerModReqIEs_specs_9; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifiedItemBearerModReqIEs_9[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModResIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModResIEs_specs_13; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModResIEs_13[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseItemBearerRelCompIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseItemBearerRelCompIEs_specs_17; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseItemBearerRelCompIEs_17[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemCtxtSUReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_specs_21; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_21[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupItemCtxtSUResIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupItemCtxtSUResIEs_specs_25; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupItemCtxtSUResIEs_25[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAIItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAIItemIEs_specs_29; +extern asn_TYPE_member_t asn_MBR_S1AP_TAIItemIEs_29[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemRes; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemRes_specs_33; +extern asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemRes_33[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItemResAck; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_specs_37; +extern asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_37[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyItemBearerModConfIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyItemBearerModConfIEs_specs_41; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyItemBearerModConfIEs_41[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_specs_45; +extern asn_TYPE_member_t asn_MBR_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_45[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABInformationListIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABInformationListIEs_specs_49; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABInformationListIEs_49[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABItemIEs_specs_53; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABItemIEs_53[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MDTMode_ExtensionIE; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MDTMode_ExtensionIE_specs_57; +extern asn_TYPE_member_t asn_MBR_S1AP_MDTMode_ExtensionIE_57[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedCellItemIEs_specs_61; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellItemIEs_61[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedENBItemIEs_specs_65; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBItemIEs_65[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformation_ExtensionIE; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SONInformation_ExtensionIE_specs_69; +extern asn_TYPE_member_t asn_MBR_S1AP_SONInformation_ExtensionIE_69[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequiredIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequiredIEs_specs_73; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverRequiredIEs_73[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCommandIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCommandIEs_specs_77; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverCommandIEs_77[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverPreparationFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverPreparationFailureIEs_specs_81; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverPreparationFailureIEs_81[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequestIEs_specs_85; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverRequestIEs_85[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverRequestAcknowledgeIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverRequestAcknowledgeIEs_specs_89; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverRequestAcknowledgeIEs_89[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverFailureIEs_specs_93; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverFailureIEs_93[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverNotifyIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverNotifyIEs_specs_97; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverNotifyIEs_97[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestIEs_specs_101; +extern asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestIEs_101[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestAcknowledgeIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestAcknowledgeIEs_specs_105; +extern asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestAcknowledgeIEs_105[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PathSwitchRequestFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PathSwitchRequestFailureIEs_specs_109; +extern asn_TYPE_member_t asn_MBR_S1AP_PathSwitchRequestFailureIEs_109[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCancelIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCancelIEs_specs_113; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverCancelIEs_113[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_HandoverCancelAcknowledgeIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_HandoverCancelAcknowledgeIEs_specs_117; +extern asn_TYPE_member_t asn_MBR_S1AP_HandoverCancelAcknowledgeIEs_117[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupRequestIEs_specs_121; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupRequestIEs_121[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABSetupResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABSetupResponseIEs_specs_125; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABSetupResponseIEs_125[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyRequestIEs_specs_129; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyRequestIEs_129[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModifyResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModifyResponseIEs_specs_133; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModifyResponseIEs_133[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseCommandIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseCommandIEs_specs_137; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseCommandIEs_137[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseResponseIEs_specs_141; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseResponseIEs_141[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABReleaseIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABReleaseIndicationIEs_specs_145; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABReleaseIndicationIEs_145[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupRequestIEs_specs_149; +extern asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupRequestIEs_149[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupResponseIEs_specs_153; +extern asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupResponseIEs_153[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InitialContextSetupFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialContextSetupFailureIEs_specs_157; +extern asn_TYPE_member_t asn_MBR_S1AP_InitialContextSetupFailureIEs_157[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PagingIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PagingIEs_specs_161; +extern asn_TYPE_member_t asn_MBR_S1AP_PagingIEs_161[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseRequest_IEs_specs_165; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseRequest_IEs_165[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseCommand_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseCommand_IEs_specs_169; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseCommand_IEs_169[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseComplete_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseComplete_IEs_specs_173; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseComplete_IEs_173[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationRequestIEs_specs_177; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationRequestIEs_177[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationResponseIEs_specs_181; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationResponseIEs_181[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationFailureIEs_specs_185; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationFailureIEs_185[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityMatchRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UERadioCapabilityMatchRequestIEs_specs_189; +extern asn_TYPE_member_t asn_MBR_S1AP_UERadioCapabilityMatchRequestIEs_189[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityMatchResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UERadioCapabilityMatchResponseIEs_specs_193; +extern asn_TYPE_member_t asn_MBR_S1AP_UERadioCapabilityMatchResponseIEs_193[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkNASTransport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkNASTransport_IEs_specs_197; +extern asn_TYPE_member_t asn_MBR_S1AP_DownlinkNASTransport_IEs_197[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_InitialUEMessage_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_InitialUEMessage_IEs_specs_201; +extern asn_TYPE_member_t asn_MBR_S1AP_InitialUEMessage_IEs_201[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkNASTransport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkNASTransport_IEs_specs_205; +extern asn_TYPE_member_t asn_MBR_S1AP_UplinkNASTransport_IEs_205[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NASNonDeliveryIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_NASNonDeliveryIndication_IEs_specs_209; +extern asn_TYPE_member_t asn_MBR_S1AP_NASNonDeliveryIndication_IEs_209[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RerouteNASRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RerouteNASRequest_IEs_specs_213; +extern asn_TYPE_member_t asn_MBR_S1AP_RerouteNASRequest_IEs_213[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_NASDeliveryIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_NASDeliveryIndicationIEs_specs_217; +extern asn_TYPE_member_t asn_MBR_S1AP_NASDeliveryIndicationIEs_217[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ResetIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ResetIEs_specs_221; +extern asn_TYPE_member_t asn_MBR_S1AP_ResetIEs_221[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ResetAcknowledgeIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ResetAcknowledgeIEs_specs_225; +extern asn_TYPE_member_t asn_MBR_S1AP_ResetAcknowledgeIEs_225[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ErrorIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ErrorIndicationIEs_specs_229; +extern asn_TYPE_member_t asn_MBR_S1AP_ErrorIndicationIEs_229[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupRequestIEs_specs_233; +extern asn_TYPE_member_t asn_MBR_S1AP_S1SetupRequestIEs_233[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupResponseIEs_specs_237; +extern asn_TYPE_member_t asn_MBR_S1AP_S1SetupResponseIEs_237[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupFailureIEs_specs_241; +extern asn_TYPE_member_t asn_MBR_S1AP_S1SetupFailureIEs_241[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateIEs_specs_245; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateIEs_245[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateAcknowledgeIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateAcknowledgeIEs_specs_249; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateAcknowledgeIEs_249[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationUpdateFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationUpdateFailureIEs_specs_253; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationUpdateFailureIEs_253[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateIEs_specs_257; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateIEs_257[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateAcknowledgeIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateAcknowledgeIEs_specs_261; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateAcknowledgeIEs_261[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationUpdateFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationUpdateFailureIEs_specs_265; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationUpdateFailureIEs_265[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkS1cdma2000tunnellingIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkS1cdma2000tunnellingIEs_specs_269; +extern asn_TYPE_member_t asn_MBR_S1AP_DownlinkS1cdma2000tunnellingIEs_269[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkS1cdma2000tunnellingIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkS1cdma2000tunnellingIEs_specs_273; +extern asn_TYPE_member_t asn_MBR_S1AP_UplinkS1cdma2000tunnellingIEs_273[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UECapabilityInfoIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UECapabilityInfoIndicationIEs_specs_277; +extern asn_TYPE_member_t asn_MBR_S1AP_UECapabilityInfoIndicationIEs_277[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBStatusTransferIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBStatusTransferIEs_specs_281; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBStatusTransferIEs_281[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEStatusTransferIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEStatusTransferIEs_specs_285; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEStatusTransferIEs_285[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TraceStartIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceStartIEs_specs_289; +extern asn_TYPE_member_t asn_MBR_S1AP_TraceStartIEs_289[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TraceFailureIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceFailureIndicationIEs_specs_293; +extern asn_TYPE_member_t asn_MBR_S1AP_TraceFailureIndicationIEs_293[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DeactivateTraceIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DeactivateTraceIEs_specs_297; +extern asn_TYPE_member_t asn_MBR_S1AP_DeactivateTraceIEs_297[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_CellTrafficTraceIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_CellTrafficTraceIEs_specs_301; +extern asn_TYPE_member_t asn_MBR_S1AP_CellTrafficTraceIEs_301[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportingControlIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportingControlIEs_specs_305; +extern asn_TYPE_member_t asn_MBR_S1AP_LocationReportingControlIEs_305[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportingFailureIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportingFailureIndicationIEs_specs_309; +extern asn_TYPE_member_t asn_MBR_S1AP_LocationReportingFailureIndicationIEs_309[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_LocationReportIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_LocationReportIEs_specs_313; +extern asn_TYPE_member_t asn_MBR_S1AP_LocationReportIEs_313[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadStartIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_OverloadStartIEs_specs_317; +extern asn_TYPE_member_t asn_MBR_S1AP_OverloadStartIEs_317[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_OverloadStopIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_OverloadStopIEs_specs_321; +extern asn_TYPE_member_t asn_MBR_S1AP_OverloadStopIEs_321[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_WriteReplaceWarningRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_WriteReplaceWarningRequestIEs_specs_325; +extern asn_TYPE_member_t asn_MBR_S1AP_WriteReplaceWarningRequestIEs_325[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_WriteReplaceWarningResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_WriteReplaceWarningResponseIEs_specs_329; +extern asn_TYPE_member_t asn_MBR_S1AP_WriteReplaceWarningResponseIEs_329[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBDirectInformationTransferIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBDirectInformationTransferIEs_specs_333; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBDirectInformationTransferIEs_333[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEDirectInformationTransferIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEDirectInformationTransferIEs_specs_337; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEDirectInformationTransferIEs_337[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBConfigurationTransferIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBConfigurationTransferIEs_specs_341; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBConfigurationTransferIEs_341[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMEConfigurationTransferIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMEConfigurationTransferIEs_specs_345; +extern asn_TYPE_member_t asn_MBR_S1AP_MMEConfigurationTransferIEs_345[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_KillRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_KillRequestIEs_specs_349; +extern asn_TYPE_member_t asn_MBR_S1AP_KillRequestIEs_349[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_KillResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_KillResponseIEs_specs_353; +extern asn_TYPE_member_t asn_MBR_S1AP_KillResponseIEs_353[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PWSRestartIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PWSRestartIndicationIEs_specs_357; +extern asn_TYPE_member_t asn_MBR_S1AP_PWSRestartIndicationIEs_357[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_PWSFailureIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_PWSFailureIndicationIEs_specs_361; +extern asn_TYPE_member_t asn_MBR_S1AP_PWSFailureIndicationIEs_361[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_specs_365; +extern asn_TYPE_member_t asn_MBR_S1AP_DownlinkUEAssociatedLPPaTransport_IEs_365[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkUEAssociatedLPPaTransport_IEs_specs_369; +extern asn_TYPE_member_t asn_MBR_S1AP_UplinkUEAssociatedLPPaTransport_IEs_369[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_specs_373; +extern asn_TYPE_member_t asn_MBR_S1AP_DownlinkNonUEAssociatedLPPaTransport_IEs_373[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_specs_377; +extern asn_TYPE_member_t asn_MBR_S1AP_UplinkNonUEAssociatedLPPaTransport_IEs_377[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModificationIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModificationIndicationIEs_specs_381; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModificationIndicationIEs_381[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABModificationConfirmIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABModificationConfirmIEs_specs_385; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABModificationConfirmIEs_385[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationIndicationIEs_specs_389; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationIndicationIEs_389[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationConfirmIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationConfirmIEs_specs_393; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationConfirmIEs_393[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextSuspendRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextSuspendRequestIEs_specs_397; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextSuspendRequestIEs_397[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextSuspendResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextSuspendResponseIEs_specs_401; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextSuspendResponseIEs_401[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeRequestIEs_specs_405; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeRequestIEs_405[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeResponseIEs_specs_409; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeResponseIEs_409[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeFailureIEs_specs_413; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeFailureIEs_413[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ConnectionEstablishmentIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ConnectionEstablishmentIndicationIEs_specs_417; +extern asn_TYPE_member_t asn_MBR_S1AP_ConnectionEstablishmentIndicationIEs_417[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RetrieveUEInformationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RetrieveUEInformationIEs_specs_421; +extern asn_TYPE_member_t asn_MBR_S1AP_RetrieveUEInformationIEs_421[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEInformationTransferIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEInformationTransferIEs_specs_425; +extern asn_TYPE_member_t asn_MBR_S1AP_UEInformationTransferIEs_425[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ENBCPRelocationIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ENBCPRelocationIndicationIEs_specs_429; +extern asn_TYPE_member_t asn_MBR_S1AP_ENBCPRelocationIndicationIEs_429[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_MMECPRelocationIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_MMECPRelocationIndicationIEs_specs_433; +extern asn_TYPE_member_t asn_MBR_S1AP_MMECPRelocationIndicationIEs_433[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABDataForwardingItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABDataForwardingItemIEs_specs_437; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABDataForwardingItemIEs_437[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSetupItemHOReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSetupItemHOReqIEs_specs_441; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSetupItemHOReqIEs_441[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABAdmittedItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABAdmittedItemIEs_specs_445; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABAdmittedItemIEs_445[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedtoSetupItemHOReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_specs_449; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_449[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedDLItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedDLItemIEs_specs_453; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedDLItemIEs_453[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeSwitchedULItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeSwitchedULItemIEs_specs_457; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeSwitchedULItemIEs_457[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABToBeModifiedItemBearerModIndIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABToBeModifiedItemBearerModIndIEs_specs_461; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABToBeModifiedItemBearerModIndIEs_461[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_specs_465; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_465[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeReqIEs_specs_469; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeReqIEs_469[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_E_RABFailedToResumeItemResumeResIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_E_RABFailedToResumeItemResumeResIEs_specs_473; +extern asn_TYPE_member_t asn_MBR_S1AP_E_RABFailedToResumeItemResumeResIEs_473[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolIE_Field_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-FieldPair.h b/lib/s1ap3/asn1c/S1AP_ProtocolIE-FieldPair.h new file mode 100644 index 0000000000..0b4967c95f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-FieldPair.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolIE_FieldPair_H_ +#define _S1AP_ProtocolIE_FieldPair_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolIE_FieldPair_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.c b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.c new file mode 100644 index 0000000000..2e048000aa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProtocolIE-ID.h" + +int +S1AP_ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ProtocolIE_ID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..65535) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ID = { + "ProtocolIE-ID", + "ProtocolIE-ID", + &asn_OP_NativeInteger, + asn_DEF_S1AP_ProtocolIE_ID_tags_1, + sizeof(asn_DEF_S1AP_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolIE_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolIE_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ProtocolIE_ID_constr_1, &asn_PER_type_S1AP_ProtocolIE_ID_constr_1, S1AP_ProtocolIE_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.h b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.h new file mode 100644 index 0000000000..de5917ff1a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-ID.h @@ -0,0 +1,283 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolIE_ID_H_ +#define _S1AP_ProtocolIE_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ProtocolIE-ID */ +typedef long S1AP_ProtocolIE_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ProtocolIE_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_ID; +asn_struct_free_f S1AP_ProtocolIE_ID_free; +asn_struct_print_f S1AP_ProtocolIE_ID_print; +asn_constr_check_f S1AP_ProtocolIE_ID_constraint; +ber_type_decoder_f S1AP_ProtocolIE_ID_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_ID_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_ID_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_ID_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_ID_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_ID_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_ID_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_ID_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_ID_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_ID_encode_aper; +#define S1AP_ProtocolIE_ID_S1AP_id_MME_UE_S1AP_ID ((S1AP_ProtocolIE_ID_t)0) +#define S1AP_ProtocolIE_ID_S1AP_id_HandoverType ((S1AP_ProtocolIE_ID_t)1) +#define S1AP_ProtocolIE_ID_S1AP_id_Cause ((S1AP_ProtocolIE_ID_t)2) +#define S1AP_ProtocolIE_ID_S1AP_id_SourceID ((S1AP_ProtocolIE_ID_t)3) +#define S1AP_ProtocolIE_ID_S1AP_id_TargetID ((S1AP_ProtocolIE_ID_t)4) +#define S1AP_ProtocolIE_ID_S1AP_id_eNB_UE_S1AP_ID ((S1AP_ProtocolIE_ID_t)8) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABSubjecttoDataForwardingList ((S1AP_ProtocolIE_ID_t)12) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABtoReleaseListHOCmd ((S1AP_ProtocolIE_ID_t)13) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABDataForwardingItem ((S1AP_ProtocolIE_ID_t)14) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABReleaseItemBearerRelComp ((S1AP_ProtocolIE_ID_t)15) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSetupListBearerSUReq ((S1AP_ProtocolIE_ID_t)16) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSetupItemBearerSUReq ((S1AP_ProtocolIE_ID_t)17) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABAdmittedList ((S1AP_ProtocolIE_ID_t)18) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToSetupListHOReqAck ((S1AP_ProtocolIE_ID_t)19) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABAdmittedItem ((S1AP_ProtocolIE_ID_t)20) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedtoSetupItemHOReqAck ((S1AP_ProtocolIE_ID_t)21) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSwitchedDLList ((S1AP_ProtocolIE_ID_t)22) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSwitchedDLItem ((S1AP_ProtocolIE_ID_t)23) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSetupListCtxtSUReq ((S1AP_ProtocolIE_ID_t)24) +#define S1AP_ProtocolIE_ID_S1AP_id_TraceActivation ((S1AP_ProtocolIE_ID_t)25) +#define S1AP_ProtocolIE_ID_S1AP_id_NAS_PDU ((S1AP_ProtocolIE_ID_t)26) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSetupItemHOReq ((S1AP_ProtocolIE_ID_t)27) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABSetupListBearerSURes ((S1AP_ProtocolIE_ID_t)28) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToSetupListBearerSURes ((S1AP_ProtocolIE_ID_t)29) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeModifiedListBearerModReq ((S1AP_ProtocolIE_ID_t)30) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABModifyListBearerModRes ((S1AP_ProtocolIE_ID_t)31) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToModifyList ((S1AP_ProtocolIE_ID_t)32) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeReleasedList ((S1AP_ProtocolIE_ID_t)33) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToReleaseList ((S1AP_ProtocolIE_ID_t)34) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABItem ((S1AP_ProtocolIE_ID_t)35) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeModifiedItemBearerModReq ((S1AP_ProtocolIE_ID_t)36) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABModifyItemBearerModRes ((S1AP_ProtocolIE_ID_t)37) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABReleaseItem ((S1AP_ProtocolIE_ID_t)38) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABSetupItemBearerSURes ((S1AP_ProtocolIE_ID_t)39) +#define S1AP_ProtocolIE_ID_S1AP_id_SecurityContext ((S1AP_ProtocolIE_ID_t)40) +#define S1AP_ProtocolIE_ID_S1AP_id_HandoverRestrictionList ((S1AP_ProtocolIE_ID_t)41) +#define S1AP_ProtocolIE_ID_S1AP_id_UEPagingID ((S1AP_ProtocolIE_ID_t)43) +#define S1AP_ProtocolIE_ID_S1AP_id_pagingDRX ((S1AP_ProtocolIE_ID_t)44) +#define S1AP_ProtocolIE_ID_S1AP_id_TAIList ((S1AP_ProtocolIE_ID_t)46) +#define S1AP_ProtocolIE_ID_S1AP_id_TAIItem ((S1AP_ProtocolIE_ID_t)47) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToSetupListCtxtSURes ((S1AP_ProtocolIE_ID_t)48) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABReleaseItemHOCmd ((S1AP_ProtocolIE_ID_t)49) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABSetupItemCtxtSURes ((S1AP_ProtocolIE_ID_t)50) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABSetupListCtxtSURes ((S1AP_ProtocolIE_ID_t)51) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSetupItemCtxtSUReq ((S1AP_ProtocolIE_ID_t)52) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSetupListHOReq ((S1AP_ProtocolIE_ID_t)53) +#define S1AP_ProtocolIE_ID_S1AP_id_GERANtoLTEHOInformationRes ((S1AP_ProtocolIE_ID_t)55) +#define S1AP_ProtocolIE_ID_S1AP_id_UTRANtoLTEHOInformationRes ((S1AP_ProtocolIE_ID_t)57) +#define S1AP_ProtocolIE_ID_S1AP_id_CriticalityDiagnostics ((S1AP_ProtocolIE_ID_t)58) +#define S1AP_ProtocolIE_ID_S1AP_id_Global_ENB_ID ((S1AP_ProtocolIE_ID_t)59) +#define S1AP_ProtocolIE_ID_S1AP_id_eNBname ((S1AP_ProtocolIE_ID_t)60) +#define S1AP_ProtocolIE_ID_S1AP_id_MMEname ((S1AP_ProtocolIE_ID_t)61) +#define S1AP_ProtocolIE_ID_S1AP_id_ServedPLMNs ((S1AP_ProtocolIE_ID_t)63) +#define S1AP_ProtocolIE_ID_S1AP_id_SupportedTAs ((S1AP_ProtocolIE_ID_t)64) +#define S1AP_ProtocolIE_ID_S1AP_id_TimeToWait ((S1AP_ProtocolIE_ID_t)65) +#define S1AP_ProtocolIE_ID_S1AP_id_uEaggregateMaximumBitrate ((S1AP_ProtocolIE_ID_t)66) +#define S1AP_ProtocolIE_ID_S1AP_id_TAI ((S1AP_ProtocolIE_ID_t)67) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABReleaseListBearerRelComp ((S1AP_ProtocolIE_ID_t)69) +#define S1AP_ProtocolIE_ID_S1AP_id_cdma2000PDU ((S1AP_ProtocolIE_ID_t)70) +#define S1AP_ProtocolIE_ID_S1AP_id_cdma2000RATType ((S1AP_ProtocolIE_ID_t)71) +#define S1AP_ProtocolIE_ID_S1AP_id_cdma2000SectorID ((S1AP_ProtocolIE_ID_t)72) +#define S1AP_ProtocolIE_ID_S1AP_id_SecurityKey ((S1AP_ProtocolIE_ID_t)73) +#define S1AP_ProtocolIE_ID_S1AP_id_UERadioCapability ((S1AP_ProtocolIE_ID_t)74) +#define S1AP_ProtocolIE_ID_S1AP_id_GUMMEI_ID ((S1AP_ProtocolIE_ID_t)75) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABInformationListItem ((S1AP_ProtocolIE_ID_t)78) +#define S1AP_ProtocolIE_ID_S1AP_id_Direct_Forwarding_Path_Availability ((S1AP_ProtocolIE_ID_t)79) +#define S1AP_ProtocolIE_ID_S1AP_id_UEIdentityIndexValue ((S1AP_ProtocolIE_ID_t)80) +#define S1AP_ProtocolIE_ID_S1AP_id_cdma2000HOStatus ((S1AP_ProtocolIE_ID_t)83) +#define S1AP_ProtocolIE_ID_S1AP_id_cdma2000HORequiredIndication ((S1AP_ProtocolIE_ID_t)84) +#define S1AP_ProtocolIE_ID_S1AP_id_E_UTRAN_Trace_ID ((S1AP_ProtocolIE_ID_t)86) +#define S1AP_ProtocolIE_ID_S1AP_id_RelativeMMECapacity ((S1AP_ProtocolIE_ID_t)87) +#define S1AP_ProtocolIE_ID_S1AP_id_SourceMME_UE_S1AP_ID ((S1AP_ProtocolIE_ID_t)88) +#define S1AP_ProtocolIE_ID_S1AP_id_Bearers_SubjectToStatusTransfer_Item ((S1AP_ProtocolIE_ID_t)89) +#define S1AP_ProtocolIE_ID_S1AP_id_eNB_StatusTransfer_TransparentContainer ((S1AP_ProtocolIE_ID_t)90) +#define S1AP_ProtocolIE_ID_S1AP_id_UE_associatedLogicalS1_ConnectionItem ((S1AP_ProtocolIE_ID_t)91) +#define S1AP_ProtocolIE_ID_S1AP_id_ResetType ((S1AP_ProtocolIE_ID_t)92) +#define S1AP_ProtocolIE_ID_S1AP_id_UE_associatedLogicalS1_ConnectionListResAck ((S1AP_ProtocolIE_ID_t)93) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSwitchedULItem ((S1AP_ProtocolIE_ID_t)94) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeSwitchedULList ((S1AP_ProtocolIE_ID_t)95) +#define S1AP_ProtocolIE_ID_S1AP_id_S_TMSI ((S1AP_ProtocolIE_ID_t)96) +#define S1AP_ProtocolIE_ID_S1AP_id_cdma2000OneXRAND ((S1AP_ProtocolIE_ID_t)97) +#define S1AP_ProtocolIE_ID_S1AP_id_RequestType ((S1AP_ProtocolIE_ID_t)98) +#define S1AP_ProtocolIE_ID_S1AP_id_UE_S1AP_IDs ((S1AP_ProtocolIE_ID_t)99) +#define S1AP_ProtocolIE_ID_S1AP_id_EUTRAN_CGI ((S1AP_ProtocolIE_ID_t)100) +#define S1AP_ProtocolIE_ID_S1AP_id_OverloadResponse ((S1AP_ProtocolIE_ID_t)101) +#define S1AP_ProtocolIE_ID_S1AP_id_cdma2000OneXSRVCCInfo ((S1AP_ProtocolIE_ID_t)102) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToBeReleasedList ((S1AP_ProtocolIE_ID_t)103) +#define S1AP_ProtocolIE_ID_S1AP_id_Source_ToTarget_TransparentContainer ((S1AP_ProtocolIE_ID_t)104) +#define S1AP_ProtocolIE_ID_S1AP_id_ServedGUMMEIs ((S1AP_ProtocolIE_ID_t)105) +#define S1AP_ProtocolIE_ID_S1AP_id_SubscriberProfileIDforRFP ((S1AP_ProtocolIE_ID_t)106) +#define S1AP_ProtocolIE_ID_S1AP_id_UESecurityCapabilities ((S1AP_ProtocolIE_ID_t)107) +#define S1AP_ProtocolIE_ID_S1AP_id_CSFallbackIndicator ((S1AP_ProtocolIE_ID_t)108) +#define S1AP_ProtocolIE_ID_S1AP_id_CNDomain ((S1AP_ProtocolIE_ID_t)109) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABReleasedList ((S1AP_ProtocolIE_ID_t)110) +#define S1AP_ProtocolIE_ID_S1AP_id_MessageIdentifier ((S1AP_ProtocolIE_ID_t)111) +#define S1AP_ProtocolIE_ID_S1AP_id_SerialNumber ((S1AP_ProtocolIE_ID_t)112) +#define S1AP_ProtocolIE_ID_S1AP_id_WarningAreaList ((S1AP_ProtocolIE_ID_t)113) +#define S1AP_ProtocolIE_ID_S1AP_id_RepetitionPeriod ((S1AP_ProtocolIE_ID_t)114) +#define S1AP_ProtocolIE_ID_S1AP_id_NumberofBroadcastRequest ((S1AP_ProtocolIE_ID_t)115) +#define S1AP_ProtocolIE_ID_S1AP_id_WarningType ((S1AP_ProtocolIE_ID_t)116) +#define S1AP_ProtocolIE_ID_S1AP_id_WarningSecurityInfo ((S1AP_ProtocolIE_ID_t)117) +#define S1AP_ProtocolIE_ID_S1AP_id_DataCodingScheme ((S1AP_ProtocolIE_ID_t)118) +#define S1AP_ProtocolIE_ID_S1AP_id_WarningMessageContents ((S1AP_ProtocolIE_ID_t)119) +#define S1AP_ProtocolIE_ID_S1AP_id_BroadcastCompletedAreaList ((S1AP_ProtocolIE_ID_t)120) +#define S1AP_ProtocolIE_ID_S1AP_id_Inter_SystemInformationTransferTypeEDT ((S1AP_ProtocolIE_ID_t)121) +#define S1AP_ProtocolIE_ID_S1AP_id_Inter_SystemInformationTransferTypeMDT ((S1AP_ProtocolIE_ID_t)122) +#define S1AP_ProtocolIE_ID_S1AP_id_Target_ToSource_TransparentContainer ((S1AP_ProtocolIE_ID_t)123) +#define S1AP_ProtocolIE_ID_S1AP_id_SRVCCOperationPossible ((S1AP_ProtocolIE_ID_t)124) +#define S1AP_ProtocolIE_ID_S1AP_id_SRVCCHOIndication ((S1AP_ProtocolIE_ID_t)125) +#define S1AP_ProtocolIE_ID_S1AP_id_NAS_DownlinkCount ((S1AP_ProtocolIE_ID_t)126) +#define S1AP_ProtocolIE_ID_S1AP_id_CSG_Id ((S1AP_ProtocolIE_ID_t)127) +#define S1AP_ProtocolIE_ID_S1AP_id_CSG_IdList ((S1AP_ProtocolIE_ID_t)128) +#define S1AP_ProtocolIE_ID_S1AP_id_SONConfigurationTransferECT ((S1AP_ProtocolIE_ID_t)129) +#define S1AP_ProtocolIE_ID_S1AP_id_SONConfigurationTransferMCT ((S1AP_ProtocolIE_ID_t)130) +#define S1AP_ProtocolIE_ID_S1AP_id_TraceCollectionEntityIPAddress ((S1AP_ProtocolIE_ID_t)131) +#define S1AP_ProtocolIE_ID_S1AP_id_MSClassmark2 ((S1AP_ProtocolIE_ID_t)132) +#define S1AP_ProtocolIE_ID_S1AP_id_MSClassmark3 ((S1AP_ProtocolIE_ID_t)133) +#define S1AP_ProtocolIE_ID_S1AP_id_RRC_Establishment_Cause ((S1AP_ProtocolIE_ID_t)134) +#define S1AP_ProtocolIE_ID_S1AP_id_NASSecurityParametersfromE_UTRAN ((S1AP_ProtocolIE_ID_t)135) +#define S1AP_ProtocolIE_ID_S1AP_id_NASSecurityParameterstoE_UTRAN ((S1AP_ProtocolIE_ID_t)136) +#define S1AP_ProtocolIE_ID_S1AP_id_DefaultPagingDRX ((S1AP_ProtocolIE_ID_t)137) +#define S1AP_ProtocolIE_ID_S1AP_id_Source_ToTarget_TransparentContainer_Secondary ((S1AP_ProtocolIE_ID_t)138) +#define S1AP_ProtocolIE_ID_S1AP_id_Target_ToSource_TransparentContainer_Secondary ((S1AP_ProtocolIE_ID_t)139) +#define S1AP_ProtocolIE_ID_S1AP_id_EUTRANRoundTripDelayEstimationInfo ((S1AP_ProtocolIE_ID_t)140) +#define S1AP_ProtocolIE_ID_S1AP_id_BroadcastCancelledAreaList ((S1AP_ProtocolIE_ID_t)141) +#define S1AP_ProtocolIE_ID_S1AP_id_ConcurrentWarningMessageIndicator ((S1AP_ProtocolIE_ID_t)142) +#define S1AP_ProtocolIE_ID_S1AP_id_Data_Forwarding_Not_Possible ((S1AP_ProtocolIE_ID_t)143) +#define S1AP_ProtocolIE_ID_S1AP_id_ExtendedRepetitionPeriod ((S1AP_ProtocolIE_ID_t)144) +#define S1AP_ProtocolIE_ID_S1AP_id_CellAccessMode ((S1AP_ProtocolIE_ID_t)145) +#define S1AP_ProtocolIE_ID_S1AP_id_CSGMembershipStatus ((S1AP_ProtocolIE_ID_t)146) +#define S1AP_ProtocolIE_ID_S1AP_id_LPPa_PDU ((S1AP_ProtocolIE_ID_t)147) +#define S1AP_ProtocolIE_ID_S1AP_id_Routing_ID ((S1AP_ProtocolIE_ID_t)148) +#define S1AP_ProtocolIE_ID_S1AP_id_Time_Synchronisation_Info ((S1AP_ProtocolIE_ID_t)149) +#define S1AP_ProtocolIE_ID_S1AP_id_PS_ServiceNotAvailable ((S1AP_ProtocolIE_ID_t)150) +#define S1AP_ProtocolIE_ID_S1AP_id_PagingPriority ((S1AP_ProtocolIE_ID_t)151) +#define S1AP_ProtocolIE_ID_S1AP_id_x2TNLConfigurationInfo ((S1AP_ProtocolIE_ID_t)152) +#define S1AP_ProtocolIE_ID_S1AP_id_eNBX2ExtendedTransportLayerAddresses ((S1AP_ProtocolIE_ID_t)153) +#define S1AP_ProtocolIE_ID_S1AP_id_GUMMEIList ((S1AP_ProtocolIE_ID_t)154) +#define S1AP_ProtocolIE_ID_S1AP_id_GW_TransportLayerAddress ((S1AP_ProtocolIE_ID_t)155) +#define S1AP_ProtocolIE_ID_S1AP_id_Correlation_ID ((S1AP_ProtocolIE_ID_t)156) +#define S1AP_ProtocolIE_ID_S1AP_id_SourceMME_GUMMEI ((S1AP_ProtocolIE_ID_t)157) +#define S1AP_ProtocolIE_ID_S1AP_id_MME_UE_S1AP_ID_2 ((S1AP_ProtocolIE_ID_t)158) +#define S1AP_ProtocolIE_ID_S1AP_id_RegisteredLAI ((S1AP_ProtocolIE_ID_t)159) +#define S1AP_ProtocolIE_ID_S1AP_id_RelayNode_Indicator ((S1AP_ProtocolIE_ID_t)160) +#define S1AP_ProtocolIE_ID_S1AP_id_TrafficLoadReductionIndication ((S1AP_ProtocolIE_ID_t)161) +#define S1AP_ProtocolIE_ID_S1AP_id_MDTConfiguration ((S1AP_ProtocolIE_ID_t)162) +#define S1AP_ProtocolIE_ID_S1AP_id_MMERelaySupportIndicator ((S1AP_ProtocolIE_ID_t)163) +#define S1AP_ProtocolIE_ID_S1AP_id_GWContextReleaseIndication ((S1AP_ProtocolIE_ID_t)164) +#define S1AP_ProtocolIE_ID_S1AP_id_ManagementBasedMDTAllowed ((S1AP_ProtocolIE_ID_t)165) +#define S1AP_ProtocolIE_ID_S1AP_id_PrivacyIndicator ((S1AP_ProtocolIE_ID_t)166) +#define S1AP_ProtocolIE_ID_S1AP_id_Time_UE_StayedInCell_EnhancedGranularity ((S1AP_ProtocolIE_ID_t)167) +#define S1AP_ProtocolIE_ID_S1AP_id_HO_Cause ((S1AP_ProtocolIE_ID_t)168) +#define S1AP_ProtocolIE_ID_S1AP_id_VoiceSupportMatchIndicator ((S1AP_ProtocolIE_ID_t)169) +#define S1AP_ProtocolIE_ID_S1AP_id_GUMMEIType ((S1AP_ProtocolIE_ID_t)170) +#define S1AP_ProtocolIE_ID_S1AP_id_M3Configuration ((S1AP_ProtocolIE_ID_t)171) +#define S1AP_ProtocolIE_ID_S1AP_id_M4Configuration ((S1AP_ProtocolIE_ID_t)172) +#define S1AP_ProtocolIE_ID_S1AP_id_M5Configuration ((S1AP_ProtocolIE_ID_t)173) +#define S1AP_ProtocolIE_ID_S1AP_id_MDT_Location_Info ((S1AP_ProtocolIE_ID_t)174) +#define S1AP_ProtocolIE_ID_S1AP_id_MobilityInformation ((S1AP_ProtocolIE_ID_t)175) +#define S1AP_ProtocolIE_ID_S1AP_id_Tunnel_Information_for_BBF ((S1AP_ProtocolIE_ID_t)176) +#define S1AP_ProtocolIE_ID_S1AP_id_ManagementBasedMDTPLMNList ((S1AP_ProtocolIE_ID_t)177) +#define S1AP_ProtocolIE_ID_S1AP_id_SignallingBasedMDTPLMNList ((S1AP_ProtocolIE_ID_t)178) +#define S1AP_ProtocolIE_ID_S1AP_id_ULCOUNTValueExtended ((S1AP_ProtocolIE_ID_t)179) +#define S1AP_ProtocolIE_ID_S1AP_id_DLCOUNTValueExtended ((S1AP_ProtocolIE_ID_t)180) +#define S1AP_ProtocolIE_ID_S1AP_id_ReceiveStatusOfULPDCPSDUsExtended ((S1AP_ProtocolIE_ID_t)181) +#define S1AP_ProtocolIE_ID_S1AP_id_ECGIListForRestart ((S1AP_ProtocolIE_ID_t)182) +#define S1AP_ProtocolIE_ID_S1AP_id_SIPTO_Correlation_ID ((S1AP_ProtocolIE_ID_t)183) +#define S1AP_ProtocolIE_ID_S1AP_id_SIPTO_L_GW_TransportLayerAddress ((S1AP_ProtocolIE_ID_t)184) +#define S1AP_ProtocolIE_ID_S1AP_id_TransportInformation ((S1AP_ProtocolIE_ID_t)185) +#define S1AP_ProtocolIE_ID_S1AP_id_LHN_ID ((S1AP_ProtocolIE_ID_t)186) +#define S1AP_ProtocolIE_ID_S1AP_id_AdditionalCSFallbackIndicator ((S1AP_ProtocolIE_ID_t)187) +#define S1AP_ProtocolIE_ID_S1AP_id_TAIListForRestart ((S1AP_ProtocolIE_ID_t)188) +#define S1AP_ProtocolIE_ID_S1AP_id_UserLocationInformation ((S1AP_ProtocolIE_ID_t)189) +#define S1AP_ProtocolIE_ID_S1AP_id_EmergencyAreaIDListForRestart ((S1AP_ProtocolIE_ID_t)190) +#define S1AP_ProtocolIE_ID_S1AP_id_KillAllWarningMessages ((S1AP_ProtocolIE_ID_t)191) +#define S1AP_ProtocolIE_ID_S1AP_id_Masked_IMEISV ((S1AP_ProtocolIE_ID_t)192) +#define S1AP_ProtocolIE_ID_S1AP_id_eNBIndirectX2TransportLayerAddresses ((S1AP_ProtocolIE_ID_t)193) +#define S1AP_ProtocolIE_ID_S1AP_id_uE_HistoryInformationFromTheUE ((S1AP_ProtocolIE_ID_t)194) +#define S1AP_ProtocolIE_ID_S1AP_id_ProSeAuthorized ((S1AP_ProtocolIE_ID_t)195) +#define S1AP_ProtocolIE_ID_S1AP_id_ExpectedUEBehaviour ((S1AP_ProtocolIE_ID_t)196) +#define S1AP_ProtocolIE_ID_S1AP_id_LoggedMBSFNMDT ((S1AP_ProtocolIE_ID_t)197) +#define S1AP_ProtocolIE_ID_S1AP_id_UERadioCapabilityForPaging ((S1AP_ProtocolIE_ID_t)198) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeModifiedListBearerModInd ((S1AP_ProtocolIE_ID_t)199) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeModifiedItemBearerModInd ((S1AP_ProtocolIE_ID_t)200) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABNotToBeModifiedListBearerModInd ((S1AP_ProtocolIE_ID_t)201) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABNotToBeModifiedItemBearerModInd ((S1AP_ProtocolIE_ID_t)202) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABModifyListBearerModConf ((S1AP_ProtocolIE_ID_t)203) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABModifyItemBearerModConf ((S1AP_ProtocolIE_ID_t)204) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToModifyListBearerModConf ((S1AP_ProtocolIE_ID_t)205) +#define S1AP_ProtocolIE_ID_S1AP_id_SON_Information_Report ((S1AP_ProtocolIE_ID_t)206) +#define S1AP_ProtocolIE_ID_S1AP_id_Muting_Availability_Indication ((S1AP_ProtocolIE_ID_t)207) +#define S1AP_ProtocolIE_ID_S1AP_id_Muting_Pattern_Information ((S1AP_ProtocolIE_ID_t)208) +#define S1AP_ProtocolIE_ID_S1AP_id_Synchronisation_Information ((S1AP_ProtocolIE_ID_t)209) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABToBeReleasedListBearerModConf ((S1AP_ProtocolIE_ID_t)210) +#define S1AP_ProtocolIE_ID_S1AP_id_AssistanceDataForPaging ((S1AP_ProtocolIE_ID_t)211) +#define S1AP_ProtocolIE_ID_S1AP_id_CellIdentifierAndCELevelForCECapableUEs ((S1AP_ProtocolIE_ID_t)212) +#define S1AP_ProtocolIE_ID_S1AP_id_InformationOnRecommendedCellsAndENBsForPaging ((S1AP_ProtocolIE_ID_t)213) +#define S1AP_ProtocolIE_ID_S1AP_id_RecommendedCellItem ((S1AP_ProtocolIE_ID_t)214) +#define S1AP_ProtocolIE_ID_S1AP_id_RecommendedENBItem ((S1AP_ProtocolIE_ID_t)215) +#define S1AP_ProtocolIE_ID_S1AP_id_ProSeUEtoNetworkRelaying ((S1AP_ProtocolIE_ID_t)216) +#define S1AP_ProtocolIE_ID_S1AP_id_ULCOUNTValuePDCP_SNlength18 ((S1AP_ProtocolIE_ID_t)217) +#define S1AP_ProtocolIE_ID_S1AP_id_DLCOUNTValuePDCP_SNlength18 ((S1AP_ProtocolIE_ID_t)218) +#define S1AP_ProtocolIE_ID_S1AP_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 ((S1AP_ProtocolIE_ID_t)219) +#define S1AP_ProtocolIE_ID_S1AP_id_M6Configuration ((S1AP_ProtocolIE_ID_t)220) +#define S1AP_ProtocolIE_ID_S1AP_id_M7Configuration ((S1AP_ProtocolIE_ID_t)221) +#define S1AP_ProtocolIE_ID_S1AP_id_PWSfailedECGIList ((S1AP_ProtocolIE_ID_t)222) +#define S1AP_ProtocolIE_ID_S1AP_id_MME_Group_ID ((S1AP_ProtocolIE_ID_t)223) +#define S1AP_ProtocolIE_ID_S1AP_id_Additional_GUTI ((S1AP_ProtocolIE_ID_t)224) +#define S1AP_ProtocolIE_ID_S1AP_id_S1_Message ((S1AP_ProtocolIE_ID_t)225) +#define S1AP_ProtocolIE_ID_S1AP_id_CSGMembershipInfo ((S1AP_ProtocolIE_ID_t)226) +#define S1AP_ProtocolIE_ID_S1AP_id_Paging_eDRXInformation ((S1AP_ProtocolIE_ID_t)227) +#define S1AP_ProtocolIE_ID_S1AP_id_UE_RetentionInformation ((S1AP_ProtocolIE_ID_t)228) +#define S1AP_ProtocolIE_ID_S1AP_id_UE_Usage_Type ((S1AP_ProtocolIE_ID_t)230) +#define S1AP_ProtocolIE_ID_S1AP_id_extended_UEIdentityIndexValue ((S1AP_ProtocolIE_ID_t)231) +#define S1AP_ProtocolIE_ID_S1AP_id_RAT_Type ((S1AP_ProtocolIE_ID_t)232) +#define S1AP_ProtocolIE_ID_S1AP_id_BearerType ((S1AP_ProtocolIE_ID_t)233) +#define S1AP_ProtocolIE_ID_S1AP_id_NB_IoT_DefaultPagingDRX ((S1AP_ProtocolIE_ID_t)234) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToResumeListResumeReq ((S1AP_ProtocolIE_ID_t)235) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToResumeItemResumeReq ((S1AP_ProtocolIE_ID_t)236) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToResumeListResumeRes ((S1AP_ProtocolIE_ID_t)237) +#define S1AP_ProtocolIE_ID_S1AP_id_E_RABFailedToResumeItemResumeRes ((S1AP_ProtocolIE_ID_t)238) +#define S1AP_ProtocolIE_ID_S1AP_id_NB_IoT_Paging_eDRXInformation ((S1AP_ProtocolIE_ID_t)239) +#define S1AP_ProtocolIE_ID_S1AP_id_V2XServicesAuthorized ((S1AP_ProtocolIE_ID_t)240) +#define S1AP_ProtocolIE_ID_S1AP_id_UEUserPlaneCIoTSupportIndicator ((S1AP_ProtocolIE_ID_t)241) +#define S1AP_ProtocolIE_ID_S1AP_id_CE_mode_B_SupportIndicator ((S1AP_ProtocolIE_ID_t)242) +#define S1AP_ProtocolIE_ID_S1AP_id_SRVCCOperationNotPossible ((S1AP_ProtocolIE_ID_t)243) +#define S1AP_ProtocolIE_ID_S1AP_id_NB_IoT_UEIdentityIndexValue ((S1AP_ProtocolIE_ID_t)244) +#define S1AP_ProtocolIE_ID_S1AP_id_RRC_Resume_Cause ((S1AP_ProtocolIE_ID_t)245) +#define S1AP_ProtocolIE_ID_S1AP_id_DCN_ID ((S1AP_ProtocolIE_ID_t)246) +#define S1AP_ProtocolIE_ID_S1AP_id_ServedDCNs ((S1AP_ProtocolIE_ID_t)247) +#define S1AP_ProtocolIE_ID_S1AP_id_UESidelinkAggregateMaximumBitrate ((S1AP_ProtocolIE_ID_t)248) +#define S1AP_ProtocolIE_ID_S1AP_id_DLNASPDUDeliveryAckRequest ((S1AP_ProtocolIE_ID_t)249) +#define S1AP_ProtocolIE_ID_S1AP_id_Coverage_Level ((S1AP_ProtocolIE_ID_t)250) +#define S1AP_ProtocolIE_ID_S1AP_id_EnhancedCoverageRestricted ((S1AP_ProtocolIE_ID_t)251) +#define S1AP_ProtocolIE_ID_S1AP_id_UE_Level_QoS_Parameters ((S1AP_ProtocolIE_ID_t)252) +#define S1AP_ProtocolIE_ID_S1AP_id_DL_CP_SecurityInformation ((S1AP_ProtocolIE_ID_t)253) +#define S1AP_ProtocolIE_ID_S1AP_id_UL_CP_SecurityInformation ((S1AP_ProtocolIE_ID_t)254) + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolIE_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-SingleContainer.c b/lib/s1ap3/asn1c/S1AP_ProtocolIE-SingleContainer.c new file mode 100644 index 0000000000..77ba42163a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-SingleContainer.c @@ -0,0 +1,653 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ProtocolIE-SingleContainer.h" + +/* + * This type is implemented using S1AP_E_RABToBeSetupItemBearerSUReqIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABSetupItemBearerSUResIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABToBeModifiedItemBearerModReqIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABModifyItemBearerModResIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABReleaseItemBearerRelCompIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABToBeSetupItemCtxtSUReqIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABSetupItemCtxtSUResIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_TAIItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_UE_associatedLogicalS1_ConnectionItemRes, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_UE_associatedLogicalS1_ConnectionItemResAck, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABModifyItemBearerModConfIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_Bearers_SubjectToStatusTransfer_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABInformationListIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_MDTMode_ExtensionIE, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_RecommendedCellItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_RecommendedENBItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_SONInformation_ExtensionIE, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABDataForwardingItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABToBeSetupItemHOReqIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABAdmittedItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABFailedtoSetupItemHOReqAckIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABToBeSwitchedDLItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABToBeSwitchedULItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABToBeModifiedItemBearerModIndIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABNotToBeModifiedItemBearerModIndIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABFailedToResumeItemResumeReqIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using S1AP_E_RABFailedToResumeItemResumeResIEs, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0_tags_1, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0_tags_1) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemBearerSUReqIEs_1, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemBearerSUReqIEs_specs_1 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1_tags_2, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1_tags_2) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1_tags_2[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1_tags_2, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1_tags_2) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupItemBearerSUResIEs_5, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupItemBearerSUResIEs_specs_5 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2_tags_3, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2_tags_3) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2_tags_3[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2_tags_3, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2_tags_3) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2_tags_3[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeModifiedItemBearerModReqIEs_9, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeModifiedItemBearerModReqIEs_specs_9 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3_tags_4, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3_tags_4) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3_tags_4[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3_tags_4, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3_tags_4) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3_tags_4[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyItemBearerModResIEs_13, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyItemBearerModResIEs_specs_13 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4_tags_5, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4_tags_5) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4_tags_5[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4_tags_5, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4_tags_5) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABReleaseItemBearerRelCompIEs_17, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABReleaseItemBearerRelCompIEs_specs_17 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5_tags_6[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5_tags_6, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5_tags_6) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5_tags_6[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5_tags_6, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5_tags_6) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5_tags_6[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_21, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemCtxtSUReqIEs_specs_21 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6_tags_7, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6_tags_7) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6_tags_7[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6_tags_7, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6_tags_7) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6_tags_7[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABSetupItemCtxtSUResIEs_25, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABSetupItemCtxtSUResIEs_specs_25 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7_tags_8[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7_tags_8, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7_tags_8) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7_tags_8[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7_tags_8, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7_tags_8) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7_tags_8[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAIItemIEs_29, + 3, /* Elements count */ + &asn_SPC_S1AP_TAIItemIEs_specs_29 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8_tags_9, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8_tags_9) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8_tags_9[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8_tags_9, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8_tags_9) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemRes_33, + 3, /* Elements count */ + &asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemRes_specs_33 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9_tags_10[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9_tags_10, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9_tags_10) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9_tags_10[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9_tags_10, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9_tags_10) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9_tags_10[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_37, + 3, /* Elements count */ + &asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItemResAck_specs_37 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10_tags_11, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10_tags_11) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10_tags_11[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10_tags_11, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10_tags_11) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10_tags_11[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABModifyItemBearerModConfIEs_41, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABModifyItemBearerModConfIEs_specs_41 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11_tags_12[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11_tags_12, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11_tags_12) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11_tags_12[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11_tags_12, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11_tags_12) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11_tags_12[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_45, + 3, /* Elements count */ + &asn_SPC_S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_specs_45 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12_tags_13, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12_tags_13) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12_tags_13[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12_tags_13, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12_tags_13) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABInformationListIEs_49, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABInformationListIEs_specs_49 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13_tags_14[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13_tags_14, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13_tags_14) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13_tags_14[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13_tags_14, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13_tags_14) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13_tags_14[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABItemIEs_53, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABItemIEs_specs_53 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P14_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P14 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P14_tags_15, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P14_tags_15) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P14_tags_15[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P14_tags_15, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P14_tags_15) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P14_tags_15[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_MDTMode_ExtensionIE_57, + 3, /* Elements count */ + &asn_SPC_S1AP_MDTMode_ExtensionIE_specs_57 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15_tags_16[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15_tags_16, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15_tags_16) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15_tags_16[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15_tags_16, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15_tags_16) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15_tags_16[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedCellItemIEs_61, + 3, /* Elements count */ + &asn_SPC_S1AP_RecommendedCellItemIEs_specs_61 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16_tags_17, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16_tags_17) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16_tags_17[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16_tags_17, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16_tags_17) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedENBItemIEs_65, + 3, /* Elements count */ + &asn_SPC_S1AP_RecommendedENBItemIEs_specs_65 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P17_tags_18[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P17 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P17_tags_18, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P17_tags_18) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P17_tags_18[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P17_tags_18, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P17_tags_18) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P17_tags_18[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SONInformation_ExtensionIE_69, + 3, /* Elements count */ + &asn_SPC_S1AP_SONInformation_ExtensionIE_specs_69 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18_tags_19, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18_tags_19) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18_tags_19[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18_tags_19, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18_tags_19) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18_tags_19[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABDataForwardingItemIEs_437, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABDataForwardingItemIEs_specs_437 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19_tags_20[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19_tags_20, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19_tags_20) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19_tags_20[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19_tags_20, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19_tags_20) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19_tags_20[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSetupItemHOReqIEs_441, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSetupItemHOReqIEs_specs_441 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20_tags_21, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20_tags_21) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20_tags_21[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20_tags_21, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20_tags_21) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABAdmittedItemIEs_445, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABAdmittedItemIEs_specs_445 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21_tags_22[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21_tags_22, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21_tags_22) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21_tags_22[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21_tags_22, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21_tags_22) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21_tags_22[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_449, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedtoSetupItemHOReqAckIEs_specs_449 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22_tags_23, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22_tags_23) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22_tags_23[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22_tags_23, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22_tags_23) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22_tags_23[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSwitchedDLItemIEs_453, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSwitchedDLItemIEs_specs_453 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23_tags_24[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23_tags_24, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23_tags_24) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23_tags_24[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23_tags_24, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23_tags_24) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23_tags_24[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeSwitchedULItemIEs_457, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeSwitchedULItemIEs_specs_457 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24_tags_25, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24_tags_25) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24_tags_25[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24_tags_25, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24_tags_25) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABToBeModifiedItemBearerModIndIEs_461, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABToBeModifiedItemBearerModIndIEs_specs_461 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25_tags_26[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25_tags_26, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25_tags_26) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25_tags_26[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25_tags_26, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25_tags_26) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25_tags_26[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_465, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_specs_465 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26_tags_27, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26_tags_27) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26_tags_27[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26_tags_27, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26_tags_27) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26_tags_27[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToResumeItemResumeReqIEs_469, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToResumeItemResumeReqIEs_specs_469 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27_tags_28[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27_tags_28, + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27_tags_28) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27_tags_28[0]), /* 1 */ + asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27_tags_28, /* Same as above */ + sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27_tags_28) + /sizeof(asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27_tags_28[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_E_RABFailedToResumeItemResumeResIEs_473, + 3, /* Elements count */ + &asn_SPC_S1AP_E_RABFailedToResumeItemResumeResIEs_specs_473 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ProtocolIE-SingleContainer.h b/lib/s1ap3/asn1c/S1AP_ProtocolIE-SingleContainer.h new file mode 100644 index 0000000000..e983f2333a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ProtocolIE-SingleContainer.h @@ -0,0 +1,450 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-Containers" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ProtocolIE_SingleContainer_H_ +#define _S1AP_ProtocolIE_SingleContainer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Field.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ProtocolIE-SingleContainer */ +typedef S1AP_E_RABToBeSetupItemBearerSUReqIEs_t S1AP_ProtocolIE_SingleContainer_6554P0_t; +typedef S1AP_E_RABSetupItemBearerSUResIEs_t S1AP_ProtocolIE_SingleContainer_6554P1_t; +typedef S1AP_E_RABToBeModifiedItemBearerModReqIEs_t S1AP_ProtocolIE_SingleContainer_6554P2_t; +typedef S1AP_E_RABModifyItemBearerModResIEs_t S1AP_ProtocolIE_SingleContainer_6554P3_t; +typedef S1AP_E_RABReleaseItemBearerRelCompIEs_t S1AP_ProtocolIE_SingleContainer_6554P4_t; +typedef S1AP_E_RABToBeSetupItemCtxtSUReqIEs_t S1AP_ProtocolIE_SingleContainer_6554P5_t; +typedef S1AP_E_RABSetupItemCtxtSUResIEs_t S1AP_ProtocolIE_SingleContainer_6554P6_t; +typedef S1AP_TAIItemIEs_t S1AP_ProtocolIE_SingleContainer_6554P7_t; +typedef S1AP_UE_associatedLogicalS1_ConnectionItemRes_t S1AP_ProtocolIE_SingleContainer_6554P8_t; +typedef S1AP_UE_associatedLogicalS1_ConnectionItemResAck_t S1AP_ProtocolIE_SingleContainer_6554P9_t; +typedef S1AP_E_RABModifyItemBearerModConfIEs_t S1AP_ProtocolIE_SingleContainer_6554P10_t; +typedef S1AP_Bearers_SubjectToStatusTransfer_ItemIEs_t S1AP_ProtocolIE_SingleContainer_6554P11_t; +typedef S1AP_E_RABInformationListIEs_t S1AP_ProtocolIE_SingleContainer_6554P12_t; +typedef S1AP_E_RABItemIEs_t S1AP_ProtocolIE_SingleContainer_6554P13_t; +typedef S1AP_MDTMode_ExtensionIE_t S1AP_ProtocolIE_SingleContainer_6554P14_t; +typedef S1AP_RecommendedCellItemIEs_t S1AP_ProtocolIE_SingleContainer_6554P15_t; +typedef S1AP_RecommendedENBItemIEs_t S1AP_ProtocolIE_SingleContainer_6554P16_t; +typedef S1AP_SONInformation_ExtensionIE_t S1AP_ProtocolIE_SingleContainer_6554P17_t; +typedef S1AP_E_RABDataForwardingItemIEs_t S1AP_ProtocolIE_SingleContainer_6554P18_t; +typedef S1AP_E_RABToBeSetupItemHOReqIEs_t S1AP_ProtocolIE_SingleContainer_6554P19_t; +typedef S1AP_E_RABAdmittedItemIEs_t S1AP_ProtocolIE_SingleContainer_6554P20_t; +typedef S1AP_E_RABFailedtoSetupItemHOReqAckIEs_t S1AP_ProtocolIE_SingleContainer_6554P21_t; +typedef S1AP_E_RABToBeSwitchedDLItemIEs_t S1AP_ProtocolIE_SingleContainer_6554P22_t; +typedef S1AP_E_RABToBeSwitchedULItemIEs_t S1AP_ProtocolIE_SingleContainer_6554P23_t; +typedef S1AP_E_RABToBeModifiedItemBearerModIndIEs_t S1AP_ProtocolIE_SingleContainer_6554P24_t; +typedef S1AP_E_RABNotToBeModifiedItemBearerModIndIEs_t S1AP_ProtocolIE_SingleContainer_6554P25_t; +typedef S1AP_E_RABFailedToResumeItemResumeReqIEs_t S1AP_ProtocolIE_SingleContainer_6554P26_t; +typedef S1AP_E_RABFailedToResumeItemResumeResIEs_t S1AP_ProtocolIE_SingleContainer_6554P27_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P0; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P0_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P0_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P0_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P0_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P0_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P0_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P0_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P0_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P0_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P0_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P0_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P0_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P0_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P1; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P1_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P1_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P1_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P1_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P1_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P1_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P1_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P1_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P1_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P1_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P1_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P1_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P1_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P2; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P2_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P2_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P2_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P2_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P2_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P2_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P2_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P2_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P2_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P2_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P2_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P2_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P2_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P3; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P3_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P3_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P3_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P3_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P3_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P3_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P3_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P3_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P3_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P3_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P3_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P3_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P3_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P4; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P4_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P4_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P4_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P4_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P4_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P4_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P4_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P4_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P4_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P4_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P4_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P4_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P4_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P5; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P5_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P5_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P5_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P5_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P5_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P5_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P5_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P5_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P5_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P5_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P5_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P5_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P5_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P6; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P6_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P6_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P6_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P6_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P6_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P6_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P6_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P6_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P6_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P6_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P6_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P6_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P6_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P7_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P7_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P7_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P7_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P7_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P7_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P7_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P7_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P7_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P7_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P7_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P7_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P7_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P8_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P8_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P8_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P8_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P8_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P8_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P8_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P8_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P8_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P8_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P8_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P8_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P8_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P9_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P9_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P9_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P9_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P9_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P9_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P9_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P9_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P9_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P9_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P9_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P9_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P9_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P10; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P10_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P10_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P10_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P10_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P10_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P10_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P10_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P10_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P10_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P10_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P10_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P10_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P10_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P11; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P11_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P11_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P11_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P11_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P11_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P11_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P11_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P11_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P11_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P11_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P11_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P11_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P11_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P12; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P12_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P12_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P12_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P12_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P12_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P12_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P12_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P12_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P12_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P12_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P12_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P12_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P12_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P13; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P13_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P13_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P13_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P13_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P13_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P13_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P13_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P13_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P13_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P13_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P13_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P13_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P13_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P14; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P14_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P14_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P14_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P14_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P14_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P14_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P14_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P14_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P14_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P14_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P14_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P14_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P14_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P15_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P15_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P15_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P15_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P15_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P15_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P15_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P15_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P15_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P15_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P15_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P15_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P15_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P16_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P16_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P16_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P16_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P16_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P16_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P16_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P16_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P16_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P16_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P16_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P16_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P16_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P17; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P17_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P17_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P17_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P17_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P17_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P17_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P17_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P17_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P17_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P17_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P17_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P17_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P17_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P18; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P18_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P18_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P18_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P18_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P18_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P18_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P18_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P18_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P18_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P18_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P18_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P18_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P18_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P19; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P19_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P19_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P19_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P19_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P19_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P19_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P19_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P19_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P19_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P19_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P19_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P19_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P19_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P20; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P20_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P20_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P20_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P20_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P20_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P20_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P20_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P20_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P20_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P20_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P20_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P20_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P20_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P21; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P21_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P21_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P21_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P21_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P21_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P21_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P21_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P21_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P21_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P21_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P21_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P21_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P21_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P22; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P22_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P22_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P22_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P22_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P22_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P22_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P22_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P22_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P22_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P22_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P22_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P22_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P22_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P23; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P23_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P23_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P23_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P23_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P23_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P23_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P23_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P23_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P23_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P23_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P23_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P23_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P23_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P24; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P24_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P24_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P24_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P24_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P24_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P24_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P24_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P24_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P24_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P24_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P24_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P24_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P24_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P25; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P25_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P25_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P25_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P25_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P25_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P25_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P25_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P25_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P25_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P25_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P25_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P25_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P25_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P26; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P26_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P26_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P26_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P26_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P26_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P26_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P26_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P26_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P26_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P26_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P26_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P26_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P26_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P27; +asn_struct_free_f S1AP_ProtocolIE_SingleContainer_6554P27_free; +asn_struct_print_f S1AP_ProtocolIE_SingleContainer_6554P27_print; +asn_constr_check_f S1AP_ProtocolIE_SingleContainer_6554P27_constraint; +ber_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P27_decode_ber; +der_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P27_encode_der; +xer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P27_decode_xer; +xer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P27_encode_xer; +oer_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P27_decode_oer; +oer_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P27_encode_oer; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P27_decode_uper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P27_encode_uper; +per_type_decoder_f S1AP_ProtocolIE_SingleContainer_6554P27_decode_aper; +per_type_encoder_f S1AP_ProtocolIE_SingleContainer_6554P27_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ProtocolIE_SingleContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_QCI.c b/lib/s1ap3/asn1c/S1AP_QCI.c new file mode 100644 index 0000000000..cfab211cef --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_QCI.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_QCI.h" + +int +S1AP_QCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_QCI_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_QCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_QCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_QCI = { + "QCI", + "QCI", + &asn_OP_NativeInteger, + asn_DEF_S1AP_QCI_tags_1, + sizeof(asn_DEF_S1AP_QCI_tags_1) + /sizeof(asn_DEF_S1AP_QCI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_QCI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_QCI_tags_1) + /sizeof(asn_DEF_S1AP_QCI_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_QCI_constr_1, &asn_PER_type_S1AP_QCI_constr_1, S1AP_QCI_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_QCI.h b/lib/s1ap3/asn1c/S1AP_QCI.h new file mode 100644 index 0000000000..eb503eb0c6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_QCI.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_QCI_H_ +#define _S1AP_QCI_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_QCI */ +typedef long S1AP_QCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_QCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_QCI; +asn_struct_free_f S1AP_QCI_free; +asn_struct_print_f S1AP_QCI_print; +asn_constr_check_f S1AP_QCI_constraint; +ber_type_decoder_f S1AP_QCI_decode_ber; +der_type_encoder_f S1AP_QCI_encode_der; +xer_type_decoder_f S1AP_QCI_decode_xer; +xer_type_encoder_f S1AP_QCI_encode_xer; +oer_type_decoder_f S1AP_QCI_decode_oer; +oer_type_encoder_f S1AP_QCI_encode_oer; +per_type_decoder_f S1AP_QCI_decode_uper; +per_type_encoder_f S1AP_QCI_encode_uper; +per_type_decoder_f S1AP_QCI_decode_aper; +per_type_encoder_f S1AP_QCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_QCI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RAC.c b/lib/s1ap3/asn1c/S1AP_RAC.c new file mode 100644 index 0000000000..3830bded57 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RAC.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RAC.h" + +int +S1AP_RAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 1)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_RAC_constr_1 CC_NOTUSED = { + { 0, 0 }, + 1 /* (SIZE(1..1)) */}; +asn_per_constraints_t asn_PER_type_S1AP_RAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RAC = { + "RAC", + "RAC", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_RAC_tags_1, + sizeof(asn_DEF_S1AP_RAC_tags_1) + /sizeof(asn_DEF_S1AP_RAC_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RAC_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RAC_tags_1) + /sizeof(asn_DEF_S1AP_RAC_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_RAC_constr_1, &asn_PER_type_S1AP_RAC_constr_1, S1AP_RAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RAC.h b/lib/s1ap3/asn1c/S1AP_RAC.h new file mode 100644 index 0000000000..82672a8a49 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RAC.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RAC_H_ +#define _S1AP_RAC_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_RAC */ +typedef OCTET_STRING_t S1AP_RAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_RAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RAC; +asn_struct_free_f S1AP_RAC_free; +asn_struct_print_f S1AP_RAC_print; +asn_constr_check_f S1AP_RAC_constraint; +ber_type_decoder_f S1AP_RAC_decode_ber; +der_type_encoder_f S1AP_RAC_encode_der; +xer_type_decoder_f S1AP_RAC_decode_xer; +xer_type_encoder_f S1AP_RAC_encode_xer; +oer_type_decoder_f S1AP_RAC_decode_oer; +oer_type_encoder_f S1AP_RAC_encode_oer; +per_type_decoder_f S1AP_RAC_decode_uper; +per_type_encoder_f S1AP_RAC_encode_uper; +per_type_decoder_f S1AP_RAC_decode_aper; +per_type_encoder_f S1AP_RAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RAC_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RAT-Type.c b/lib/s1ap3/asn1c/S1AP_RAT-Type.c new file mode 100644 index 0000000000..c079eb5b50 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RAT-Type.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RAT-Type.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_RAT_Type_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_RAT_Type_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_RAT_Type_value2enum_1[] = { + { 0, 5, "nbiot" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_RAT_Type_enum2value_1[] = { + 0 /* nbiot(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_RAT_Type_specs_1 = { + asn_MAP_S1AP_RAT_Type_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_RAT_Type_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RAT_Type_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RAT_Type = { + "RAT-Type", + "RAT-Type", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_RAT_Type_tags_1, + sizeof(asn_DEF_S1AP_RAT_Type_tags_1) + /sizeof(asn_DEF_S1AP_RAT_Type_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RAT_Type_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RAT_Type_tags_1) + /sizeof(asn_DEF_S1AP_RAT_Type_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_RAT_Type_constr_1, &asn_PER_type_S1AP_RAT_Type_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_RAT_Type_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RAT-Type.h b/lib/s1ap3/asn1c/S1AP_RAT-Type.h new file mode 100644 index 0000000000..fb5875a1ea --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RAT-Type.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RAT_Type_H_ +#define _S1AP_RAT_Type_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_RAT_Type { + S1AP_RAT_Type_nbiot = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_RAT_Type; + +/* S1AP_RAT-Type */ +typedef long S1AP_RAT_Type_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RAT_Type; +asn_struct_free_f S1AP_RAT_Type_free; +asn_struct_print_f S1AP_RAT_Type_print; +asn_constr_check_f S1AP_RAT_Type_constraint; +ber_type_decoder_f S1AP_RAT_Type_decode_ber; +der_type_encoder_f S1AP_RAT_Type_encode_der; +xer_type_decoder_f S1AP_RAT_Type_decode_xer; +xer_type_encoder_f S1AP_RAT_Type_encode_xer; +oer_type_decoder_f S1AP_RAT_Type_decode_oer; +oer_type_encoder_f S1AP_RAT_Type_encode_oer; +per_type_decoder_f S1AP_RAT_Type_decode_uper; +per_type_encoder_f S1AP_RAT_Type_encode_uper; +per_type_decoder_f S1AP_RAT_Type_decode_aper; +per_type_encoder_f S1AP_RAT_Type_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RAT_Type_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RIMInformation.c b/lib/s1ap3/asn1c/S1AP_RIMInformation.c new file mode 100644 index 0000000000..6b1cd9c474 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RIMInformation.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RIMInformation.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_RIMInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RIMInformation = { + "RIMInformation", + "RIMInformation", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_RIMInformation_tags_1, + sizeof(asn_DEF_S1AP_RIMInformation_tags_1) + /sizeof(asn_DEF_S1AP_RIMInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RIMInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RIMInformation_tags_1) + /sizeof(asn_DEF_S1AP_RIMInformation_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RIMInformation.h b/lib/s1ap3/asn1c/S1AP_RIMInformation.h new file mode 100644 index 0000000000..040f0710fa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RIMInformation.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RIMInformation_H_ +#define _S1AP_RIMInformation_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_RIMInformation */ +typedef OCTET_STRING_t S1AP_RIMInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RIMInformation; +asn_struct_free_f S1AP_RIMInformation_free; +asn_struct_print_f S1AP_RIMInformation_print; +asn_constr_check_f S1AP_RIMInformation_constraint; +ber_type_decoder_f S1AP_RIMInformation_decode_ber; +der_type_encoder_f S1AP_RIMInformation_encode_der; +xer_type_decoder_f S1AP_RIMInformation_decode_xer; +xer_type_encoder_f S1AP_RIMInformation_encode_xer; +oer_type_decoder_f S1AP_RIMInformation_decode_oer; +oer_type_encoder_f S1AP_RIMInformation_encode_oer; +per_type_decoder_f S1AP_RIMInformation_decode_uper; +per_type_encoder_f S1AP_RIMInformation_encode_uper; +per_type_decoder_f S1AP_RIMInformation_decode_aper; +per_type_encoder_f S1AP_RIMInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RIMInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.c b/lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.c new file mode 100644 index 0000000000..4f50251485 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.c @@ -0,0 +1,111 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RIMRoutingAddress.h" + +#include "S1AP_GERAN-Cell-ID.h" +#include "S1AP_TargetRNC-ID.h" +static int +memb_S1AP_eHRPD_Sector_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_eHRPD_Sector_ID_constr_5 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +static asn_per_constraints_t asn_PER_memb_S1AP_eHRPD_Sector_ID_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_type_S1AP_RIMRoutingAddress_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_RIMRoutingAddress_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_RIMRoutingAddress_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_RIMRoutingAddress, choice.gERAN_Cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GERAN_Cell_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gERAN-Cell-ID" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_RIMRoutingAddress, choice.targetRNC_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TargetRNC_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "targetRNC-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RIMRoutingAddress, choice.eHRPD_Sector_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { &asn_OER_memb_S1AP_eHRPD_Sector_ID_constr_5, &asn_PER_memb_S1AP_eHRPD_Sector_ID_constr_5, memb_S1AP_eHRPD_Sector_ID_constraint_1 }, + 0, 0, /* No default value */ + "eHRPD-Sector-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RIMRoutingAddress_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gERAN-Cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* targetRNC-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* eHRPD-Sector-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_RIMRoutingAddress_specs_1 = { + sizeof(struct S1AP_RIMRoutingAddress), + offsetof(struct S1AP_RIMRoutingAddress, _asn_ctx), + offsetof(struct S1AP_RIMRoutingAddress, present), + sizeof(((struct S1AP_RIMRoutingAddress *)0)->present), + asn_MAP_S1AP_RIMRoutingAddress_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RIMRoutingAddress = { + "RIMRoutingAddress", + "RIMRoutingAddress", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_RIMRoutingAddress_constr_1, &asn_PER_type_S1AP_RIMRoutingAddress_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_RIMRoutingAddress_1, + 3, /* Elements count */ + &asn_SPC_S1AP_RIMRoutingAddress_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.h b/lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.h new file mode 100644 index 0000000000..3b38b6d555 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RIMRoutingAddress.h @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RIMRoutingAddress_H_ +#define _S1AP_RIMRoutingAddress_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_RIMRoutingAddress_PR { + RIMRoutingAddress_PR_NOTHING, /* No components present */ + RIMRoutingAddress_PR_gERAN_Cell_ID, + /* Extensions may appear below */ + RIMRoutingAddress_PR_targetRNC_ID, + RIMRoutingAddress_PR_eHRPD_Sector_ID +} S1AP_RIMRoutingAddress_PR; + +/* Forward declarations */ +struct S1AP_GERAN_Cell_ID; +struct S1AP_TargetRNC_ID; + +/* S1AP_RIMRoutingAddress */ +typedef struct S1AP_RIMRoutingAddress { + S1AP_RIMRoutingAddress_PR present; + union S1AP_RIMRoutingAddress_u { + struct S1AP_GERAN_Cell_ID *gERAN_Cell_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + struct S1AP_TargetRNC_ID *targetRNC_ID; + OCTET_STRING_t eHRPD_Sector_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RIMRoutingAddress_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RIMRoutingAddress; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_RIMRoutingAddress_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_RIMRoutingAddress_1[3]; +extern asn_per_constraints_t asn_PER_type_S1AP_RIMRoutingAddress_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RIMRoutingAddress_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RIMTransfer.c b/lib/s1ap3/asn1c/S1AP_RIMTransfer.c new file mode 100644 index 0000000000..9bb6216c2f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RIMTransfer.c @@ -0,0 +1,74 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RIMTransfer.h" + +#include "S1AP_RIMRoutingAddress.h" +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_RIMTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RIMTransfer, rIMInformation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RIMInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rIMInformation" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_RIMTransfer, rIMRoutingAddress), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_RIMRoutingAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rIMRoutingAddress" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_RIMTransfer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P85, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_RIMTransfer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_RIMTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RIMTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rIMInformation */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rIMRoutingAddress */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RIMTransfer_specs_1 = { + sizeof(struct S1AP_RIMTransfer), + offsetof(struct S1AP_RIMTransfer, _asn_ctx), + asn_MAP_S1AP_RIMTransfer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_RIMTransfer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RIMTransfer = { + "RIMTransfer", + "RIMTransfer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RIMTransfer_tags_1, + sizeof(asn_DEF_S1AP_RIMTransfer_tags_1) + /sizeof(asn_DEF_S1AP_RIMTransfer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RIMTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RIMTransfer_tags_1) + /sizeof(asn_DEF_S1AP_RIMTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RIMTransfer_1, + 3, /* Elements count */ + &asn_SPC_S1AP_RIMTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RIMTransfer.h b/lib/s1ap3/asn1c/S1AP_RIMTransfer.h new file mode 100644 index 0000000000..5b0c5ec984 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RIMTransfer.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RIMTransfer_H_ +#define _S1AP_RIMTransfer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_RIMInformation.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_RIMRoutingAddress; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_RIMTransfer */ +typedef struct S1AP_RIMTransfer { + S1AP_RIMInformation_t rIMInformation; + struct S1AP_RIMRoutingAddress *rIMRoutingAddress; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RIMTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RIMTransfer; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RIMTransfer_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_RIMTransfer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RIMTransfer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RLFReportInformation.c b/lib/s1ap3/asn1c/S1AP_RLFReportInformation.c new file mode 100644 index 0000000000..7a58740e3b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RLFReportInformation.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RLFReportInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_RLFReportInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RLFReportInformation, uE_RLF_Report_Container), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_UE_RLF_Report_Container, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uE-RLF-Report-Container" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_RLFReportInformation, uE_RLF_Report_Container_for_extended_bands), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uE-RLF-Report-Container-for-extended-bands" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_RLFReportInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P86, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_RLFReportInformation_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_RLFReportInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RLFReportInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uE-RLF-Report-Container */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uE-RLF-Report-Container-for-extended-bands */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RLFReportInformation_specs_1 = { + sizeof(struct S1AP_RLFReportInformation), + offsetof(struct S1AP_RLFReportInformation, _asn_ctx), + asn_MAP_S1AP_RLFReportInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_RLFReportInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RLFReportInformation = { + "RLFReportInformation", + "RLFReportInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RLFReportInformation_tags_1, + sizeof(asn_DEF_S1AP_RLFReportInformation_tags_1) + /sizeof(asn_DEF_S1AP_RLFReportInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RLFReportInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RLFReportInformation_tags_1) + /sizeof(asn_DEF_S1AP_RLFReportInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RLFReportInformation_1, + 3, /* Elements count */ + &asn_SPC_S1AP_RLFReportInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RLFReportInformation.h b/lib/s1ap3/asn1c/S1AP_RLFReportInformation.h new file mode 100644 index 0000000000..e70deacc58 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RLFReportInformation.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RLFReportInformation_H_ +#define _S1AP_RLFReportInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_UE-RLF-Report-Container.h" +#include "S1AP_UE-RLF-Report-Container-for-extended-bands.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_RLFReportInformation */ +typedef struct S1AP_RLFReportInformation { + S1AP_UE_RLF_Report_Container_t uE_RLF_Report_Container; + S1AP_UE_RLF_Report_Container_for_extended_bands_t *uE_RLF_Report_Container_for_extended_bands; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RLFReportInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RLFReportInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RLFReportInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_RLFReportInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RLFReportInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RNC-ID.c b/lib/s1ap3/asn1c/S1AP_RNC-ID.c new file mode 100644 index 0000000000..cdf9e1ec10 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RNC-ID.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RNC-ID.h" + +int +S1AP_RNC_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_RNC_ID_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_RNC_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RNC_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RNC_ID = { + "RNC-ID", + "RNC-ID", + &asn_OP_NativeInteger, + asn_DEF_S1AP_RNC_ID_tags_1, + sizeof(asn_DEF_S1AP_RNC_ID_tags_1) + /sizeof(asn_DEF_S1AP_RNC_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RNC_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RNC_ID_tags_1) + /sizeof(asn_DEF_S1AP_RNC_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_RNC_ID_constr_1, &asn_PER_type_S1AP_RNC_ID_constr_1, S1AP_RNC_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RNC-ID.h b/lib/s1ap3/asn1c/S1AP_RNC-ID.h new file mode 100644 index 0000000000..b0121a7e5d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RNC-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RNC_ID_H_ +#define _S1AP_RNC_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_RNC-ID */ +typedef long S1AP_RNC_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_RNC_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RNC_ID; +asn_struct_free_f S1AP_RNC_ID_free; +asn_struct_print_f S1AP_RNC_ID_print; +asn_constr_check_f S1AP_RNC_ID_constraint; +ber_type_decoder_f S1AP_RNC_ID_decode_ber; +der_type_encoder_f S1AP_RNC_ID_encode_der; +xer_type_decoder_f S1AP_RNC_ID_decode_xer; +xer_type_encoder_f S1AP_RNC_ID_encode_xer; +oer_type_decoder_f S1AP_RNC_ID_decode_oer; +oer_type_encoder_f S1AP_RNC_ID_encode_oer; +per_type_decoder_f S1AP_RNC_ID_decode_uper; +per_type_encoder_f S1AP_RNC_ID_encode_uper; +per_type_decoder_f S1AP_RNC_ID_decode_aper; +per_type_encoder_f S1AP_RNC_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RNC_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RRC-Container.c b/lib/s1ap3/asn1c/S1AP_RRC-Container.c new file mode 100644 index 0000000000..c051f57b25 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RRC-Container.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RRC-Container.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_RRC_Container_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RRC_Container = { + "RRC-Container", + "RRC-Container", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_RRC_Container_tags_1, + sizeof(asn_DEF_S1AP_RRC_Container_tags_1) + /sizeof(asn_DEF_S1AP_RRC_Container_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RRC_Container_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RRC_Container_tags_1) + /sizeof(asn_DEF_S1AP_RRC_Container_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RRC-Container.h b/lib/s1ap3/asn1c/S1AP_RRC-Container.h new file mode 100644 index 0000000000..552f571555 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RRC-Container.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RRC_Container_H_ +#define _S1AP_RRC_Container_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_RRC-Container */ +typedef OCTET_STRING_t S1AP_RRC_Container_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RRC_Container; +asn_struct_free_f S1AP_RRC_Container_free; +asn_struct_print_f S1AP_RRC_Container_print; +asn_constr_check_f S1AP_RRC_Container_constraint; +ber_type_decoder_f S1AP_RRC_Container_decode_ber; +der_type_encoder_f S1AP_RRC_Container_encode_der; +xer_type_decoder_f S1AP_RRC_Container_decode_xer; +xer_type_encoder_f S1AP_RRC_Container_encode_xer; +oer_type_decoder_f S1AP_RRC_Container_decode_oer; +oer_type_encoder_f S1AP_RRC_Container_encode_oer; +per_type_decoder_f S1AP_RRC_Container_decode_uper; +per_type_encoder_f S1AP_RRC_Container_encode_uper; +per_type_decoder_f S1AP_RRC_Container_decode_aper; +per_type_encoder_f S1AP_RRC_Container_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RRC_Container_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RRC-Establishment-Cause.c b/lib/s1ap3/asn1c/S1AP_RRC-Establishment-Cause.c new file mode 100644 index 0000000000..5db0146fe3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RRC-Establishment-Cause.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RRC-Establishment-Cause.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_RRC_Establishment_Cause_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_RRC_Establishment_Cause_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_RRC_Establishment_Cause_value2enum_1[] = { + { 0, 9, "emergency" }, + { 1, 18, "highPriorityAccess" }, + { 2, 9, "mt-Access" }, + { 3, 13, "mo-Signalling" }, + { 4, 7, "mo-Data" }, + { 5, 20, "delay-TolerantAccess" }, + { 6, 12, "mo-VoiceCall" }, + { 7, 16, "mo-ExceptionData" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_RRC_Establishment_Cause_enum2value_1[] = { + 5, /* delay-TolerantAccess(5) */ + 0, /* emergency(0) */ + 1, /* highPriorityAccess(1) */ + 4, /* mo-Data(4) */ + 7, /* mo-ExceptionData(7) */ + 3, /* mo-Signalling(3) */ + 6, /* mo-VoiceCall(6) */ + 2 /* mt-Access(2) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_RRC_Establishment_Cause_specs_1 = { + asn_MAP_S1AP_RRC_Establishment_Cause_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_RRC_Establishment_Cause_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RRC_Establishment_Cause_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RRC_Establishment_Cause = { + "RRC-Establishment-Cause", + "RRC-Establishment-Cause", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_RRC_Establishment_Cause_tags_1, + sizeof(asn_DEF_S1AP_RRC_Establishment_Cause_tags_1) + /sizeof(asn_DEF_S1AP_RRC_Establishment_Cause_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RRC_Establishment_Cause_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RRC_Establishment_Cause_tags_1) + /sizeof(asn_DEF_S1AP_RRC_Establishment_Cause_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_RRC_Establishment_Cause_constr_1, &asn_PER_type_S1AP_RRC_Establishment_Cause_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_RRC_Establishment_Cause_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RRC-Establishment-Cause.h b/lib/s1ap3/asn1c/S1AP_RRC-Establishment-Cause.h new file mode 100644 index 0000000000..eadfd85714 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RRC-Establishment-Cause.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RRC_Establishment_Cause_H_ +#define _S1AP_RRC_Establishment_Cause_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_RRC_Establishment_Cause { + S1AP_RRC_Establishment_Cause_emergency = 0, + S1AP_RRC_Establishment_Cause_highPriorityAccess = 1, + S1AP_RRC_Establishment_Cause_mt_Access = 2, + S1AP_RRC_Establishment_Cause_mo_Signalling = 3, + S1AP_RRC_Establishment_Cause_mo_Data = 4, + /* + * Enumeration is extensible + */ + S1AP_RRC_Establishment_Cause_delay_TolerantAccess = 5, + S1AP_RRC_Establishment_Cause_mo_VoiceCall = 6, + S1AP_RRC_Establishment_Cause_mo_ExceptionData = 7 +} e_S1AP_RRC_Establishment_Cause; + +/* S1AP_RRC-Establishment-Cause */ +typedef long S1AP_RRC_Establishment_Cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RRC_Establishment_Cause; +asn_struct_free_f S1AP_RRC_Establishment_Cause_free; +asn_struct_print_f S1AP_RRC_Establishment_Cause_print; +asn_constr_check_f S1AP_RRC_Establishment_Cause_constraint; +ber_type_decoder_f S1AP_RRC_Establishment_Cause_decode_ber; +der_type_encoder_f S1AP_RRC_Establishment_Cause_encode_der; +xer_type_decoder_f S1AP_RRC_Establishment_Cause_decode_xer; +xer_type_encoder_f S1AP_RRC_Establishment_Cause_encode_xer; +oer_type_decoder_f S1AP_RRC_Establishment_Cause_decode_oer; +oer_type_encoder_f S1AP_RRC_Establishment_Cause_encode_oer; +per_type_decoder_f S1AP_RRC_Establishment_Cause_decode_uper; +per_type_encoder_f S1AP_RRC_Establishment_Cause_encode_uper; +per_type_decoder_f S1AP_RRC_Establishment_Cause_decode_aper; +per_type_encoder_f S1AP_RRC_Establishment_Cause_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RRC_Establishment_Cause_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsExtended.c b/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsExtended.c new file mode 100644 index 0000000000..8e291df391 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsExtended.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ReceiveStatusOfULPDCPSDUsExtended.h" + +int +S1AP_ReceiveStatusOfULPDCPSDUsExtended_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 16384)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ReceiveStatusOfULPDCPSDUsExtended_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16384)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_ReceiveStatusOfULPDCPSDUsExtended_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended = { + "ReceiveStatusOfULPDCPSDUsExtended", + "ReceiveStatusOfULPDCPSDUsExtended", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended_tags_1, + sizeof(asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended_tags_1) + /sizeof(asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended_tags_1) + /sizeof(asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ReceiveStatusOfULPDCPSDUsExtended_constr_1, &asn_PER_type_S1AP_ReceiveStatusOfULPDCPSDUsExtended_constr_1, S1AP_ReceiveStatusOfULPDCPSDUsExtended_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsExtended.h b/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsExtended.h new file mode 100644 index 0000000000..46cab775d3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsExtended.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ReceiveStatusOfULPDCPSDUsExtended_H_ +#define _S1AP_ReceiveStatusOfULPDCPSDUsExtended_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ReceiveStatusOfULPDCPSDUsExtended */ +typedef BIT_STRING_t S1AP_ReceiveStatusOfULPDCPSDUsExtended_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsExtended; +asn_struct_free_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_free; +asn_struct_print_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_print; +asn_constr_check_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_constraint; +ber_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_decode_ber; +der_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_encode_der; +xer_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_decode_xer; +xer_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_encode_xer; +oer_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_decode_oer; +oer_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_encode_oer; +per_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_decode_uper; +per_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_encode_uper; +per_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_decode_aper; +per_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsExtended_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ReceiveStatusOfULPDCPSDUsExtended_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c b/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c new file mode 100644 index 0000000000..d3721a556b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h" + +int +S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 131072)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..131072)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 17, -1, 1, 131072 } /* (SIZE(1..131072)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 = { + "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18", + "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1, + sizeof(asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1, &asn_PER_type_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1, S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h b/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h new file mode 100644 index 0000000000..c1a4943ca9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_H_ +#define _S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 */ +typedef BIT_STRING_t S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18; +asn_struct_free_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_free; +asn_struct_print_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_print; +asn_constr_check_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constraint; +ber_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_ber; +der_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_der; +xer_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_xer; +xer_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_xer; +oer_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_oer; +oer_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_oer; +per_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_uper; +per_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_uper; +per_type_decoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_aper; +per_type_encoder_f S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ReceiveStatusofULPDCPSDUs.c b/lib/s1ap3/asn1c/S1AP_ReceiveStatusofULPDCPSDUs.c new file mode 100644 index 0000000000..c4f6cdfa86 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReceiveStatusofULPDCPSDUs.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ReceiveStatusofULPDCPSDUs.h" + +int +S1AP_ReceiveStatusofULPDCPSDUs_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 4096)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ReceiveStatusofULPDCPSDUs_constr_1 CC_NOTUSED = { + { 0, 0 }, + 4096 /* (SIZE(4096..4096)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ReceiveStatusofULPDCPSDUs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4096, 4096 } /* (SIZE(4096..4096)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs = { + "ReceiveStatusofULPDCPSDUs", + "ReceiveStatusofULPDCPSDUs", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs_tags_1, + sizeof(asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs_tags_1) + /sizeof(asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs_tags_1) + /sizeof(asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ReceiveStatusofULPDCPSDUs_constr_1, &asn_PER_type_S1AP_ReceiveStatusofULPDCPSDUs_constr_1, S1AP_ReceiveStatusofULPDCPSDUs_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ReceiveStatusofULPDCPSDUs.h b/lib/s1ap3/asn1c/S1AP_ReceiveStatusofULPDCPSDUs.h new file mode 100644 index 0000000000..f3ecb31070 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReceiveStatusofULPDCPSDUs.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ReceiveStatusofULPDCPSDUs_H_ +#define _S1AP_ReceiveStatusofULPDCPSDUs_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ReceiveStatusofULPDCPSDUs */ +typedef BIT_STRING_t S1AP_ReceiveStatusofULPDCPSDUs_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ReceiveStatusofULPDCPSDUs_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ReceiveStatusofULPDCPSDUs; +asn_struct_free_f S1AP_ReceiveStatusofULPDCPSDUs_free; +asn_struct_print_f S1AP_ReceiveStatusofULPDCPSDUs_print; +asn_constr_check_f S1AP_ReceiveStatusofULPDCPSDUs_constraint; +ber_type_decoder_f S1AP_ReceiveStatusofULPDCPSDUs_decode_ber; +der_type_encoder_f S1AP_ReceiveStatusofULPDCPSDUs_encode_der; +xer_type_decoder_f S1AP_ReceiveStatusofULPDCPSDUs_decode_xer; +xer_type_encoder_f S1AP_ReceiveStatusofULPDCPSDUs_encode_xer; +oer_type_decoder_f S1AP_ReceiveStatusofULPDCPSDUs_decode_oer; +oer_type_encoder_f S1AP_ReceiveStatusofULPDCPSDUs_encode_oer; +per_type_decoder_f S1AP_ReceiveStatusofULPDCPSDUs_decode_uper; +per_type_encoder_f S1AP_ReceiveStatusofULPDCPSDUs_encode_uper; +per_type_decoder_f S1AP_ReceiveStatusofULPDCPSDUs_decode_aper; +per_type_encoder_f S1AP_ReceiveStatusofULPDCPSDUs_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ReceiveStatusofULPDCPSDUs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedCellItem.c b/lib/s1ap3/asn1c/S1AP_RecommendedCellItem.c new file mode 100644 index 0000000000..20642bdd12 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedCellItem.c @@ -0,0 +1,106 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RecommendedCellItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static int +memb_S1AP_timeStayedInCell_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_timeStayedInCell_constr_3 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_timeStayedInCell_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellItem, eUTRAN_CGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRAN-CGI" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_RecommendedCellItem, timeStayedInCell), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_S1AP_timeStayedInCell_constr_3, &asn_PER_memb_S1AP_timeStayedInCell_constr_3, memb_S1AP_timeStayedInCell_constraint_1 }, + 0, 0, /* No default value */ + "timeStayedInCell" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_RecommendedCellItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P81, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_RecommendedCellItem_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedCellItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedCellItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eUTRAN-CGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeStayedInCell */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedCellItem_specs_1 = { + sizeof(struct S1AP_RecommendedCellItem), + offsetof(struct S1AP_RecommendedCellItem, _asn_ctx), + asn_MAP_S1AP_RecommendedCellItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_RecommendedCellItem_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellItem = { + "RecommendedCellItem", + "RecommendedCellItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedCellItem_tags_1, + sizeof(asn_DEF_S1AP_RecommendedCellItem_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedCellItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RecommendedCellItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedCellItem_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedCellItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedCellItem_1, + 3, /* Elements count */ + &asn_SPC_S1AP_RecommendedCellItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedCellItem.h b/lib/s1ap3/asn1c/S1AP_RecommendedCellItem.h new file mode 100644 index 0000000000..0a1cc1ceb1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedCellItem.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RecommendedCellItem_H_ +#define _S1AP_RecommendedCellItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_RecommendedCellItem */ +typedef struct S1AP_RecommendedCellItem { + S1AP_EUTRAN_CGI_t eUTRAN_CGI; + long *timeStayedInCell; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedCellItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RecommendedCellItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedCellList.c b/lib/s1ap3/asn1c/S1AP_RecommendedCellList.c new file mode 100644 index 0000000000..c0fc33d183 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedCellList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RecommendedCellList.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_RecommendedCellList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +asn_per_constraints_t asn_PER_type_S1AP_RecommendedCellList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedCellList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_RecommendedCellList_specs_1 = { + sizeof(struct S1AP_RecommendedCellList), + offsetof(struct S1AP_RecommendedCellList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellList = { + "RecommendedCellList", + "RecommendedCellList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_RecommendedCellList_tags_1, + sizeof(asn_DEF_S1AP_RecommendedCellList_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedCellList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RecommendedCellList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedCellList_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedCellList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_RecommendedCellList_constr_1, &asn_PER_type_S1AP_RecommendedCellList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_RecommendedCellList_1, + 1, /* Single element */ + &asn_SPC_S1AP_RecommendedCellList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedCellList.h b/lib/s1ap3/asn1c/S1AP_RecommendedCellList.h new file mode 100644 index 0000000000..676fd42534 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedCellList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RecommendedCellList_H_ +#define _S1AP_RecommendedCellList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_RecommendedCellList */ +typedef struct S1AP_RecommendedCellList { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedCellList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellList; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_RecommendedCellList_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellList_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_RecommendedCellList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RecommendedCellList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedCellsForPaging.c b/lib/s1ap3/asn1c/S1AP_RecommendedCellsForPaging.c new file mode 100644 index 0000000000..a2d52c4b62 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedCellsForPaging.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RecommendedCellsForPaging.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellsForPaging_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedCellsForPaging, recommendedCellList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RecommendedCellList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "recommendedCellList" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_RecommendedCellsForPaging, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P80, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_RecommendedCellsForPaging_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedCellsForPaging_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedCellsForPaging_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* recommendedCellList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedCellsForPaging_specs_1 = { + sizeof(struct S1AP_RecommendedCellsForPaging), + offsetof(struct S1AP_RecommendedCellsForPaging, _asn_ctx), + asn_MAP_S1AP_RecommendedCellsForPaging_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_RecommendedCellsForPaging_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellsForPaging = { + "RecommendedCellsForPaging", + "RecommendedCellsForPaging", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedCellsForPaging_tags_1, + sizeof(asn_DEF_S1AP_RecommendedCellsForPaging_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedCellsForPaging_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RecommendedCellsForPaging_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedCellsForPaging_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedCellsForPaging_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedCellsForPaging_1, + 2, /* Elements count */ + &asn_SPC_S1AP_RecommendedCellsForPaging_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedCellsForPaging.h b/lib/s1ap3/asn1c/S1AP_RecommendedCellsForPaging.h new file mode 100644 index 0000000000..24e70ecb72 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedCellsForPaging.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RecommendedCellsForPaging_H_ +#define _S1AP_RecommendedCellsForPaging_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_RecommendedCellList.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_RecommendedCellsForPaging */ +typedef struct S1AP_RecommendedCellsForPaging { + S1AP_RecommendedCellList_t recommendedCellList; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedCellsForPaging_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedCellsForPaging; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedCellsForPaging_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedCellsForPaging_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RecommendedCellsForPaging_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedENBItem.c b/lib/s1ap3/asn1c/S1AP_RecommendedENBItem.c new file mode 100644 index 0000000000..c645e3edb6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedENBItem.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RecommendedENBItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBItem, mMEPagingTarget), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_MMEPagingTarget, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mMEPagingTarget" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_RecommendedENBItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P83, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_RecommendedENBItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedENBItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedENBItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mMEPagingTarget */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedENBItem_specs_1 = { + sizeof(struct S1AP_RecommendedENBItem), + offsetof(struct S1AP_RecommendedENBItem, _asn_ctx), + asn_MAP_S1AP_RecommendedENBItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_RecommendedENBItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBItem = { + "RecommendedENBItem", + "RecommendedENBItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedENBItem_tags_1, + sizeof(asn_DEF_S1AP_RecommendedENBItem_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedENBItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RecommendedENBItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedENBItem_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedENBItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedENBItem_1, + 2, /* Elements count */ + &asn_SPC_S1AP_RecommendedENBItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedENBItem.h b/lib/s1ap3/asn1c/S1AP_RecommendedENBItem.h new file mode 100644 index 0000000000..84be57680d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedENBItem.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RecommendedENBItem_H_ +#define _S1AP_RecommendedENBItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MMEPagingTarget.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_RecommendedENBItem */ +typedef struct S1AP_RecommendedENBItem { + S1AP_MMEPagingTarget_t mMEPagingTarget; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedENBItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RecommendedENBItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedENBList.c b/lib/s1ap3/asn1c/S1AP_RecommendedENBList.c new file mode 100644 index 0000000000..b5203c7b6d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedENBList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RecommendedENBList.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_RecommendedENBList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +asn_per_constraints_t asn_PER_type_S1AP_RecommendedENBList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedENBList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_RecommendedENBList_specs_1 = { + sizeof(struct S1AP_RecommendedENBList), + offsetof(struct S1AP_RecommendedENBList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBList = { + "RecommendedENBList", + "RecommendedENBList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_RecommendedENBList_tags_1, + sizeof(asn_DEF_S1AP_RecommendedENBList_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedENBList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RecommendedENBList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedENBList_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedENBList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_RecommendedENBList_constr_1, &asn_PER_type_S1AP_RecommendedENBList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_RecommendedENBList_1, + 1, /* Single element */ + &asn_SPC_S1AP_RecommendedENBList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedENBList.h b/lib/s1ap3/asn1c/S1AP_RecommendedENBList.h new file mode 100644 index 0000000000..cf5e7b8970 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedENBList.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RecommendedENBList_H_ +#define _S1AP_RecommendedENBList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_RecommendedENBList */ +typedef struct S1AP_RecommendedENBList { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedENBList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBList; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_RecommendedENBList_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBList_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_RecommendedENBList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RecommendedENBList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedENBsForPaging.c b/lib/s1ap3/asn1c/S1AP_RecommendedENBsForPaging.c new file mode 100644 index 0000000000..4d19ee7aed --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedENBsForPaging.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RecommendedENBsForPaging.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBsForPaging_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RecommendedENBsForPaging, recommendedENBList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RecommendedENBList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "recommendedENBList" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_RecommendedENBsForPaging, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P82, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_RecommendedENBsForPaging_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_RecommendedENBsForPaging_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RecommendedENBsForPaging_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* recommendedENBList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedENBsForPaging_specs_1 = { + sizeof(struct S1AP_RecommendedENBsForPaging), + offsetof(struct S1AP_RecommendedENBsForPaging, _asn_ctx), + asn_MAP_S1AP_RecommendedENBsForPaging_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_RecommendedENBsForPaging_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBsForPaging = { + "RecommendedENBsForPaging", + "RecommendedENBsForPaging", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RecommendedENBsForPaging_tags_1, + sizeof(asn_DEF_S1AP_RecommendedENBsForPaging_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedENBsForPaging_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RecommendedENBsForPaging_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RecommendedENBsForPaging_tags_1) + /sizeof(asn_DEF_S1AP_RecommendedENBsForPaging_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RecommendedENBsForPaging_1, + 2, /* Elements count */ + &asn_SPC_S1AP_RecommendedENBsForPaging_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RecommendedENBsForPaging.h b/lib/s1ap3/asn1c/S1AP_RecommendedENBsForPaging.h new file mode 100644 index 0000000000..7d400facf5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RecommendedENBsForPaging.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RecommendedENBsForPaging_H_ +#define _S1AP_RecommendedENBsForPaging_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_RecommendedENBList.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_RecommendedENBsForPaging */ +typedef struct S1AP_RecommendedENBsForPaging { + S1AP_RecommendedENBList_t recommendedENBList; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RecommendedENBsForPaging_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RecommendedENBsForPaging; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RecommendedENBsForPaging_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_RecommendedENBsForPaging_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RecommendedENBsForPaging_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.c b/lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.c new file mode 100644 index 0000000000..fbf8aec62f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RelativeMMECapacity.h" + +int +S1AP_RelativeMMECapacity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_RelativeMMECapacity_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_RelativeMMECapacity_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RelativeMMECapacity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RelativeMMECapacity = { + "RelativeMMECapacity", + "RelativeMMECapacity", + &asn_OP_NativeInteger, + asn_DEF_S1AP_RelativeMMECapacity_tags_1, + sizeof(asn_DEF_S1AP_RelativeMMECapacity_tags_1) + /sizeof(asn_DEF_S1AP_RelativeMMECapacity_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RelativeMMECapacity_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RelativeMMECapacity_tags_1) + /sizeof(asn_DEF_S1AP_RelativeMMECapacity_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_RelativeMMECapacity_constr_1, &asn_PER_type_S1AP_RelativeMMECapacity_constr_1, S1AP_RelativeMMECapacity_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.h b/lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.h new file mode 100644 index 0000000000..9d0e0dbe8d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RelativeMMECapacity.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RelativeMMECapacity_H_ +#define _S1AP_RelativeMMECapacity_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_RelativeMMECapacity */ +typedef long S1AP_RelativeMMECapacity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_RelativeMMECapacity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RelativeMMECapacity; +asn_struct_free_f S1AP_RelativeMMECapacity_free; +asn_struct_print_f S1AP_RelativeMMECapacity_print; +asn_constr_check_f S1AP_RelativeMMECapacity_constraint; +ber_type_decoder_f S1AP_RelativeMMECapacity_decode_ber; +der_type_encoder_f S1AP_RelativeMMECapacity_encode_der; +xer_type_decoder_f S1AP_RelativeMMECapacity_decode_xer; +xer_type_encoder_f S1AP_RelativeMMECapacity_encode_xer; +oer_type_decoder_f S1AP_RelativeMMECapacity_decode_oer; +oer_type_encoder_f S1AP_RelativeMMECapacity_encode_oer; +per_type_decoder_f S1AP_RelativeMMECapacity_decode_uper; +per_type_encoder_f S1AP_RelativeMMECapacity_encode_uper; +per_type_decoder_f S1AP_RelativeMMECapacity_decode_aper; +per_type_encoder_f S1AP_RelativeMMECapacity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RelativeMMECapacity_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.c b/lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.c new file mode 100644 index 0000000000..01b6bbfc96 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RelayNode-Indicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_RelayNode_Indicator_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_RelayNode_Indicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_RelayNode_Indicator_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_RelayNode_Indicator_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_RelayNode_Indicator_specs_1 = { + asn_MAP_S1AP_RelayNode_Indicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_RelayNode_Indicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RelayNode_Indicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RelayNode_Indicator = { + "RelayNode-Indicator", + "RelayNode-Indicator", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_RelayNode_Indicator_tags_1, + sizeof(asn_DEF_S1AP_RelayNode_Indicator_tags_1) + /sizeof(asn_DEF_S1AP_RelayNode_Indicator_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RelayNode_Indicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RelayNode_Indicator_tags_1) + /sizeof(asn_DEF_S1AP_RelayNode_Indicator_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_RelayNode_Indicator_constr_1, &asn_PER_type_S1AP_RelayNode_Indicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_RelayNode_Indicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.h b/lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.h new file mode 100644 index 0000000000..1ff683f8da --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RelayNode-Indicator.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RelayNode_Indicator_H_ +#define _S1AP_RelayNode_Indicator_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_RelayNode_Indicator { + S1AP_RelayNode_Indicator_true = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_RelayNode_Indicator; + +/* S1AP_RelayNode-Indicator */ +typedef long S1AP_RelayNode_Indicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RelayNode_Indicator; +asn_struct_free_f S1AP_RelayNode_Indicator_free; +asn_struct_print_f S1AP_RelayNode_Indicator_print; +asn_constr_check_f S1AP_RelayNode_Indicator_constraint; +ber_type_decoder_f S1AP_RelayNode_Indicator_decode_ber; +der_type_encoder_f S1AP_RelayNode_Indicator_encode_der; +xer_type_decoder_f S1AP_RelayNode_Indicator_decode_xer; +xer_type_encoder_f S1AP_RelayNode_Indicator_encode_xer; +oer_type_decoder_f S1AP_RelayNode_Indicator_decode_oer; +oer_type_encoder_f S1AP_RelayNode_Indicator_encode_oer; +per_type_decoder_f S1AP_RelayNode_Indicator_decode_uper; +per_type_encoder_f S1AP_RelayNode_Indicator_encode_uper; +per_type_decoder_f S1AP_RelayNode_Indicator_decode_aper; +per_type_encoder_f S1AP_RelayNode_Indicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RelayNode_Indicator_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RepetitionPeriod.c b/lib/s1ap3/asn1c/S1AP_RepetitionPeriod.c new file mode 100644 index 0000000000..f01e1415d3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RepetitionPeriod.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RepetitionPeriod.h" + +int +S1AP_RepetitionPeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_RepetitionPeriod_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_RepetitionPeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RepetitionPeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RepetitionPeriod = { + "RepetitionPeriod", + "RepetitionPeriod", + &asn_OP_NativeInteger, + asn_DEF_S1AP_RepetitionPeriod_tags_1, + sizeof(asn_DEF_S1AP_RepetitionPeriod_tags_1) + /sizeof(asn_DEF_S1AP_RepetitionPeriod_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RepetitionPeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RepetitionPeriod_tags_1) + /sizeof(asn_DEF_S1AP_RepetitionPeriod_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_RepetitionPeriod_constr_1, &asn_PER_type_S1AP_RepetitionPeriod_constr_1, S1AP_RepetitionPeriod_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RepetitionPeriod.h b/lib/s1ap3/asn1c/S1AP_RepetitionPeriod.h new file mode 100644 index 0000000000..ed557ce902 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RepetitionPeriod.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RepetitionPeriod_H_ +#define _S1AP_RepetitionPeriod_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_RepetitionPeriod */ +typedef long S1AP_RepetitionPeriod_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RepetitionPeriod; +asn_struct_free_f S1AP_RepetitionPeriod_free; +asn_struct_print_f S1AP_RepetitionPeriod_print; +asn_constr_check_f S1AP_RepetitionPeriod_constraint; +ber_type_decoder_f S1AP_RepetitionPeriod_decode_ber; +der_type_encoder_f S1AP_RepetitionPeriod_encode_der; +xer_type_decoder_f S1AP_RepetitionPeriod_decode_xer; +xer_type_encoder_f S1AP_RepetitionPeriod_encode_xer; +oer_type_decoder_f S1AP_RepetitionPeriod_decode_oer; +oer_type_encoder_f S1AP_RepetitionPeriod_encode_oer; +per_type_decoder_f S1AP_RepetitionPeriod_decode_uper; +per_type_encoder_f S1AP_RepetitionPeriod_encode_uper; +per_type_decoder_f S1AP_RepetitionPeriod_decode_aper; +per_type_encoder_f S1AP_RepetitionPeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RepetitionPeriod_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ReportAmountMDT.c b/lib/s1ap3/asn1c/S1AP_ReportAmountMDT.c new file mode 100644 index 0000000000..c34cefb5b6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReportAmountMDT.c @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ReportAmountMDT.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ReportAmountMDT_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ReportAmountMDT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ReportAmountMDT_value2enum_1[] = { + { 0, 2, "r1" }, + { 1, 2, "r2" }, + { 2, 2, "r4" }, + { 3, 2, "r8" }, + { 4, 3, "r16" }, + { 5, 3, "r32" }, + { 6, 3, "r64" }, + { 7, 9, "rinfinity" } +}; +static const unsigned int asn_MAP_S1AP_ReportAmountMDT_enum2value_1[] = { + 0, /* r1(0) */ + 4, /* r16(4) */ + 1, /* r2(1) */ + 5, /* r32(5) */ + 2, /* r4(2) */ + 6, /* r64(6) */ + 3, /* r8(3) */ + 7 /* rinfinity(7) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_ReportAmountMDT_specs_1 = { + asn_MAP_S1AP_ReportAmountMDT_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ReportAmountMDT_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ReportAmountMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ReportAmountMDT = { + "ReportAmountMDT", + "ReportAmountMDT", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ReportAmountMDT_tags_1, + sizeof(asn_DEF_S1AP_ReportAmountMDT_tags_1) + /sizeof(asn_DEF_S1AP_ReportAmountMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ReportAmountMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ReportAmountMDT_tags_1) + /sizeof(asn_DEF_S1AP_ReportAmountMDT_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ReportAmountMDT_constr_1, &asn_PER_type_S1AP_ReportAmountMDT_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ReportAmountMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ReportAmountMDT.h b/lib/s1ap3/asn1c/S1AP_ReportAmountMDT.h new file mode 100644 index 0000000000..a27130e7c1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReportAmountMDT.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ReportAmountMDT_H_ +#define _S1AP_ReportAmountMDT_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ReportAmountMDT { + S1AP_ReportAmountMDT_r1 = 0, + S1AP_ReportAmountMDT_r2 = 1, + S1AP_ReportAmountMDT_r4 = 2, + S1AP_ReportAmountMDT_r8 = 3, + S1AP_ReportAmountMDT_r16 = 4, + S1AP_ReportAmountMDT_r32 = 5, + S1AP_ReportAmountMDT_r64 = 6, + S1AP_ReportAmountMDT_rinfinity = 7 +} e_S1AP_ReportAmountMDT; + +/* S1AP_ReportAmountMDT */ +typedef long S1AP_ReportAmountMDT_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ReportAmountMDT_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ReportAmountMDT; +extern const asn_INTEGER_specifics_t asn_SPC_ReportAmountMDT_specs_1; +asn_struct_free_f ReportAmountMDT_free; +asn_struct_print_f ReportAmountMDT_print; +asn_constr_check_f ReportAmountMDT_constraint; +ber_type_decoder_f ReportAmountMDT_decode_ber; +der_type_encoder_f ReportAmountMDT_encode_der; +xer_type_decoder_f ReportAmountMDT_decode_xer; +xer_type_encoder_f ReportAmountMDT_encode_xer; +oer_type_decoder_f ReportAmountMDT_decode_oer; +oer_type_encoder_f ReportAmountMDT_encode_oer; +per_type_decoder_f ReportAmountMDT_decode_uper; +per_type_encoder_f ReportAmountMDT_encode_uper; +per_type_decoder_f ReportAmountMDT_decode_aper; +per_type_encoder_f ReportAmountMDT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ReportAmountMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ReportArea.c b/lib/s1ap3/asn1c/S1AP_ReportArea.c new file mode 100644 index 0000000000..372cfff192 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReportArea.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ReportArea.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ReportArea_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ReportArea_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ReportArea_value2enum_1[] = { + { 0, 4, "ecgi" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_ReportArea_enum2value_1[] = { + 0 /* ecgi(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_ReportArea_specs_1 = { + asn_MAP_S1AP_ReportArea_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ReportArea_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ReportArea_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ReportArea = { + "ReportArea", + "ReportArea", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ReportArea_tags_1, + sizeof(asn_DEF_S1AP_ReportArea_tags_1) + /sizeof(asn_DEF_S1AP_ReportArea_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ReportArea_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ReportArea_tags_1) + /sizeof(asn_DEF_S1AP_ReportArea_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ReportArea_constr_1, &asn_PER_type_S1AP_ReportArea_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ReportArea_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ReportArea.h b/lib/s1ap3/asn1c/S1AP_ReportArea.h new file mode 100644 index 0000000000..fdf9090201 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReportArea.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ReportArea_H_ +#define _S1AP_ReportArea_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ReportArea { + S1AP_ReportArea_ecgi = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_ReportArea; + +/* S1AP_ReportArea */ +typedef long S1AP_ReportArea_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ReportArea_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ReportArea; +extern const asn_INTEGER_specifics_t asn_SPC_ReportArea_specs_1; +asn_struct_free_f ReportArea_free; +asn_struct_print_f ReportArea_print; +asn_constr_check_f ReportArea_constraint; +ber_type_decoder_f ReportArea_decode_ber; +der_type_encoder_f ReportArea_encode_der; +xer_type_decoder_f ReportArea_decode_xer; +xer_type_encoder_f ReportArea_encode_xer; +oer_type_decoder_f ReportArea_decode_oer; +oer_type_encoder_f ReportArea_encode_oer; +per_type_decoder_f ReportArea_decode_uper; +per_type_encoder_f ReportArea_encode_uper; +per_type_decoder_f ReportArea_decode_aper; +per_type_encoder_f ReportArea_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ReportArea_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.c b/lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.c new file mode 100644 index 0000000000..b01be87742 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ReportIntervalMDT.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ReportIntervalMDT_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ReportIntervalMDT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 12 } /* (0..12) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ReportIntervalMDT_value2enum_1[] = { + { 0, 5, "ms120" }, + { 1, 5, "ms240" }, + { 2, 5, "ms480" }, + { 3, 5, "ms640" }, + { 4, 6, "ms1024" }, + { 5, 6, "ms2048" }, + { 6, 6, "ms5120" }, + { 7, 7, "ms10240" }, + { 8, 4, "min1" }, + { 9, 4, "min6" }, + { 10, 5, "min12" }, + { 11, 5, "min30" }, + { 12, 5, "min60" } +}; +static const unsigned int asn_MAP_S1AP_ReportIntervalMDT_enum2value_1[] = { + 8, /* min1(8) */ + 10, /* min12(10) */ + 11, /* min30(11) */ + 9, /* min6(9) */ + 12, /* min60(12) */ + 4, /* ms1024(4) */ + 7, /* ms10240(7) */ + 0, /* ms120(0) */ + 5, /* ms2048(5) */ + 1, /* ms240(1) */ + 2, /* ms480(2) */ + 6, /* ms5120(6) */ + 3 /* ms640(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_ReportIntervalMDT_specs_1 = { + asn_MAP_S1AP_ReportIntervalMDT_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ReportIntervalMDT_enum2value_1, /* N => "tag"; sorted by N */ + 13, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ReportIntervalMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ReportIntervalMDT = { + "ReportIntervalMDT", + "ReportIntervalMDT", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ReportIntervalMDT_tags_1, + sizeof(asn_DEF_S1AP_ReportIntervalMDT_tags_1) + /sizeof(asn_DEF_S1AP_ReportIntervalMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ReportIntervalMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ReportIntervalMDT_tags_1) + /sizeof(asn_DEF_S1AP_ReportIntervalMDT_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ReportIntervalMDT_constr_1, &asn_PER_type_S1AP_ReportIntervalMDT_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ReportIntervalMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.h b/lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.h new file mode 100644 index 0000000000..5184e04099 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ReportIntervalMDT.h @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ReportIntervalMDT_H_ +#define _S1AP_ReportIntervalMDT_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ReportIntervalMDT { + S1AP_ReportIntervalMDT_ms120 = 0, + S1AP_ReportIntervalMDT_ms240 = 1, + S1AP_ReportIntervalMDT_ms480 = 2, + S1AP_ReportIntervalMDT_ms640 = 3, + S1AP_ReportIntervalMDT_ms1024 = 4, + S1AP_ReportIntervalMDT_ms2048 = 5, + S1AP_ReportIntervalMDT_ms5120 = 6, + S1AP_ReportIntervalMDT_ms10240 = 7, + S1AP_ReportIntervalMDT_min1 = 8, + S1AP_ReportIntervalMDT_min6 = 9, + S1AP_ReportIntervalMDT_min12 = 10, + S1AP_ReportIntervalMDT_min30 = 11, + S1AP_ReportIntervalMDT_min60 = 12 +} e_S1AP_ReportIntervalMDT; + +/* S1AP_ReportIntervalMDT */ +typedef long S1AP_ReportIntervalMDT_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ReportIntervalMDT_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ReportIntervalMDT; +extern const asn_INTEGER_specifics_t asn_SPC_ReportIntervalMDT_specs_1; +asn_struct_free_f ReportIntervalMDT_free; +asn_struct_print_f ReportIntervalMDT_print; +asn_constr_check_f ReportIntervalMDT_constraint; +ber_type_decoder_f ReportIntervalMDT_decode_ber; +der_type_encoder_f ReportIntervalMDT_encode_der; +xer_type_decoder_f ReportIntervalMDT_decode_xer; +xer_type_encoder_f ReportIntervalMDT_encode_xer; +oer_type_decoder_f ReportIntervalMDT_decode_oer; +oer_type_encoder_f ReportIntervalMDT_encode_oer; +per_type_decoder_f ReportIntervalMDT_decode_uper; +per_type_encoder_f ReportIntervalMDT_encode_uper; +per_type_decoder_f ReportIntervalMDT_decode_aper; +per_type_encoder_f ReportIntervalMDT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ReportIntervalMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RequestType.c b/lib/s1ap3/asn1c/S1AP_RequestType.c new file mode 100644 index 0000000000..55aa10f4f7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RequestType.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RequestType.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_RequestType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RequestType, eventType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EventType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eventType" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RequestType, reportArea), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ReportArea, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reportArea" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_RequestType, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P84, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_RequestType_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_RequestType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RequestType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportArea */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_RequestType_specs_1 = { + sizeof(struct S1AP_RequestType), + offsetof(struct S1AP_RequestType, _asn_ctx), + asn_MAP_S1AP_RequestType_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_RequestType_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RequestType = { + "RequestType", + "RequestType", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RequestType_tags_1, + sizeof(asn_DEF_S1AP_RequestType_tags_1) + /sizeof(asn_DEF_S1AP_RequestType_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RequestType_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RequestType_tags_1) + /sizeof(asn_DEF_S1AP_RequestType_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RequestType_1, + 3, /* Elements count */ + &asn_SPC_S1AP_RequestType_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RequestType.h b/lib/s1ap3/asn1c/S1AP_RequestType.h new file mode 100644 index 0000000000..60d1782eb8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RequestType.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RequestType_H_ +#define _S1AP_RequestType_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EventType.h" +#include "S1AP_ReportArea.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_RequestType */ +typedef struct S1AP_RequestType { + S1AP_EventType_t eventType; + S1AP_ReportArea_t reportArea; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RequestType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RequestType; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RequestType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RerouteNASRequest.c b/lib/s1ap3/asn1c/S1AP_RerouteNASRequest.c new file mode 100644 index 0000000000..61766c0355 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RerouteNASRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RerouteNASRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_RerouteNASRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RerouteNASRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P35, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RerouteNASRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RerouteNASRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RerouteNASRequest_specs_1 = { + sizeof(struct S1AP_RerouteNASRequest), + offsetof(struct S1AP_RerouteNASRequest, _asn_ctx), + asn_MAP_S1AP_RerouteNASRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RerouteNASRequest = { + "RerouteNASRequest", + "RerouteNASRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RerouteNASRequest_tags_1, + sizeof(asn_DEF_S1AP_RerouteNASRequest_tags_1) + /sizeof(asn_DEF_S1AP_RerouteNASRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RerouteNASRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RerouteNASRequest_tags_1) + /sizeof(asn_DEF_S1AP_RerouteNASRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RerouteNASRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_RerouteNASRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RerouteNASRequest.h b/lib/s1ap3/asn1c/S1AP_RerouteNASRequest.h new file mode 100644 index 0000000000..a474a2528b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RerouteNASRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RerouteNASRequest_H_ +#define _S1AP_RerouteNASRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_RerouteNASRequest */ +typedef struct S1AP_RerouteNASRequest { + S1AP_ProtocolIE_Container_6551P35_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RerouteNASRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RerouteNASRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RerouteNASRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_RerouteNASRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RerouteNASRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Reset.c b/lib/s1ap3/asn1c/S1AP_Reset.c new file mode 100644 index 0000000000..d7123f4055 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Reset.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Reset.h" + +asn_TYPE_member_t asn_MBR_S1AP_Reset_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_Reset, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P37, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Reset_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_Reset_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_Reset_specs_1 = { + sizeof(struct S1AP_Reset), + offsetof(struct S1AP_Reset, _asn_ctx), + asn_MAP_S1AP_Reset_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Reset = { + "Reset", + "Reset", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_Reset_tags_1, + sizeof(asn_DEF_S1AP_Reset_tags_1) + /sizeof(asn_DEF_S1AP_Reset_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Reset_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Reset_tags_1) + /sizeof(asn_DEF_S1AP_Reset_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_Reset_1, + 1, /* Elements count */ + &asn_SPC_S1AP_Reset_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Reset.h b/lib/s1ap3/asn1c/S1AP_Reset.h new file mode 100644 index 0000000000..862ce0feda --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Reset.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Reset_H_ +#define _S1AP_Reset_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Reset */ +typedef struct S1AP_Reset { + S1AP_ProtocolIE_Container_6551P37_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_Reset_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Reset; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_Reset_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_Reset_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Reset_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ResetAcknowledge.c b/lib/s1ap3/asn1c/S1AP_ResetAcknowledge.c new file mode 100644 index 0000000000..b2be8ab934 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ResetAcknowledge.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ResetAcknowledge.h" + +asn_TYPE_member_t asn_MBR_S1AP_ResetAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P38, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ResetAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ResetAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ResetAcknowledge_specs_1 = { + sizeof(struct S1AP_ResetAcknowledge), + offsetof(struct S1AP_ResetAcknowledge, _asn_ctx), + asn_MAP_S1AP_ResetAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ResetAcknowledge = { + "ResetAcknowledge", + "ResetAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ResetAcknowledge_tags_1, + sizeof(asn_DEF_S1AP_ResetAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_ResetAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ResetAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ResetAcknowledge_tags_1) + /sizeof(asn_DEF_S1AP_ResetAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ResetAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_S1AP_ResetAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ResetAcknowledge.h b/lib/s1ap3/asn1c/S1AP_ResetAcknowledge.h new file mode 100644 index 0000000000..e96edc1cd2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ResetAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ResetAcknowledge_H_ +#define _S1AP_ResetAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ResetAcknowledge */ +typedef struct S1AP_ResetAcknowledge { + S1AP_ProtocolIE_Container_6551P38_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ResetAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ResetAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ResetAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ResetAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ResetAcknowledge_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ResetAll.c b/lib/s1ap3/asn1c/S1AP_ResetAll.c new file mode 100644 index 0000000000..7892b4fd47 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ResetAll.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ResetAll.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_ResetAll_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_ResetAll_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_ResetAll_value2enum_1[] = { + { 0, 9, "reset-all" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_ResetAll_enum2value_1[] = { + 0 /* reset-all(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_ResetAll_specs_1 = { + asn_MAP_S1AP_ResetAll_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_ResetAll_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ResetAll_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ResetAll = { + "ResetAll", + "ResetAll", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_ResetAll_tags_1, + sizeof(asn_DEF_S1AP_ResetAll_tags_1) + /sizeof(asn_DEF_S1AP_ResetAll_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ResetAll_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ResetAll_tags_1) + /sizeof(asn_DEF_S1AP_ResetAll_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ResetAll_constr_1, &asn_PER_type_S1AP_ResetAll_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_ResetAll_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ResetAll.h b/lib/s1ap3/asn1c/S1AP_ResetAll.h new file mode 100644 index 0000000000..28448a353e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ResetAll.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ResetAll_H_ +#define _S1AP_ResetAll_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ResetAll { + S1AP_ResetAll_reset_all = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_ResetAll; + +/* S1AP_ResetAll */ +typedef long S1AP_ResetAll_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_ResetAll_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ResetAll; +extern const asn_INTEGER_specifics_t asn_SPC_ResetAll_specs_1; +asn_struct_free_f ResetAll_free; +asn_struct_print_f ResetAll_print; +asn_constr_check_f ResetAll_constraint; +ber_type_decoder_f ResetAll_decode_ber; +der_type_encoder_f ResetAll_encode_der; +xer_type_decoder_f ResetAll_decode_xer; +xer_type_encoder_f ResetAll_encode_xer; +oer_type_decoder_f ResetAll_decode_oer; +oer_type_encoder_f ResetAll_encode_oer; +per_type_decoder_f ResetAll_decode_uper; +per_type_encoder_f ResetAll_encode_uper; +per_type_decoder_f ResetAll_decode_aper; +per_type_encoder_f ResetAll_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ResetAll_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ResetType.c b/lib/s1ap3/asn1c/S1AP_ResetType.c new file mode 100644 index 0000000000..c81346fe41 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ResetType.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ResetType.h" + +#include "S1AP_UE-associatedLogicalS1-ConnectionListRes.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ResetType_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_ResetType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_ResetType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ResetType, choice.s1_Interface), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ResetAll, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-Interface" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_ResetType, choice.partOfS1_Interface), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "partOfS1-Interface" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ResetType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* s1-Interface */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* partOfS1-Interface */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_ResetType_specs_1 = { + sizeof(struct S1AP_ResetType), + offsetof(struct S1AP_ResetType, _asn_ctx), + offsetof(struct S1AP_ResetType, present), + sizeof(((struct S1AP_ResetType *)0)->present), + asn_MAP_S1AP_ResetType_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ResetType = { + "ResetType", + "ResetType", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_ResetType_constr_1, &asn_PER_type_S1AP_ResetType_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_ResetType_1, + 2, /* Elements count */ + &asn_SPC_S1AP_ResetType_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ResetType.h b/lib/s1ap3/asn1c/S1AP_ResetType.h new file mode 100644 index 0000000000..73e6278f33 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ResetType.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ResetType_H_ +#define _S1AP_ResetType_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ResetAll.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_ResetType_PR { + ResetType_PR_NOTHING, /* No components present */ + ResetType_PR_s1_Interface, + ResetType_PR_partOfS1_Interface + /* Extensions may appear below */ + +} S1AP_ResetType_PR; + +/* Forward declarations */ +struct S1AP_UE_associatedLogicalS1_ConnectionListRes; + +/* S1AP_ResetType */ +typedef struct S1AP_ResetType { + S1AP_ResetType_PR present; + union S1AP_ResetType_u { + S1AP_ResetAll_t s1_Interface; + struct S1AP_UE_associatedLogicalS1_ConnectionListRes *partOfS1_Interface; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ResetType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ResetType; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ResetType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.c b/lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.c new file mode 100644 index 0000000000..ed730cb589 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_RetrieveUEInformation.h" + +asn_TYPE_member_t asn_MBR_S1AP_RetrieveUEInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_RetrieveUEInformation, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P87, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_RetrieveUEInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_RetrieveUEInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_RetrieveUEInformation_specs_1 = { + sizeof(struct S1AP_RetrieveUEInformation), + offsetof(struct S1AP_RetrieveUEInformation, _asn_ctx), + asn_MAP_S1AP_RetrieveUEInformation_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_RetrieveUEInformation = { + "RetrieveUEInformation", + "RetrieveUEInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_RetrieveUEInformation_tags_1, + sizeof(asn_DEF_S1AP_RetrieveUEInformation_tags_1) + /sizeof(asn_DEF_S1AP_RetrieveUEInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_RetrieveUEInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_RetrieveUEInformation_tags_1) + /sizeof(asn_DEF_S1AP_RetrieveUEInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_RetrieveUEInformation_1, + 1, /* Elements count */ + &asn_SPC_S1AP_RetrieveUEInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.h b/lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.h new file mode 100644 index 0000000000..5d2f3b152c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_RetrieveUEInformation.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_RetrieveUEInformation_H_ +#define _S1AP_RetrieveUEInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_RetrieveUEInformation */ +typedef struct S1AP_RetrieveUEInformation { + S1AP_ProtocolIE_Container_6551P87_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_RetrieveUEInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_RetrieveUEInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_RetrieveUEInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_RetrieveUEInformation_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_RetrieveUEInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Routing-ID.c b/lib/s1ap3/asn1c/S1AP_Routing-ID.c new file mode 100644 index 0000000000..5a2baa667b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Routing-ID.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Routing-ID.h" + +int +S1AP_Routing_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Routing_ID_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_Routing_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Routing_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Routing_ID = { + "Routing-ID", + "Routing-ID", + &asn_OP_NativeInteger, + asn_DEF_S1AP_Routing_ID_tags_1, + sizeof(asn_DEF_S1AP_Routing_ID_tags_1) + /sizeof(asn_DEF_S1AP_Routing_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Routing_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Routing_ID_tags_1) + /sizeof(asn_DEF_S1AP_Routing_ID_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Routing_ID_constr_1, &asn_PER_type_S1AP_Routing_ID_constr_1, S1AP_Routing_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Routing-ID.h b/lib/s1ap3/asn1c/S1AP_Routing-ID.h new file mode 100644 index 0000000000..c44fb9cabf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Routing-ID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Routing_ID_H_ +#define _S1AP_Routing_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Routing-ID */ +typedef long S1AP_Routing_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Routing_ID; +asn_struct_free_f S1AP_Routing_ID_free; +asn_struct_print_f S1AP_Routing_ID_print; +asn_constr_check_f S1AP_Routing_ID_constraint; +ber_type_decoder_f S1AP_Routing_ID_decode_ber; +der_type_encoder_f S1AP_Routing_ID_encode_der; +xer_type_decoder_f S1AP_Routing_ID_decode_xer; +xer_type_encoder_f S1AP_Routing_ID_encode_xer; +oer_type_decoder_f S1AP_Routing_ID_decode_oer; +oer_type_encoder_f S1AP_Routing_ID_encode_oer; +per_type_decoder_f S1AP_Routing_ID_decode_uper; +per_type_encoder_f S1AP_Routing_ID_encode_uper; +per_type_decoder_f S1AP_Routing_ID_decode_aper; +per_type_encoder_f S1AP_Routing_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Routing_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_S-TMSI.c b/lib/s1ap3/asn1c/S1AP_S-TMSI.c new file mode 100644 index 0000000000..f900bde97d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S-TMSI.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_S-TMSI.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_S_TMSI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S_TMSI, mMEC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MME_Code, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mMEC" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S_TMSI, m_TMSI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_M_TMSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m-TMSI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_S_TMSI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P96, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_S_TMSI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_S_TMSI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_S_TMSI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mMEC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m-TMSI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_S_TMSI_specs_1 = { + sizeof(struct S1AP_S_TMSI), + offsetof(struct S1AP_S_TMSI, _asn_ctx), + asn_MAP_S1AP_S_TMSI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_S_TMSI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_S_TMSI = { + "S-TMSI", + "S-TMSI", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_S_TMSI_tags_1, + sizeof(asn_DEF_S1AP_S_TMSI_tags_1) + /sizeof(asn_DEF_S1AP_S_TMSI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_S_TMSI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_S_TMSI_tags_1) + /sizeof(asn_DEF_S1AP_S_TMSI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_S_TMSI_1, + 3, /* Elements count */ + &asn_SPC_S1AP_S_TMSI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_S-TMSI.h b/lib/s1ap3/asn1c/S1AP_S-TMSI.h new file mode 100644 index 0000000000..4ccad810d3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S-TMSI.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_S_TMSI_H_ +#define _S1AP_S_TMSI_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MME-Code.h" +#include "S1AP_M-TMSI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_S-TMSI */ +typedef struct S1AP_S_TMSI { + S1AP_MME_Code_t mMEC; + S1AP_M_TMSI_t m_TMSI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_S_TMSI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_S_TMSI; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_S_TMSI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_S_TMSI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_S_TMSI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_S1AP-PDU.c b/lib/s1ap3/asn1c/S1AP_S1AP-PDU.c new file mode 100644 index 0000000000..0628591002 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S1AP-PDU.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_S1AP-PDU.h" + +#include "S1AP_InitiatingMessage.h" +#include "S1AP_SuccessfulOutcome.h" +#include "S1AP_UnsuccessfulOutcome.h" +static asn_oer_constraints_t asn_OER_type_S1AP_S1AP_PDU_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_S1AP_PDU_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_S1AP_PDU_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_S1AP_PDU, choice.initiatingMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_InitiatingMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "initiatingMessage" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_S1AP_PDU, choice.successfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_SuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "successfulOutcome" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_S1AP_PDU, choice.unsuccessfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_UnsuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unsuccessfulOutcome" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_S1AP_PDU_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_S1AP_PDU_specs_1 = { + sizeof(struct S1AP_S1AP_PDU), + offsetof(struct S1AP_S1AP_PDU, _asn_ctx), + offsetof(struct S1AP_S1AP_PDU, present), + sizeof(((struct S1AP_S1AP_PDU *)0)->present), + asn_MAP_S1AP_S1AP_PDU_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_S1AP_PDU = { + "S1AP-PDU", + "S1AP-PDU", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_S1AP_PDU_constr_1, &asn_PER_type_S1AP_S1AP_PDU_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_S1AP_PDU_1, + 3, /* Elements count */ + &asn_SPC_S1AP_S1AP_PDU_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_S1AP-PDU.h b/lib/s1ap3/asn1c/S1AP_S1AP-PDU.h new file mode 100644 index 0000000000..094de2e7b5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S1AP-PDU.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_S1AP_PDU_H_ +#define _S1AP_S1AP_PDU_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_S1AP_PDU_PR { + S1AP_PDU_PR_NOTHING, /* No components present */ + S1AP_PDU_PR_initiatingMessage, + S1AP_PDU_PR_successfulOutcome, + S1AP_PDU_PR_unsuccessfulOutcome + /* Extensions may appear below */ + +} S1AP_S1AP_PDU_PR; + +/* Forward declarations */ +struct S1AP_InitiatingMessage; +struct S1AP_SuccessfulOutcome; +struct S1AP_UnsuccessfulOutcome; + +/* S1AP_S1AP-PDU */ +typedef struct S1AP_S1AP_PDU { + S1AP_S1AP_PDU_PR present; + union S1AP_S1AP_PDU_u { + struct S1AP_InitiatingMessage *initiatingMessage; + struct S1AP_SuccessfulOutcome *successfulOutcome; + struct S1AP_UnsuccessfulOutcome *unsuccessfulOutcome; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_S1AP_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_S1AP_PDU; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_S1AP_PDU_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_S1SetupFailure.c b/lib/s1ap3/asn1c/S1AP_S1SetupFailure.c new file mode 100644 index 0000000000..7aed7d07da --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S1SetupFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_S1SetupFailure.h" + +asn_TYPE_member_t asn_MBR_S1AP_S1SetupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P42, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_S1SetupFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_S1SetupFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupFailure_specs_1 = { + sizeof(struct S1AP_S1SetupFailure), + offsetof(struct S1AP_S1SetupFailure, _asn_ctx), + asn_MAP_S1AP_S1SetupFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupFailure = { + "S1SetupFailure", + "S1SetupFailure", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_S1SetupFailure_tags_1, + sizeof(asn_DEF_S1AP_S1SetupFailure_tags_1) + /sizeof(asn_DEF_S1AP_S1SetupFailure_tags_1[0]), /* 1 */ + asn_DEF_S1AP_S1SetupFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_S1SetupFailure_tags_1) + /sizeof(asn_DEF_S1AP_S1SetupFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_S1SetupFailure_1, + 1, /* Elements count */ + &asn_SPC_S1AP_S1SetupFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_S1SetupFailure.h b/lib/s1ap3/asn1c/S1AP_S1SetupFailure.h new file mode 100644 index 0000000000..afda23f86f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S1SetupFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_S1SetupFailure_H_ +#define _S1AP_S1SetupFailure_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_S1SetupFailure */ +typedef struct S1AP_S1SetupFailure { + S1AP_ProtocolIE_Container_6551P42_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_S1SetupFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_S1SetupFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_S1SetupFailure_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_S1SetupRequest.c b/lib/s1ap3/asn1c/S1AP_S1SetupRequest.c new file mode 100644 index 0000000000..9261b5a487 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S1SetupRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_S1SetupRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_S1SetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P40, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_S1SetupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_S1SetupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupRequest_specs_1 = { + sizeof(struct S1AP_S1SetupRequest), + offsetof(struct S1AP_S1SetupRequest, _asn_ctx), + asn_MAP_S1AP_S1SetupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupRequest = { + "S1SetupRequest", + "S1SetupRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_S1SetupRequest_tags_1, + sizeof(asn_DEF_S1AP_S1SetupRequest_tags_1) + /sizeof(asn_DEF_S1AP_S1SetupRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_S1SetupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_S1SetupRequest_tags_1) + /sizeof(asn_DEF_S1AP_S1SetupRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_S1SetupRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_S1SetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_S1SetupRequest.h b/lib/s1ap3/asn1c/S1AP_S1SetupRequest.h new file mode 100644 index 0000000000..83913580d1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S1SetupRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_S1SetupRequest_H_ +#define _S1AP_S1SetupRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_S1SetupRequest */ +typedef struct S1AP_S1SetupRequest { + S1AP_ProtocolIE_Container_6551P40_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_S1SetupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_S1SetupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_S1SetupRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_S1SetupResponse.c b/lib/s1ap3/asn1c/S1AP_S1SetupResponse.c new file mode 100644 index 0000000000..c490765216 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S1SetupResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_S1SetupResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_S1SetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_S1SetupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P41, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_S1SetupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_S1SetupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupResponse_specs_1 = { + sizeof(struct S1AP_S1SetupResponse), + offsetof(struct S1AP_S1SetupResponse, _asn_ctx), + asn_MAP_S1AP_S1SetupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupResponse = { + "S1SetupResponse", + "S1SetupResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_S1SetupResponse_tags_1, + sizeof(asn_DEF_S1AP_S1SetupResponse_tags_1) + /sizeof(asn_DEF_S1AP_S1SetupResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_S1SetupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_S1SetupResponse_tags_1) + /sizeof(asn_DEF_S1AP_S1SetupResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_S1SetupResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_S1SetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_S1SetupResponse.h b/lib/s1ap3/asn1c/S1AP_S1SetupResponse.h new file mode 100644 index 0000000000..4ae7a9e13a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_S1SetupResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_S1SetupResponse_H_ +#define _S1AP_S1SetupResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_S1SetupResponse */ +typedef struct S1AP_S1SetupResponse { + S1AP_ProtocolIE_Container_6551P41_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_S1SetupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_S1SetupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_S1SetupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_S1SetupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_S1SetupResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SONConfigurationTransfer.c b/lib/s1ap3/asn1c/S1AP_SONConfigurationTransfer.c new file mode 100644 index 0000000000..573904782a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONConfigurationTransfer.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SONConfigurationTransfer.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_SONConfigurationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONConfigurationTransfer, targeteNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TargeteNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "targeteNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONConfigurationTransfer, sourceeNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_SourceeNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sourceeNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONConfigurationTransfer, sONInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_SONInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sONInformation" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_SONConfigurationTransfer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P89, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_SONConfigurationTransfer_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_SONConfigurationTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SONConfigurationTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* targeteNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sourceeNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sONInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_SONConfigurationTransfer_specs_1 = { + sizeof(struct S1AP_SONConfigurationTransfer), + offsetof(struct S1AP_SONConfigurationTransfer, _asn_ctx), + asn_MAP_S1AP_SONConfigurationTransfer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_SONConfigurationTransfer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SONConfigurationTransfer = { + "SONConfigurationTransfer", + "SONConfigurationTransfer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SONConfigurationTransfer_tags_1, + sizeof(asn_DEF_S1AP_SONConfigurationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_SONConfigurationTransfer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SONConfigurationTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SONConfigurationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_SONConfigurationTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SONConfigurationTransfer_1, + 4, /* Elements count */ + &asn_SPC_S1AP_SONConfigurationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SONConfigurationTransfer.h b/lib/s1ap3/asn1c/S1AP_SONConfigurationTransfer.h new file mode 100644 index 0000000000..3acd85354b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONConfigurationTransfer.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SONConfigurationTransfer_H_ +#define _S1AP_SONConfigurationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TargeteNB-ID.h" +#include "S1AP_SourceeNB-ID.h" +#include "S1AP_SONInformation.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_SONConfigurationTransfer */ +typedef struct S1AP_SONConfigurationTransfer { + S1AP_TargeteNB_ID_t targeteNB_ID; + S1AP_SourceeNB_ID_t sourceeNB_ID; + S1AP_SONInformation_t sONInformation; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SONConfigurationTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SONConfigurationTransfer; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SONConfigurationTransfer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SONInformation-Extension.c b/lib/s1ap3/asn1c/S1AP_SONInformation-Extension.c new file mode 100644 index 0000000000..fc1eb266da --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformation-Extension.c @@ -0,0 +1,32 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SONInformation-Extension.h" + +/* + * This type is implemented using S1AP_ProtocolIE_SingleContainer_6554P17, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_SONInformation_Extension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformation_Extension = { + "SONInformation-Extension", + "SONInformation-Extension", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SONInformation_Extension_tags_1, + sizeof(asn_DEF_S1AP_SONInformation_Extension_tags_1) + /sizeof(asn_DEF_S1AP_SONInformation_Extension_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SONInformation_Extension_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SONInformation_Extension_tags_1) + /sizeof(asn_DEF_S1AP_SONInformation_Extension_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SONInformation_ExtensionIE_69, + 3, /* Elements count */ + &asn_SPC_S1AP_SONInformation_ExtensionIE_specs_69 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SONInformation-Extension.h b/lib/s1ap3/asn1c/S1AP_SONInformation-Extension.h new file mode 100644 index 0000000000..fe6cde42c9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformation-Extension.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SONInformation_Extension_H_ +#define _S1AP_SONInformation_Extension_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-SingleContainer.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_SONInformation-Extension */ +typedef S1AP_ProtocolIE_SingleContainer_6554P17_t S1AP_SONInformation_Extension_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformation_Extension; +asn_struct_free_f S1AP_SONInformation_Extension_free; +asn_struct_print_f S1AP_SONInformation_Extension_print; +asn_constr_check_f S1AP_SONInformation_Extension_constraint; +ber_type_decoder_f S1AP_SONInformation_Extension_decode_ber; +der_type_encoder_f S1AP_SONInformation_Extension_encode_der; +xer_type_decoder_f S1AP_SONInformation_Extension_decode_xer; +xer_type_encoder_f S1AP_SONInformation_Extension_encode_xer; +oer_type_decoder_f S1AP_SONInformation_Extension_decode_oer; +oer_type_encoder_f S1AP_SONInformation_Extension_encode_oer; +per_type_decoder_f S1AP_SONInformation_Extension_decode_uper; +per_type_encoder_f S1AP_SONInformation_Extension_encode_uper; +per_type_decoder_f S1AP_SONInformation_Extension_decode_aper; +per_type_encoder_f S1AP_SONInformation_Extension_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SONInformation_Extension_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SONInformation.c b/lib/s1ap3/asn1c/S1AP_SONInformation.c new file mode 100644 index 0000000000..c5febe4971 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformation.c @@ -0,0 +1,77 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SONInformation.h" + +#include "S1AP_SONInformationReply.h" +#include "S1AP_SONInformation-Extension.h" +static asn_oer_constraints_t asn_OER_type_S1AP_SONInformation_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_SONInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_SONInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SONInformation, choice.sONInformationRequest), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_SONInformationRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sONInformationRequest" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_SONInformation, choice.sONInformationReply), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_SONInformationReply, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sONInformationReply" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_SONInformation, choice.sONInformation_Extension), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_SONInformation_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sONInformation-Extension" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SONInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sONInformationRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sONInformationReply */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sONInformation-Extension */ +}; +asn_CHOICE_specifics_t asn_SPC_S1AP_SONInformation_specs_1 = { + sizeof(struct S1AP_SONInformation), + offsetof(struct S1AP_SONInformation, _asn_ctx), + offsetof(struct S1AP_SONInformation, present), + sizeof(((struct S1AP_SONInformation *)0)->present), + asn_MAP_S1AP_SONInformation_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformation = { + "SONInformation", + "SONInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_SONInformation_constr_1, &asn_PER_type_S1AP_SONInformation_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_SONInformation_1, + 3, /* Elements count */ + &asn_SPC_S1AP_SONInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SONInformation.h b/lib/s1ap3/asn1c/S1AP_SONInformation.h new file mode 100644 index 0000000000..5ab9a553af --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformation.h @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SONInformation_H_ +#define _S1AP_SONInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_SONInformationRequest.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_SONInformation_PR { + SONInformation_PR_NOTHING, /* No components present */ + SONInformation_PR_sONInformationRequest, + SONInformation_PR_sONInformationReply, + /* Extensions may appear below */ + SONInformation_PR_sONInformation_Extension +} S1AP_SONInformation_PR; + +/* Forward declarations */ +struct S1AP_SONInformationReply; +struct S1AP_SONInformation_Extension; + +/* S1AP_SONInformation */ +typedef struct S1AP_SONInformation { + S1AP_SONInformation_PR present; + union S1AP_SONInformation_u { + S1AP_SONInformationRequest_t sONInformationRequest; + struct S1AP_SONInformationReply *sONInformationReply; + /* + * This type is extensible, + * possible extensions are below. + */ + struct S1AP_SONInformation_Extension *sONInformation_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SONInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformation; +extern asn_CHOICE_specifics_t asn_SPC_S1AP_SONInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_SONInformation_1[3]; +extern asn_per_constraints_t asn_PER_type_S1AP_SONInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SONInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SONInformationReply.c b/lib/s1ap3/asn1c/S1AP_SONInformationReply.c new file mode 100644 index 0000000000..61e47ddfbc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformationReply.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SONInformationReply.h" + +#include "S1AP_X2TNLConfigurationInfo.h" +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_SONInformationReply_1[] = { + { ATF_POINTER, 2, offsetof(struct S1AP_SONInformationReply, x2TNLConfigurationInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_X2TNLConfigurationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "x2TNLConfigurationInfo" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_SONInformationReply, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P88, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_SONInformationReply_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_SONInformationReply_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SONInformationReply_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* x2TNLConfigurationInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SONInformationReply_specs_1 = { + sizeof(struct S1AP_SONInformationReply), + offsetof(struct S1AP_SONInformationReply, _asn_ctx), + asn_MAP_S1AP_SONInformationReply_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_SONInformationReply_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformationReply = { + "SONInformationReply", + "SONInformationReply", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SONInformationReply_tags_1, + sizeof(asn_DEF_S1AP_SONInformationReply_tags_1) + /sizeof(asn_DEF_S1AP_SONInformationReply_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SONInformationReply_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SONInformationReply_tags_1) + /sizeof(asn_DEF_S1AP_SONInformationReply_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SONInformationReply_1, + 2, /* Elements count */ + &asn_SPC_S1AP_SONInformationReply_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SONInformationReply.h b/lib/s1ap3/asn1c/S1AP_SONInformationReply.h new file mode 100644 index 0000000000..45bc7a38ee --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformationReply.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SONInformationReply_H_ +#define _S1AP_SONInformationReply_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_X2TNLConfigurationInfo; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_SONInformationReply */ +typedef struct S1AP_SONInformationReply { + struct S1AP_X2TNLConfigurationInfo *x2TNLConfigurationInfo; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SONInformationReply_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformationReply; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SONInformationReply_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_SONInformationReply_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SONInformationReply_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SONInformationReport.c b/lib/s1ap3/asn1c/S1AP_SONInformationReport.c new file mode 100644 index 0000000000..c949e576c1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformationReport.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SONInformationReport.h" + +#include "S1AP_RLFReportInformation.h" +static asn_oer_constraints_t asn_OER_type_S1AP_SONInformationReport_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_SONInformationReport_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_SONInformationReport_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_SONInformationReport, choice.rLFReportInformation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RLFReportInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rLFReportInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SONInformationReport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rLFReportInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_SONInformationReport_specs_1 = { + sizeof(struct S1AP_SONInformationReport), + offsetof(struct S1AP_SONInformationReport, _asn_ctx), + offsetof(struct S1AP_SONInformationReport, present), + sizeof(((struct S1AP_SONInformationReport *)0)->present), + asn_MAP_S1AP_SONInformationReport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformationReport = { + "SONInformationReport", + "SONInformationReport", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_SONInformationReport_constr_1, &asn_PER_type_S1AP_SONInformationReport_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_SONInformationReport_1, + 1, /* Elements count */ + &asn_SPC_S1AP_SONInformationReport_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SONInformationReport.h b/lib/s1ap3/asn1c/S1AP_SONInformationReport.h new file mode 100644 index 0000000000..ac98d97447 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformationReport.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SONInformationReport_H_ +#define _S1AP_SONInformationReport_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_SONInformationReport_PR { + SONInformationReport_PR_NOTHING, /* No components present */ + SONInformationReport_PR_rLFReportInformation + /* Extensions may appear below */ + +} S1AP_SONInformationReport_PR; + +/* Forward declarations */ +struct S1AP_RLFReportInformation; + +/* S1AP_SONInformationReport */ +typedef struct S1AP_SONInformationReport { + S1AP_SONInformationReport_PR present; + union S1AP_SONInformationReport_u { + struct S1AP_RLFReportInformation *rLFReportInformation; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SONInformationReport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformationReport; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SONInformationReport_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SONInformationRequest.c b/lib/s1ap3/asn1c/S1AP_SONInformationRequest.c new file mode 100644 index 0000000000..70fbe76761 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformationRequest.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SONInformationRequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_SONInformationRequest_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_SONInformationRequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_SONInformationRequest_value2enum_1[] = { + { 0, 24, "x2TNL-Configuration-Info" }, + { 1, 25, "time-Synchronisation-Info" }, + { 2, 15, "activate-Muting" }, + { 3, 17, "deactivate-Muting" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_SONInformationRequest_enum2value_1[] = { + 2, /* activate-Muting(2) */ + 3, /* deactivate-Muting(3) */ + 1, /* time-Synchronisation-Info(1) */ + 0 /* x2TNL-Configuration-Info(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_SONInformationRequest_specs_1 = { + asn_MAP_S1AP_SONInformationRequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_SONInformationRequest_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SONInformationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformationRequest = { + "SONInformationRequest", + "SONInformationRequest", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_SONInformationRequest_tags_1, + sizeof(asn_DEF_S1AP_SONInformationRequest_tags_1) + /sizeof(asn_DEF_S1AP_SONInformationRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SONInformationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SONInformationRequest_tags_1) + /sizeof(asn_DEF_S1AP_SONInformationRequest_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SONInformationRequest_constr_1, &asn_PER_type_S1AP_SONInformationRequest_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_SONInformationRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SONInformationRequest.h b/lib/s1ap3/asn1c/S1AP_SONInformationRequest.h new file mode 100644 index 0000000000..4fee541ccf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SONInformationRequest.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SONInformationRequest_H_ +#define _S1AP_SONInformationRequest_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_SONInformationRequest { + S1AP_SONInformationRequest_x2TNL_Configuration_Info = 0, + /* + * Enumeration is extensible + */ + S1AP_SONInformationRequest_time_Synchronisation_Info = 1, + S1AP_SONInformationRequest_activate_Muting = 2, + S1AP_SONInformationRequest_deactivate_Muting = 3 +} e_S1AP_SONInformationRequest; + +/* S1AP_SONInformationRequest */ +typedef long S1AP_SONInformationRequest_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_SONInformationRequest_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SONInformationRequest; +extern const asn_INTEGER_specifics_t asn_SPC_SONInformationRequest_specs_1; +asn_struct_free_f SONInformationRequest_free; +asn_struct_print_f SONInformationRequest_print; +asn_constr_check_f SONInformationRequest_constraint; +ber_type_decoder_f SONInformationRequest_decode_ber; +der_type_encoder_f SONInformationRequest_encode_der; +xer_type_decoder_f SONInformationRequest_decode_xer; +xer_type_encoder_f SONInformationRequest_encode_xer; +oer_type_decoder_f SONInformationRequest_decode_oer; +oer_type_encoder_f SONInformationRequest_encode_oer; +per_type_decoder_f SONInformationRequest_decode_uper; +per_type_encoder_f SONInformationRequest_encode_uper; +per_type_decoder_f SONInformationRequest_decode_aper; +per_type_encoder_f SONInformationRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SONInformationRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.c b/lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.c new file mode 100644 index 0000000000..35e881e135 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SRVCCHOIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_SRVCCHOIndication_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_SRVCCHOIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_SRVCCHOIndication_value2enum_1[] = { + { 0, 7, "pSandCS" }, + { 1, 6, "cSonly" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_SRVCCHOIndication_enum2value_1[] = { + 1, /* cSonly(1) */ + 0 /* pSandCS(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_SRVCCHOIndication_specs_1 = { + asn_MAP_S1AP_SRVCCHOIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_SRVCCHOIndication_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SRVCCHOIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SRVCCHOIndication = { + "SRVCCHOIndication", + "SRVCCHOIndication", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_SRVCCHOIndication_tags_1, + sizeof(asn_DEF_S1AP_SRVCCHOIndication_tags_1) + /sizeof(asn_DEF_S1AP_SRVCCHOIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SRVCCHOIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SRVCCHOIndication_tags_1) + /sizeof(asn_DEF_S1AP_SRVCCHOIndication_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SRVCCHOIndication_constr_1, &asn_PER_type_S1AP_SRVCCHOIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_SRVCCHOIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.h b/lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.h new file mode 100644 index 0000000000..3264e93770 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SRVCCHOIndication.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SRVCCHOIndication_H_ +#define _S1AP_SRVCCHOIndication_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_SRVCCHOIndication { + S1AP_SRVCCHOIndication_pSandCS = 0, + S1AP_SRVCCHOIndication_cSonly = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_SRVCCHOIndication; + +/* S1AP_SRVCCHOIndication */ +typedef long S1AP_SRVCCHOIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SRVCCHOIndication; +asn_struct_free_f S1AP_SRVCCHOIndication_free; +asn_struct_print_f S1AP_SRVCCHOIndication_print; +asn_constr_check_f S1AP_SRVCCHOIndication_constraint; +ber_type_decoder_f S1AP_SRVCCHOIndication_decode_ber; +der_type_encoder_f S1AP_SRVCCHOIndication_encode_der; +xer_type_decoder_f S1AP_SRVCCHOIndication_decode_xer; +xer_type_encoder_f S1AP_SRVCCHOIndication_encode_xer; +oer_type_decoder_f S1AP_SRVCCHOIndication_decode_oer; +oer_type_encoder_f S1AP_SRVCCHOIndication_encode_oer; +per_type_decoder_f S1AP_SRVCCHOIndication_decode_uper; +per_type_encoder_f S1AP_SRVCCHOIndication_encode_uper; +per_type_decoder_f S1AP_SRVCCHOIndication_decode_aper; +per_type_encoder_f S1AP_SRVCCHOIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SRVCCHOIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SRVCCOperationNotPossible.c b/lib/s1ap3/asn1c/S1AP_SRVCCOperationNotPossible.c new file mode 100644 index 0000000000..87816fb8b2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SRVCCOperationNotPossible.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SRVCCOperationNotPossible.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_SRVCCOperationNotPossible_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_SRVCCOperationNotPossible_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_SRVCCOperationNotPossible_value2enum_1[] = { + { 0, 11, "notPossible" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_SRVCCOperationNotPossible_enum2value_1[] = { + 0 /* notPossible(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_SRVCCOperationNotPossible_specs_1 = { + asn_MAP_S1AP_SRVCCOperationNotPossible_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_SRVCCOperationNotPossible_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SRVCCOperationNotPossible_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SRVCCOperationNotPossible = { + "SRVCCOperationNotPossible", + "SRVCCOperationNotPossible", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_SRVCCOperationNotPossible_tags_1, + sizeof(asn_DEF_S1AP_SRVCCOperationNotPossible_tags_1) + /sizeof(asn_DEF_S1AP_SRVCCOperationNotPossible_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SRVCCOperationNotPossible_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SRVCCOperationNotPossible_tags_1) + /sizeof(asn_DEF_S1AP_SRVCCOperationNotPossible_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SRVCCOperationNotPossible_constr_1, &asn_PER_type_S1AP_SRVCCOperationNotPossible_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_SRVCCOperationNotPossible_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SRVCCOperationNotPossible.h b/lib/s1ap3/asn1c/S1AP_SRVCCOperationNotPossible.h new file mode 100644 index 0000000000..6cea75e572 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SRVCCOperationNotPossible.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SRVCCOperationNotPossible_H_ +#define _S1AP_SRVCCOperationNotPossible_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_SRVCCOperationNotPossible { + S1AP_SRVCCOperationNotPossible_notPossible = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_SRVCCOperationNotPossible; + +/* S1AP_SRVCCOperationNotPossible */ +typedef long S1AP_SRVCCOperationNotPossible_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SRVCCOperationNotPossible; +asn_struct_free_f S1AP_SRVCCOperationNotPossible_free; +asn_struct_print_f S1AP_SRVCCOperationNotPossible_print; +asn_constr_check_f S1AP_SRVCCOperationNotPossible_constraint; +ber_type_decoder_f S1AP_SRVCCOperationNotPossible_decode_ber; +der_type_encoder_f S1AP_SRVCCOperationNotPossible_encode_der; +xer_type_decoder_f S1AP_SRVCCOperationNotPossible_decode_xer; +xer_type_encoder_f S1AP_SRVCCOperationNotPossible_encode_xer; +oer_type_decoder_f S1AP_SRVCCOperationNotPossible_decode_oer; +oer_type_encoder_f S1AP_SRVCCOperationNotPossible_encode_oer; +per_type_decoder_f S1AP_SRVCCOperationNotPossible_decode_uper; +per_type_encoder_f S1AP_SRVCCOperationNotPossible_encode_uper; +per_type_decoder_f S1AP_SRVCCOperationNotPossible_decode_aper; +per_type_encoder_f S1AP_SRVCCOperationNotPossible_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SRVCCOperationNotPossible_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.c b/lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.c new file mode 100644 index 0000000000..d25e6e7911 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SRVCCOperationPossible.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_SRVCCOperationPossible_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_SRVCCOperationPossible_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_SRVCCOperationPossible_value2enum_1[] = { + { 0, 8, "possible" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_SRVCCOperationPossible_enum2value_1[] = { + 0 /* possible(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_SRVCCOperationPossible_specs_1 = { + asn_MAP_S1AP_SRVCCOperationPossible_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_SRVCCOperationPossible_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SRVCCOperationPossible_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SRVCCOperationPossible = { + "SRVCCOperationPossible", + "SRVCCOperationPossible", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_SRVCCOperationPossible_tags_1, + sizeof(asn_DEF_S1AP_SRVCCOperationPossible_tags_1) + /sizeof(asn_DEF_S1AP_SRVCCOperationPossible_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SRVCCOperationPossible_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SRVCCOperationPossible_tags_1) + /sizeof(asn_DEF_S1AP_SRVCCOperationPossible_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SRVCCOperationPossible_constr_1, &asn_PER_type_S1AP_SRVCCOperationPossible_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_SRVCCOperationPossible_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.h b/lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.h new file mode 100644 index 0000000000..15fa332b7a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SRVCCOperationPossible.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SRVCCOperationPossible_H_ +#define _S1AP_SRVCCOperationPossible_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_SRVCCOperationPossible { + S1AP_SRVCCOperationPossible_possible = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_SRVCCOperationPossible; + +/* S1AP_SRVCCOperationPossible */ +typedef long S1AP_SRVCCOperationPossible_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SRVCCOperationPossible; +asn_struct_free_f S1AP_SRVCCOperationPossible_free; +asn_struct_print_f S1AP_SRVCCOperationPossible_print; +asn_constr_check_f S1AP_SRVCCOperationPossible_constraint; +ber_type_decoder_f S1AP_SRVCCOperationPossible_decode_ber; +der_type_encoder_f S1AP_SRVCCOperationPossible_encode_der; +xer_type_decoder_f S1AP_SRVCCOperationPossible_decode_xer; +xer_type_encoder_f S1AP_SRVCCOperationPossible_encode_xer; +oer_type_decoder_f S1AP_SRVCCOperationPossible_decode_oer; +oer_type_encoder_f S1AP_SRVCCOperationPossible_encode_oer; +per_type_decoder_f S1AP_SRVCCOperationPossible_decode_uper; +per_type_encoder_f S1AP_SRVCCOperationPossible_encode_uper; +per_type_decoder_f S1AP_SRVCCOperationPossible_decode_aper; +per_type_encoder_f S1AP_SRVCCOperationPossible_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SRVCCOperationPossible_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SecurityContext.c b/lib/s1ap3/asn1c/S1AP_SecurityContext.c new file mode 100644 index 0000000000..23ddda6281 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SecurityContext.c @@ -0,0 +1,106 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SecurityContext.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static int +memb_S1AP_nextHopChainingCount_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_nextHopChainingCount_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..7) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_nextHopChainingCount_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_SecurityContext_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SecurityContext, nextHopChainingCount), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { &asn_OER_memb_S1AP_nextHopChainingCount_constr_2, &asn_PER_memb_S1AP_nextHopChainingCount_constr_2, memb_S1AP_nextHopChainingCount_constraint_1 }, + 0, 0, /* No default value */ + "nextHopChainingCount" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SecurityContext, nextHopParameter), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_SecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nextHopParameter" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_SecurityContext, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P87, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_SecurityContext_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_SecurityContext_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SecurityContext_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nextHopChainingCount */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nextHopParameter */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_SecurityContext_specs_1 = { + sizeof(struct S1AP_SecurityContext), + offsetof(struct S1AP_SecurityContext, _asn_ctx), + asn_MAP_S1AP_SecurityContext_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_SecurityContext_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SecurityContext = { + "SecurityContext", + "SecurityContext", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SecurityContext_tags_1, + sizeof(asn_DEF_S1AP_SecurityContext_tags_1) + /sizeof(asn_DEF_S1AP_SecurityContext_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SecurityContext_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SecurityContext_tags_1) + /sizeof(asn_DEF_S1AP_SecurityContext_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SecurityContext_1, + 3, /* Elements count */ + &asn_SPC_S1AP_SecurityContext_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SecurityContext.h b/lib/s1ap3/asn1c/S1AP_SecurityContext.h new file mode 100644 index 0000000000..4d9ae6066a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SecurityContext.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SecurityContext_H_ +#define _S1AP_SecurityContext_H_ + + +#include + +/* Including external dependencies */ +#include +#include "S1AP_SecurityKey.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_SecurityContext */ +typedef struct S1AP_SecurityContext { + long nextHopChainingCount; + S1AP_SecurityKey_t nextHopParameter; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SecurityContext_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SecurityContext; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SecurityContext_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SecurityKey.c b/lib/s1ap3/asn1c/S1AP_SecurityKey.c new file mode 100644 index 0000000000..ec088b1b74 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SecurityKey.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SecurityKey.h" + +int +S1AP_SecurityKey_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_SecurityKey_constr_1 CC_NOTUSED = { + { 0, 0 }, + 256 /* (SIZE(256..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_SecurityKey_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 256, 256 } /* (SIZE(256..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SecurityKey_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SecurityKey = { + "SecurityKey", + "SecurityKey", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_SecurityKey_tags_1, + sizeof(asn_DEF_S1AP_SecurityKey_tags_1) + /sizeof(asn_DEF_S1AP_SecurityKey_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SecurityKey_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SecurityKey_tags_1) + /sizeof(asn_DEF_S1AP_SecurityKey_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SecurityKey_constr_1, &asn_PER_type_S1AP_SecurityKey_constr_1, S1AP_SecurityKey_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SecurityKey.h b/lib/s1ap3/asn1c/S1AP_SecurityKey.h new file mode 100644 index 0000000000..19d113cc74 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SecurityKey.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SecurityKey_H_ +#define _S1AP_SecurityKey_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_SecurityKey */ +typedef BIT_STRING_t S1AP_SecurityKey_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_SecurityKey_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SecurityKey; +asn_struct_free_f S1AP_SecurityKey_free; +asn_struct_print_f S1AP_SecurityKey_print; +asn_constr_check_f S1AP_SecurityKey_constraint; +ber_type_decoder_f S1AP_SecurityKey_decode_ber; +der_type_encoder_f S1AP_SecurityKey_encode_der; +xer_type_decoder_f S1AP_SecurityKey_decode_xer; +xer_type_encoder_f S1AP_SecurityKey_encode_xer; +oer_type_decoder_f S1AP_SecurityKey_decode_oer; +oer_type_encoder_f S1AP_SecurityKey_encode_oer; +per_type_decoder_f S1AP_SecurityKey_decode_uper; +per_type_encoder_f S1AP_SecurityKey_encode_uper; +per_type_decoder_f S1AP_SecurityKey_decode_aper; +per_type_encoder_f S1AP_SecurityKey_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SecurityKey_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SerialNumber.c b/lib/s1ap3/asn1c/S1AP_SerialNumber.c new file mode 100644 index 0000000000..4d7fcde487 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SerialNumber.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SerialNumber.h" + +int +S1AP_SerialNumber_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_SerialNumber_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_SerialNumber_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SerialNumber_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SerialNumber = { + "SerialNumber", + "SerialNumber", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_SerialNumber_tags_1, + sizeof(asn_DEF_S1AP_SerialNumber_tags_1) + /sizeof(asn_DEF_S1AP_SerialNumber_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SerialNumber_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SerialNumber_tags_1) + /sizeof(asn_DEF_S1AP_SerialNumber_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SerialNumber_constr_1, &asn_PER_type_S1AP_SerialNumber_constr_1, S1AP_SerialNumber_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SerialNumber.h b/lib/s1ap3/asn1c/S1AP_SerialNumber.h new file mode 100644 index 0000000000..e21c399edb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SerialNumber.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SerialNumber_H_ +#define _S1AP_SerialNumber_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_SerialNumber */ +typedef BIT_STRING_t S1AP_SerialNumber_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SerialNumber; +asn_struct_free_f S1AP_SerialNumber_free; +asn_struct_print_f S1AP_SerialNumber_print; +asn_constr_check_f S1AP_SerialNumber_constraint; +ber_type_decoder_f S1AP_SerialNumber_decode_ber; +der_type_encoder_f S1AP_SerialNumber_encode_der; +xer_type_decoder_f S1AP_SerialNumber_decode_xer; +xer_type_encoder_f S1AP_SerialNumber_encode_xer; +oer_type_decoder_f S1AP_SerialNumber_decode_oer; +oer_type_encoder_f S1AP_SerialNumber_encode_oer; +per_type_decoder_f S1AP_SerialNumber_decode_uper; +per_type_encoder_f S1AP_SerialNumber_encode_uper; +per_type_decoder_f S1AP_SerialNumber_decode_aper; +per_type_encoder_f S1AP_SerialNumber_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SerialNumber_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ServedDCNs.c b/lib/s1ap3/asn1c/S1AP_ServedDCNs.c new file mode 100644 index 0000000000..e6a39755b2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedDCNs.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ServedDCNs.h" + +#include "S1AP_ServedDCNsItem.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ServedDCNs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..32)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_ServedDCNs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_ServedDCNs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ServedDCNsItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ServedDCNs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_ServedDCNs_specs_1 = { + sizeof(struct S1AP_ServedDCNs), + offsetof(struct S1AP_ServedDCNs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ServedDCNs = { + "ServedDCNs", + "ServedDCNs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ServedDCNs_tags_1, + sizeof(asn_DEF_S1AP_ServedDCNs_tags_1) + /sizeof(asn_DEF_S1AP_ServedDCNs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ServedDCNs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ServedDCNs_tags_1) + /sizeof(asn_DEF_S1AP_ServedDCNs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ServedDCNs_constr_1, &asn_PER_type_S1AP_ServedDCNs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ServedDCNs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ServedDCNs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ServedDCNs.h b/lib/s1ap3/asn1c/S1AP_ServedDCNs.h new file mode 100644 index 0000000000..377db5e19d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedDCNs.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ServedDCNs_H_ +#define _S1AP_ServedDCNs_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ServedDCNsItem; + +/* S1AP_ServedDCNs */ +typedef struct S1AP_ServedDCNs { + A_SEQUENCE_OF(struct S1AP_ServedDCNsItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ServedDCNs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ServedDCNs; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ServedDCNs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ServedDCNsItem.c b/lib/s1ap3/asn1c/S1AP_ServedDCNsItem.c new file mode 100644 index 0000000000..264444a449 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedDCNsItem.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ServedDCNsItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_ServedDCNsItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedDCNsItem, dCN_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_DCN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dCN-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedDCNsItem, relativeDCNCapacity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RelativeMMECapacity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "relativeDCNCapacity" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ServedDCNsItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P41, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ServedDCNsItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ServedDCNsItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ServedDCNsItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dCN-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* relativeDCNCapacity */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ServedDCNsItem_specs_1 = { + sizeof(struct S1AP_ServedDCNsItem), + offsetof(struct S1AP_ServedDCNsItem, _asn_ctx), + asn_MAP_S1AP_ServedDCNsItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_ServedDCNsItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ServedDCNsItem = { + "ServedDCNsItem", + "ServedDCNsItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ServedDCNsItem_tags_1, + sizeof(asn_DEF_S1AP_ServedDCNsItem_tags_1) + /sizeof(asn_DEF_S1AP_ServedDCNsItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ServedDCNsItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ServedDCNsItem_tags_1) + /sizeof(asn_DEF_S1AP_ServedDCNsItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ServedDCNsItem_1, + 3, /* Elements count */ + &asn_SPC_S1AP_ServedDCNsItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ServedDCNsItem.h b/lib/s1ap3/asn1c/S1AP_ServedDCNsItem.h new file mode 100644 index 0000000000..e40a37b92c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedDCNsItem.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ServedDCNsItem_H_ +#define _S1AP_ServedDCNsItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_DCN-ID.h" +#include "S1AP_RelativeMMECapacity.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ServedDCNsItem */ +typedef struct S1AP_ServedDCNsItem { + S1AP_DCN_ID_t dCN_ID; + S1AP_RelativeMMECapacity_t relativeDCNCapacity; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ServedDCNsItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ServedDCNsItem; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ServedDCNsItem_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ServedDCNsItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ServedDCNsItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.c b/lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.c new file mode 100644 index 0000000000..8c738e4905 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ServedGUMMEIs.h" + +#include "S1AP_ServedGUMMEIsItem.h" +static asn_oer_constraints_t asn_OER_type_S1AP_ServedGUMMEIs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_ServedGUMMEIs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_ServedGUMMEIs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ServedGUMMEIsItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ServedGUMMEIs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_ServedGUMMEIs_specs_1 = { + sizeof(struct S1AP_ServedGUMMEIs), + offsetof(struct S1AP_ServedGUMMEIs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ServedGUMMEIs = { + "ServedGUMMEIs", + "ServedGUMMEIs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ServedGUMMEIs_tags_1, + sizeof(asn_DEF_S1AP_ServedGUMMEIs_tags_1) + /sizeof(asn_DEF_S1AP_ServedGUMMEIs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ServedGUMMEIs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ServedGUMMEIs_tags_1) + /sizeof(asn_DEF_S1AP_ServedGUMMEIs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ServedGUMMEIs_constr_1, &asn_PER_type_S1AP_ServedGUMMEIs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ServedGUMMEIs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ServedGUMMEIs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.h b/lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.h new file mode 100644 index 0000000000..02c9ee3487 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedGUMMEIs.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ServedGUMMEIs_H_ +#define _S1AP_ServedGUMMEIs_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ServedGUMMEIsItem; + +/* S1AP_ServedGUMMEIs */ +typedef struct S1AP_ServedGUMMEIs { + A_SEQUENCE_OF(struct S1AP_ServedGUMMEIsItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ServedGUMMEIs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ServedGUMMEIs; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ServedGUMMEIs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.c b/lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.c new file mode 100644 index 0000000000..223c562fdf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ServedGUMMEIsItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_ServedGUMMEIsItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedGUMMEIsItem, servedPLMNs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ServedPLMNs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedPLMNs" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedGUMMEIsItem, servedGroupIDs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ServedGroupIDs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedGroupIDs" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_ServedGUMMEIsItem, servedMMECs), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ServedMMECs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedMMECs" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_ServedGUMMEIsItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P93, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_ServedGUMMEIsItem_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_ServedGUMMEIsItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_ServedGUMMEIsItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedPLMNs */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedGroupIDs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* servedMMECs */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_ServedGUMMEIsItem_specs_1 = { + sizeof(struct S1AP_ServedGUMMEIsItem), + offsetof(struct S1AP_ServedGUMMEIsItem, _asn_ctx), + asn_MAP_S1AP_ServedGUMMEIsItem_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_ServedGUMMEIsItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ServedGUMMEIsItem = { + "ServedGUMMEIsItem", + "ServedGUMMEIsItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_ServedGUMMEIsItem_tags_1, + sizeof(asn_DEF_S1AP_ServedGUMMEIsItem_tags_1) + /sizeof(asn_DEF_S1AP_ServedGUMMEIsItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ServedGUMMEIsItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ServedGUMMEIsItem_tags_1) + /sizeof(asn_DEF_S1AP_ServedGUMMEIsItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_ServedGUMMEIsItem_1, + 4, /* Elements count */ + &asn_SPC_S1AP_ServedGUMMEIsItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.h b/lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.h new file mode 100644 index 0000000000..d88bd8e3da --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedGUMMEIsItem.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ServedGUMMEIsItem_H_ +#define _S1AP_ServedGUMMEIsItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ServedPLMNs.h" +#include "S1AP_ServedGroupIDs.h" +#include "S1AP_ServedMMECs.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_ServedGUMMEIsItem */ +typedef struct S1AP_ServedGUMMEIsItem { + S1AP_ServedPLMNs_t servedPLMNs; + S1AP_ServedGroupIDs_t servedGroupIDs; + S1AP_ServedMMECs_t servedMMECs; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ServedGUMMEIsItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ServedGUMMEIsItem; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_ServedGUMMEIsItem_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ServedGUMMEIsItem_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ServedGUMMEIsItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ServedGroupIDs.c b/lib/s1ap3/asn1c/S1AP_ServedGroupIDs.c new file mode 100644 index 0000000000..910afc16c8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedGroupIDs.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ServedGroupIDs.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_ServedGroupIDs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ServedGroupIDs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ServedGroupIDs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_MME_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ServedGroupIDs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ServedGroupIDs_specs_1 = { + sizeof(struct S1AP_ServedGroupIDs), + offsetof(struct S1AP_ServedGroupIDs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ServedGroupIDs = { + "ServedGroupIDs", + "ServedGroupIDs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ServedGroupIDs_tags_1, + sizeof(asn_DEF_S1AP_ServedGroupIDs_tags_1) + /sizeof(asn_DEF_S1AP_ServedGroupIDs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ServedGroupIDs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ServedGroupIDs_tags_1) + /sizeof(asn_DEF_S1AP_ServedGroupIDs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ServedGroupIDs_constr_1, &asn_PER_type_S1AP_ServedGroupIDs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ServedGroupIDs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ServedGroupIDs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ServedGroupIDs.h b/lib/s1ap3/asn1c/S1AP_ServedGroupIDs.h new file mode 100644 index 0000000000..4c1b8d1f6a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedGroupIDs.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ServedGroupIDs_H_ +#define _S1AP_ServedGroupIDs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MME-Group-ID.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ServedGroupIDs */ +typedef struct S1AP_ServedGroupIDs { + A_SEQUENCE_OF(S1AP_MME_Group_ID_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ServedGroupIDs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ServedGroupIDs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ServedGroupIDs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ServedGroupIDs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ServedGroupIDs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ServedGroupIDs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ServedMMECs.c b/lib/s1ap3/asn1c/S1AP_ServedMMECs.c new file mode 100644 index 0000000000..e3622fde03 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedMMECs.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ServedMMECs.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_ServedMMECs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ServedMMECs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ServedMMECs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_MME_Code, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ServedMMECs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ServedMMECs_specs_1 = { + sizeof(struct S1AP_ServedMMECs), + offsetof(struct S1AP_ServedMMECs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ServedMMECs = { + "ServedMMECs", + "ServedMMECs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ServedMMECs_tags_1, + sizeof(asn_DEF_S1AP_ServedMMECs_tags_1) + /sizeof(asn_DEF_S1AP_ServedMMECs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ServedMMECs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ServedMMECs_tags_1) + /sizeof(asn_DEF_S1AP_ServedMMECs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ServedMMECs_constr_1, &asn_PER_type_S1AP_ServedMMECs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ServedMMECs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ServedMMECs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ServedMMECs.h b/lib/s1ap3/asn1c/S1AP_ServedMMECs.h new file mode 100644 index 0000000000..6d34bca1ee --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedMMECs.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ServedMMECs_H_ +#define _S1AP_ServedMMECs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MME-Code.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ServedMMECs */ +typedef struct S1AP_ServedMMECs { + A_SEQUENCE_OF(S1AP_MME_Code_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ServedMMECs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ServedMMECs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ServedMMECs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ServedMMECs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ServedMMECs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ServedMMECs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_ServedPLMNs.c b/lib/s1ap3/asn1c/S1AP_ServedPLMNs.c new file mode 100644 index 0000000000..355d4249c7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedPLMNs.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_ServedPLMNs.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_ServedPLMNs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..32)) */}; +asn_per_constraints_t asn_PER_type_S1AP_ServedPLMNs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_ServedPLMNs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_ServedPLMNs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_ServedPLMNs_specs_1 = { + sizeof(struct S1AP_ServedPLMNs), + offsetof(struct S1AP_ServedPLMNs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_ServedPLMNs = { + "ServedPLMNs", + "ServedPLMNs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_ServedPLMNs_tags_1, + sizeof(asn_DEF_S1AP_ServedPLMNs_tags_1) + /sizeof(asn_DEF_S1AP_ServedPLMNs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_ServedPLMNs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_ServedPLMNs_tags_1) + /sizeof(asn_DEF_S1AP_ServedPLMNs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_ServedPLMNs_constr_1, &asn_PER_type_S1AP_ServedPLMNs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_ServedPLMNs_1, + 1, /* Single element */ + &asn_SPC_S1AP_ServedPLMNs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_ServedPLMNs.h b/lib/s1ap3/asn1c/S1AP_ServedPLMNs.h new file mode 100644 index 0000000000..421ee566ca --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_ServedPLMNs.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_ServedPLMNs_H_ +#define _S1AP_ServedPLMNs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_ServedPLMNs */ +typedef struct S1AP_ServedPLMNs { + A_SEQUENCE_OF(S1AP_PLMNidentity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_ServedPLMNs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_ServedPLMNs; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_ServedPLMNs_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_ServedPLMNs_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_ServedPLMNs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ServedPLMNs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Source-ToTarget-TransparentContainer.c b/lib/s1ap3/asn1c/S1AP_Source-ToTarget-TransparentContainer.c new file mode 100644 index 0000000000..e053ebfc22 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Source-ToTarget-TransparentContainer.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Source-ToTarget-TransparentContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_Source_ToTarget_TransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Source_ToTarget_TransparentContainer = { + "Source-ToTarget-TransparentContainer", + "Source-ToTarget-TransparentContainer", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Source_ToTarget_TransparentContainer_tags_1, + sizeof(asn_DEF_S1AP_Source_ToTarget_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_Source_ToTarget_TransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Source_ToTarget_TransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Source_ToTarget_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_Source_ToTarget_TransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Source-ToTarget-TransparentContainer.h b/lib/s1ap3/asn1c/S1AP_Source-ToTarget-TransparentContainer.h new file mode 100644 index 0000000000..f7438d3c56 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Source-ToTarget-TransparentContainer.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Source_ToTarget_TransparentContainer_H_ +#define _S1AP_Source_ToTarget_TransparentContainer_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Source-ToTarget-TransparentContainer */ +typedef OCTET_STRING_t S1AP_Source_ToTarget_TransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Source_ToTarget_TransparentContainer; +asn_struct_free_f S1AP_Source_ToTarget_TransparentContainer_free; +asn_struct_print_f S1AP_Source_ToTarget_TransparentContainer_print; +asn_constr_check_f S1AP_Source_ToTarget_TransparentContainer_constraint; +ber_type_decoder_f S1AP_Source_ToTarget_TransparentContainer_decode_ber; +der_type_encoder_f S1AP_Source_ToTarget_TransparentContainer_encode_der; +xer_type_decoder_f S1AP_Source_ToTarget_TransparentContainer_decode_xer; +xer_type_encoder_f S1AP_Source_ToTarget_TransparentContainer_encode_xer; +oer_type_decoder_f S1AP_Source_ToTarget_TransparentContainer_decode_oer; +oer_type_encoder_f S1AP_Source_ToTarget_TransparentContainer_encode_oer; +per_type_decoder_f S1AP_Source_ToTarget_TransparentContainer_decode_uper; +per_type_encoder_f S1AP_Source_ToTarget_TransparentContainer_encode_uper; +per_type_decoder_f S1AP_Source_ToTarget_TransparentContainer_decode_aper; +per_type_encoder_f S1AP_Source_ToTarget_TransparentContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Source_ToTarget_TransparentContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SourceBSS-ToTargetBSS-TransparentContainer.c b/lib/s1ap3/asn1c/S1AP_SourceBSS-ToTargetBSS-TransparentContainer.c new file mode 100644 index 0000000000..c78a063046 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceBSS-ToTargetBSS-TransparentContainer.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SourceBSS-ToTargetBSS-TransparentContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SourceBSS_ToTargetBSS_TransparentContainer = { + "SourceBSS-ToTargetBSS-TransparentContainer", + "SourceBSS-ToTargetBSS-TransparentContainer", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1, + sizeof(asn_DEF_S1AP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_SourceBSS_ToTargetBSS_TransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SourceBSS-ToTargetBSS-TransparentContainer.h b/lib/s1ap3/asn1c/S1AP_SourceBSS-ToTargetBSS-TransparentContainer.h new file mode 100644 index 0000000000..5e05f5a228 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceBSS-ToTargetBSS-TransparentContainer.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SourceBSS_ToTargetBSS_TransparentContainer_H_ +#define _S1AP_SourceBSS_ToTargetBSS_TransparentContainer_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_SourceBSS-ToTargetBSS-TransparentContainer */ +typedef OCTET_STRING_t S1AP_SourceBSS_ToTargetBSS_TransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SourceBSS_ToTargetBSS_TransparentContainer; +asn_struct_free_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_free; +asn_struct_print_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_print; +asn_constr_check_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_constraint; +ber_type_decoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_decode_ber; +der_type_encoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_encode_der; +xer_type_decoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_decode_xer; +xer_type_encoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_encode_xer; +oer_type_decoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_decode_oer; +oer_type_encoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_encode_oer; +per_type_decoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_decode_uper; +per_type_encoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_encode_uper; +per_type_decoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_decode_aper; +per_type_encoder_f S1AP_SourceBSS_ToTargetBSS_TransparentContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SourceBSS_ToTargetBSS_TransparentContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SourceOfUEActivityBehaviourInformation.c b/lib/s1ap3/asn1c/S1AP_SourceOfUEActivityBehaviourInformation.c new file mode 100644 index 0000000000..d8ef485d49 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceOfUEActivityBehaviourInformation.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SourceOfUEActivityBehaviourInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_SourceOfUEActivityBehaviourInformation_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_SourceOfUEActivityBehaviourInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_SourceOfUEActivityBehaviourInformation_value2enum_1[] = { + { 0, 24, "subscription-information" }, + { 1, 10, "statistics" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_SourceOfUEActivityBehaviourInformation_enum2value_1[] = { + 1, /* statistics(1) */ + 0 /* subscription-information(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_SourceOfUEActivityBehaviourInformation_specs_1 = { + asn_MAP_S1AP_SourceOfUEActivityBehaviourInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_SourceOfUEActivityBehaviourInformation_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation = { + "SourceOfUEActivityBehaviourInformation", + "SourceOfUEActivityBehaviourInformation", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation_tags_1, + sizeof(asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation_tags_1) + /sizeof(asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation_tags_1) + /sizeof(asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SourceOfUEActivityBehaviourInformation_constr_1, &asn_PER_type_S1AP_SourceOfUEActivityBehaviourInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_SourceOfUEActivityBehaviourInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SourceOfUEActivityBehaviourInformation.h b/lib/s1ap3/asn1c/S1AP_SourceOfUEActivityBehaviourInformation.h new file mode 100644 index 0000000000..a6ca4ec21d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceOfUEActivityBehaviourInformation.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SourceOfUEActivityBehaviourInformation_H_ +#define _S1AP_SourceOfUEActivityBehaviourInformation_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_SourceOfUEActivityBehaviourInformation { + S1AP_SourceOfUEActivityBehaviourInformation_subscription_information = 0, + S1AP_SourceOfUEActivityBehaviourInformation_statistics = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_SourceOfUEActivityBehaviourInformation; + +/* S1AP_SourceOfUEActivityBehaviourInformation */ +typedef long S1AP_SourceOfUEActivityBehaviourInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_SourceOfUEActivityBehaviourInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SourceOfUEActivityBehaviourInformation; +extern const asn_INTEGER_specifics_t asn_SPC_SourceOfUEActivityBehaviourInformation_specs_1; +asn_struct_free_f SourceOfUEActivityBehaviourInformation_free; +asn_struct_print_f SourceOfUEActivityBehaviourInformation_print; +asn_constr_check_f SourceOfUEActivityBehaviourInformation_constraint; +ber_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_ber; +der_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_der; +xer_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_xer; +xer_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_xer; +oer_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_oer; +oer_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_oer; +per_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_uper; +per_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_uper; +per_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_aper; +per_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SourceOfUEActivityBehaviourInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SourceRNC-ToTargetRNC-TransparentContainer.c b/lib/s1ap3/asn1c/S1AP_SourceRNC-ToTargetRNC-TransparentContainer.c new file mode 100644 index 0000000000..ad332f0fc8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceRNC-ToTargetRNC-TransparentContainer.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SourceRNC-ToTargetRNC-TransparentContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SourceRNC_ToTargetRNC_TransparentContainer = { + "SourceRNC-ToTargetRNC-TransparentContainer", + "SourceRNC-ToTargetRNC-TransparentContainer", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1, + sizeof(asn_DEF_S1AP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_SourceRNC_ToTargetRNC_TransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SourceRNC-ToTargetRNC-TransparentContainer.h b/lib/s1ap3/asn1c/S1AP_SourceRNC-ToTargetRNC-TransparentContainer.h new file mode 100644 index 0000000000..f0d4b30432 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceRNC-ToTargetRNC-TransparentContainer.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SourceRNC_ToTargetRNC_TransparentContainer_H_ +#define _S1AP_SourceRNC_ToTargetRNC_TransparentContainer_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_SourceRNC-ToTargetRNC-TransparentContainer */ +typedef OCTET_STRING_t S1AP_SourceRNC_ToTargetRNC_TransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SourceRNC_ToTargetRNC_TransparentContainer; +asn_struct_free_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_free; +asn_struct_print_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_print; +asn_constr_check_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_constraint; +ber_type_decoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_decode_ber; +der_type_encoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_encode_der; +xer_type_decoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_decode_xer; +xer_type_encoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_encode_xer; +oer_type_decoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_decode_oer; +oer_type_encoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_encode_oer; +per_type_decoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_decode_uper; +per_type_encoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_encode_uper; +per_type_decoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_decode_aper; +per_type_encoder_f S1AP_SourceRNC_ToTargetRNC_TransparentContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SourceRNC_ToTargetRNC_TransparentContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SourceeNB-ID.c b/lib/s1ap3/asn1c/S1AP_SourceeNB-ID.c new file mode 100644 index 0000000000..738d82b603 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceeNB-ID.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SourceeNB-ID.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_SourceeNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ID, global_ENB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Global_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-ENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ID, selected_TAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "selected-TAI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_SourceeNB_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P91, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_SourceeNB_ID_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_SourceeNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SourceeNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-ENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* selected-TAI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SourceeNB_ID_specs_1 = { + sizeof(struct S1AP_SourceeNB_ID), + offsetof(struct S1AP_SourceeNB_ID, _asn_ctx), + asn_MAP_S1AP_SourceeNB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_SourceeNB_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SourceeNB_ID = { + "SourceeNB-ID", + "SourceeNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SourceeNB_ID_tags_1, + sizeof(asn_DEF_S1AP_SourceeNB_ID_tags_1) + /sizeof(asn_DEF_S1AP_SourceeNB_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SourceeNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SourceeNB_ID_tags_1) + /sizeof(asn_DEF_S1AP_SourceeNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SourceeNB_ID_1, + 3, /* Elements count */ + &asn_SPC_S1AP_SourceeNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SourceeNB-ID.h b/lib/s1ap3/asn1c/S1AP_SourceeNB-ID.h new file mode 100644 index 0000000000..1b6e728ecf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceeNB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SourceeNB_ID_H_ +#define _S1AP_SourceeNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_Global-ENB-ID.h" +#include "S1AP_TAI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_SourceeNB-ID */ +typedef struct S1AP_SourceeNB_ID { + S1AP_Global_ENB_ID_t global_ENB_ID; + S1AP_TAI_t selected_TAI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SourceeNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SourceeNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SourceeNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_SourceeNB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SourceeNB_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SourceeNB-ToTargeteNB-TransparentContainer.c b/lib/s1ap3/asn1c/S1AP_SourceeNB-ToTargeteNB-TransparentContainer.c new file mode 100644 index 0000000000..1a18bbacf4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceeNB-ToTargeteNB-TransparentContainer.c @@ -0,0 +1,104 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SourceeNB-ToTargeteNB-TransparentContainer.h" + +#include "S1AP_E-RABInformationList.h" +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer, rRC_Container), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RRC_Container, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rRC-Container" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer, e_RABInformationList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_RABInformationList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABInformationList" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer, targetCell_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "targetCell-ID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer, subscriberProfileIDforRFP), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer, uE_HistoryInformation), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_UE_HistoryInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uE-HistoryInformation" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P92, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_oms_1[] = { 1, 3, 5 }; +static const ber_tlv_tag_t asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rRC-Container */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RABInformationList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* targetCell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* subscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uE-HistoryInformation */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_specs_1 = { + sizeof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer), + offsetof(struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer, _asn_ctx), + asn_MAP_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer = { + "SourceeNB-ToTargeteNB-TransparentContainer", + "SourceeNB-ToTargeteNB-TransparentContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_tags_1, + sizeof(asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_1, + 6, /* Elements count */ + &asn_SPC_S1AP_SourceeNB_ToTargeteNB_TransparentContainer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SourceeNB-ToTargeteNB-TransparentContainer.h b/lib/s1ap3/asn1c/S1AP_SourceeNB-ToTargeteNB-TransparentContainer.h new file mode 100644 index 0000000000..d33c831f61 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SourceeNB-ToTargeteNB-TransparentContainer.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SourceeNB_ToTargeteNB_TransparentContainer_H_ +#define _S1AP_SourceeNB_ToTargeteNB_TransparentContainer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_RRC-Container.h" +#include "S1AP_EUTRAN-CGI.h" +#include "S1AP_SubscriberProfileIDforRFP.h" +#include "S1AP_UE-HistoryInformation.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_E_RABInformationList; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_SourceeNB-ToTargeteNB-TransparentContainer */ +typedef struct S1AP_SourceeNB_ToTargeteNB_TransparentContainer { + S1AP_RRC_Container_t rRC_Container; + struct S1AP_E_RABInformationList *e_RABInformationList; /* OPTIONAL */ + S1AP_EUTRAN_CGI_t targetCell_ID; + S1AP_SubscriberProfileIDforRFP_t *subscriberProfileIDforRFP; /* OPTIONAL */ + S1AP_UE_HistoryInformation_t uE_HistoryInformation; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SourceeNB_ToTargeteNB_TransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SourceeNB_ToTargeteNB_TransparentContainer; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SourceeNB_ToTargeteNB_TransparentContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_StratumLevel.c b/lib/s1ap3/asn1c/S1AP_StratumLevel.c new file mode 100644 index 0000000000..69ec4d0492 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_StratumLevel.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_StratumLevel.h" + +int +S1AP_StratumLevel_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_StratumLevel_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_StratumLevel_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_StratumLevel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_StratumLevel = { + "StratumLevel", + "StratumLevel", + &asn_OP_NativeInteger, + asn_DEF_S1AP_StratumLevel_tags_1, + sizeof(asn_DEF_S1AP_StratumLevel_tags_1) + /sizeof(asn_DEF_S1AP_StratumLevel_tags_1[0]), /* 1 */ + asn_DEF_S1AP_StratumLevel_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_StratumLevel_tags_1) + /sizeof(asn_DEF_S1AP_StratumLevel_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_StratumLevel_constr_1, &asn_PER_type_S1AP_StratumLevel_constr_1, S1AP_StratumLevel_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_StratumLevel.h b/lib/s1ap3/asn1c/S1AP_StratumLevel.h new file mode 100644 index 0000000000..833165ddea --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_StratumLevel.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_StratumLevel_H_ +#define _S1AP_StratumLevel_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_StratumLevel */ +typedef long S1AP_StratumLevel_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_StratumLevel_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_StratumLevel; +asn_struct_free_f S1AP_StratumLevel_free; +asn_struct_print_f S1AP_StratumLevel_print; +asn_constr_check_f S1AP_StratumLevel_constraint; +ber_type_decoder_f S1AP_StratumLevel_decode_ber; +der_type_encoder_f S1AP_StratumLevel_encode_der; +xer_type_decoder_f S1AP_StratumLevel_decode_xer; +xer_type_encoder_f S1AP_StratumLevel_encode_xer; +oer_type_decoder_f S1AP_StratumLevel_decode_oer; +oer_type_encoder_f S1AP_StratumLevel_encode_oer; +per_type_decoder_f S1AP_StratumLevel_decode_uper; +per_type_encoder_f S1AP_StratumLevel_encode_uper; +per_type_decoder_f S1AP_StratumLevel_decode_aper; +per_type_encoder_f S1AP_StratumLevel_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_StratumLevel_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SubscriberProfileIDforRFP.c b/lib/s1ap3/asn1c/S1AP_SubscriberProfileIDforRFP.c new file mode 100644 index 0000000000..57fa408de9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SubscriberProfileIDforRFP.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SubscriberProfileIDforRFP.h" + +int +S1AP_SubscriberProfileIDforRFP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_SubscriberProfileIDforRFP_constr_1 CC_NOTUSED = { + { 2, 1 } /* (1..256) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_SubscriberProfileIDforRFP_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (1..256) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SubscriberProfileIDforRFP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SubscriberProfileIDforRFP = { + "SubscriberProfileIDforRFP", + "SubscriberProfileIDforRFP", + &asn_OP_NativeInteger, + asn_DEF_S1AP_SubscriberProfileIDforRFP_tags_1, + sizeof(asn_DEF_S1AP_SubscriberProfileIDforRFP_tags_1) + /sizeof(asn_DEF_S1AP_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SubscriberProfileIDforRFP_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SubscriberProfileIDforRFP_tags_1) + /sizeof(asn_DEF_S1AP_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SubscriberProfileIDforRFP_constr_1, &asn_PER_type_S1AP_SubscriberProfileIDforRFP_constr_1, S1AP_SubscriberProfileIDforRFP_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SubscriberProfileIDforRFP.h b/lib/s1ap3/asn1c/S1AP_SubscriberProfileIDforRFP.h new file mode 100644 index 0000000000..8d509886d4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SubscriberProfileIDforRFP.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SubscriberProfileIDforRFP_H_ +#define _S1AP_SubscriberProfileIDforRFP_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_SubscriberProfileIDforRFP */ +typedef long S1AP_SubscriberProfileIDforRFP_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_SubscriberProfileIDforRFP_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SubscriberProfileIDforRFP; +asn_struct_free_f S1AP_SubscriberProfileIDforRFP_free; +asn_struct_print_f S1AP_SubscriberProfileIDforRFP_print; +asn_constr_check_f S1AP_SubscriberProfileIDforRFP_constraint; +ber_type_decoder_f S1AP_SubscriberProfileIDforRFP_decode_ber; +der_type_encoder_f S1AP_SubscriberProfileIDforRFP_encode_der; +xer_type_decoder_f S1AP_SubscriberProfileIDforRFP_decode_xer; +xer_type_encoder_f S1AP_SubscriberProfileIDforRFP_encode_xer; +oer_type_decoder_f S1AP_SubscriberProfileIDforRFP_decode_oer; +oer_type_encoder_f S1AP_SubscriberProfileIDforRFP_encode_oer; +per_type_decoder_f S1AP_SubscriberProfileIDforRFP_decode_uper; +per_type_encoder_f S1AP_SubscriberProfileIDforRFP_encode_uper; +per_type_decoder_f S1AP_SubscriberProfileIDforRFP_decode_aper; +per_type_encoder_f S1AP_SubscriberProfileIDforRFP_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SubscriberProfileIDforRFP_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.c b/lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.c new file mode 100644 index 0000000000..4377e9dbf2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.c @@ -0,0 +1,892 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SuccessfulOutcome.h" + +static const long asn_VAL_1_S1AP_id_HandoverPreparation = 0; +static const long asn_VAL_1_S1AP_reject = 0; +static const long asn_VAL_2_S1AP_id_HandoverResourceAllocation = 1; +static const long asn_VAL_2_S1AP_reject = 0; +static const long asn_VAL_3_S1AP_id_PathSwitchRequest = 3; +static const long asn_VAL_3_S1AP_reject = 0; +static const long asn_VAL_4_S1AP_id_E_RABSetup = 5; +static const long asn_VAL_4_S1AP_reject = 0; +static const long asn_VAL_5_S1AP_id_E_RABModify = 6; +static const long asn_VAL_5_S1AP_reject = 0; +static const long asn_VAL_6_S1AP_id_E_RABRelease = 7; +static const long asn_VAL_6_S1AP_reject = 0; +static const long asn_VAL_7_S1AP_id_InitialContextSetup = 9; +static const long asn_VAL_7_S1AP_reject = 0; +static const long asn_VAL_8_S1AP_id_HandoverCancel = 4; +static const long asn_VAL_8_S1AP_reject = 0; +static const long asn_VAL_9_S1AP_id_Kill = 43; +static const long asn_VAL_9_S1AP_reject = 0; +static const long asn_VAL_10_S1AP_id_Reset = 14; +static const long asn_VAL_10_S1AP_reject = 0; +static const long asn_VAL_11_S1AP_id_S1Setup = 17; +static const long asn_VAL_11_S1AP_reject = 0; +static const long asn_VAL_12_S1AP_id_UEContextModification = 21; +static const long asn_VAL_12_S1AP_reject = 0; +static const long asn_VAL_13_S1AP_id_UEContextRelease = 23; +static const long asn_VAL_13_S1AP_reject = 0; +static const long asn_VAL_14_S1AP_id_ENBConfigurationUpdate = 29; +static const long asn_VAL_14_S1AP_reject = 0; +static const long asn_VAL_15_S1AP_id_MMEConfigurationUpdate = 30; +static const long asn_VAL_15_S1AP_reject = 0; +static const long asn_VAL_16_S1AP_id_WriteReplaceWarning = 36; +static const long asn_VAL_16_S1AP_reject = 0; +static const long asn_VAL_17_S1AP_id_UERadioCapabilityMatch = 48; +static const long asn_VAL_17_S1AP_reject = 0; +static const long asn_VAL_18_S1AP_id_E_RABModificationIndication = 50; +static const long asn_VAL_18_S1AP_reject = 0; +static const long asn_VAL_19_S1AP_id_UEContextModificationIndication = 53; +static const long asn_VAL_19_S1AP_reject = 0; +static const long asn_VAL_20_S1AP_id_UEContextSuspend = 55; +static const long asn_VAL_20_S1AP_reject = 0; +static const long asn_VAL_21_S1AP_id_UEContextResume = 56; +static const long asn_VAL_21_S1AP_reject = 0; +static const long asn_VAL_22_S1AP_id_HandoverNotification = 2; +static const long asn_VAL_22_S1AP_ignore = 1; +static const long asn_VAL_23_S1AP_id_E_RABReleaseIndication = 8; +static const long asn_VAL_23_S1AP_ignore = 1; +static const long asn_VAL_24_S1AP_id_Paging = 10; +static const long asn_VAL_24_S1AP_ignore = 1; +static const long asn_VAL_25_S1AP_id_downlinkNASTransport = 11; +static const long asn_VAL_25_S1AP_ignore = 1; +static const long asn_VAL_26_S1AP_id_initialUEMessage = 12; +static const long asn_VAL_26_S1AP_ignore = 1; +static const long asn_VAL_27_S1AP_id_uplinkNASTransport = 13; +static const long asn_VAL_27_S1AP_ignore = 1; +static const long asn_VAL_28_S1AP_id_ErrorIndication = 15; +static const long asn_VAL_28_S1AP_ignore = 1; +static const long asn_VAL_29_S1AP_id_NASNonDeliveryIndication = 16; +static const long asn_VAL_29_S1AP_ignore = 1; +static const long asn_VAL_30_S1AP_id_UEContextReleaseRequest = 18; +static const long asn_VAL_30_S1AP_ignore = 1; +static const long asn_VAL_31_S1AP_id_DownlinkS1cdma2000tunnelling = 19; +static const long asn_VAL_31_S1AP_ignore = 1; +static const long asn_VAL_32_S1AP_id_UplinkS1cdma2000tunnelling = 20; +static const long asn_VAL_32_S1AP_ignore = 1; +static const long asn_VAL_33_S1AP_id_UECapabilityInfoIndication = 22; +static const long asn_VAL_33_S1AP_ignore = 1; +static const long asn_VAL_34_S1AP_id_eNBStatusTransfer = 24; +static const long asn_VAL_34_S1AP_ignore = 1; +static const long asn_VAL_35_S1AP_id_MMEStatusTransfer = 25; +static const long asn_VAL_35_S1AP_ignore = 1; +static const long asn_VAL_36_S1AP_id_DeactivateTrace = 26; +static const long asn_VAL_36_S1AP_ignore = 1; +static const long asn_VAL_37_S1AP_id_TraceStart = 27; +static const long asn_VAL_37_S1AP_ignore = 1; +static const long asn_VAL_38_S1AP_id_TraceFailureIndication = 28; +static const long asn_VAL_38_S1AP_ignore = 1; +static const long asn_VAL_39_S1AP_id_CellTrafficTrace = 42; +static const long asn_VAL_39_S1AP_ignore = 1; +static const long asn_VAL_40_S1AP_id_LocationReportingControl = 31; +static const long asn_VAL_40_S1AP_ignore = 1; +static const long asn_VAL_41_S1AP_id_LocationReportingFailureIndication = 32; +static const long asn_VAL_41_S1AP_ignore = 1; +static const long asn_VAL_42_S1AP_id_LocationReport = 33; +static const long asn_VAL_42_S1AP_ignore = 1; +static const long asn_VAL_43_S1AP_id_OverloadStart = 34; +static const long asn_VAL_43_S1AP_ignore = 1; +static const long asn_VAL_44_S1AP_id_OverloadStop = 35; +static const long asn_VAL_44_S1AP_reject = 0; +static const long asn_VAL_45_S1AP_id_eNBDirectInformationTransfer = 37; +static const long asn_VAL_45_S1AP_ignore = 1; +static const long asn_VAL_46_S1AP_id_MMEDirectInformationTransfer = 38; +static const long asn_VAL_46_S1AP_ignore = 1; +static const long asn_VAL_47_S1AP_id_eNBConfigurationTransfer = 40; +static const long asn_VAL_47_S1AP_ignore = 1; +static const long asn_VAL_48_S1AP_id_MMEConfigurationTransfer = 41; +static const long asn_VAL_48_S1AP_ignore = 1; +static const long asn_VAL_49_S1AP_id_PrivateMessage = 39; +static const long asn_VAL_49_S1AP_ignore = 1; +static const long asn_VAL_50_S1AP_id_downlinkUEAssociatedLPPaTransport = 44; +static const long asn_VAL_50_S1AP_ignore = 1; +static const long asn_VAL_51_S1AP_id_uplinkUEAssociatedLPPaTransport = 45; +static const long asn_VAL_51_S1AP_ignore = 1; +static const long asn_VAL_52_S1AP_id_downlinkNonUEAssociatedLPPaTransport = 46; +static const long asn_VAL_52_S1AP_ignore = 1; +static const long asn_VAL_53_S1AP_id_uplinkNonUEAssociatedLPPaTransport = 47; +static const long asn_VAL_53_S1AP_ignore = 1; +static const long asn_VAL_54_S1AP_id_PWSRestartIndication = 49; +static const long asn_VAL_54_S1AP_ignore = 1; +static const long asn_VAL_55_S1AP_id_RerouteNASRequest = 52; +static const long asn_VAL_55_S1AP_reject = 0; +static const long asn_VAL_56_S1AP_id_PWSFailureIndication = 51; +static const long asn_VAL_56_S1AP_ignore = 1; +static const long asn_VAL_57_S1AP_id_ConnectionEstablishmentIndication = 54; +static const long asn_VAL_57_S1AP_reject = 0; +static const long asn_VAL_58_S1AP_id_NASDeliveryIndication = 57; +static const long asn_VAL_58_S1AP_ignore = 1; +static const long asn_VAL_59_S1AP_id_RetrieveUEInformation = 58; +static const long asn_VAL_59_S1AP_reject = 0; +static const long asn_VAL_60_S1AP_id_UEInformationTransfer = 59; +static const long asn_VAL_60_S1AP_reject = 0; +static const long asn_VAL_61_S1AP_id_eNBCPRelocationIndication = 60; +static const long asn_VAL_61_S1AP_reject = 0; +static const long asn_VAL_62_S1AP_id_MMECPRelocationIndication = 61; +static const long asn_VAL_62_S1AP_reject = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverRequired }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverCommand }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverPreparationFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_1_S1AP_id_HandoverPreparation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_1_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverRequestAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_2_S1AP_id_HandoverResourceAllocation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_2_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PathSwitchRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_PathSwitchRequestAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_PathSwitchRequestFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_3_S1AP_id_PathSwitchRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_3_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABSetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABSetupResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_4_S1AP_id_E_RABSetup }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_4_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABModifyRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABModifyResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_5_S1AP_id_E_RABModify }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_5_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABReleaseCommand }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABReleaseResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_6_S1AP_id_E_RABRelease }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_6_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_InitialContextSetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_InitialContextSetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_InitialContextSetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_7_S1AP_id_InitialContextSetup }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_7_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverCancel }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverCancelAcknowledge }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_8_S1AP_id_HandoverCancel }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_8_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_KillRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_KillResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_9_S1AP_id_Kill }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_9_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_Reset }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_ResetAcknowledge }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_10_S1AP_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_10_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_S1SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_S1SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_S1SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_11_S1AP_id_S1Setup }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_11_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextModificationRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextModificationResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextModificationFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_12_S1AP_id_UEContextModification }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_12_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextReleaseCommand }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextReleaseComplete }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_13_S1AP_id_UEContextRelease }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_13_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_ENBConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_14_S1AP_id_ENBConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_14_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_MMEConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_15_S1AP_id_MMEConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_15_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_WriteReplaceWarningRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_WriteReplaceWarningResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_16_S1AP_id_WriteReplaceWarning }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_16_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UERadioCapabilityMatchRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UERadioCapabilityMatchResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_17_S1AP_id_UERadioCapabilityMatch }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_17_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABModificationIndication }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABModificationConfirm }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_18_S1AP_id_E_RABModificationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_18_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextModificationIndication }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextModificationConfirm }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_19_S1AP_id_UEContextModificationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_19_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextSuspendRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextSuspendResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_20_S1AP_id_UEContextSuspend }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_20_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextResumeRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextResumeResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextResumeFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_21_S1AP_id_UEContextResume }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_21_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverNotify }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_22_S1AP_id_HandoverNotification }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_22_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABReleaseIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_23_S1AP_id_E_RABReleaseIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_23_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_Paging }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_24_S1AP_id_Paging }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_24_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkNASTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_25_S1AP_id_downlinkNASTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_25_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_InitialUEMessage }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_26_S1AP_id_initialUEMessage }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_26_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkNASTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_27_S1AP_id_uplinkNASTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_27_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_28_S1AP_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_28_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_NASNonDeliveryIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_29_S1AP_id_NASNonDeliveryIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_29_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextReleaseRequest }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_30_S1AP_id_UEContextReleaseRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_30_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkS1cdma2000tunnelling }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_31_S1AP_id_DownlinkS1cdma2000tunnelling }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_31_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkS1cdma2000tunnelling }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_32_S1AP_id_UplinkS1cdma2000tunnelling }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_32_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UECapabilityInfoIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_33_S1AP_id_UECapabilityInfoIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_33_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBStatusTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_34_S1AP_id_eNBStatusTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_34_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEStatusTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_35_S1AP_id_MMEStatusTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_35_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DeactivateTrace }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_36_S1AP_id_DeactivateTrace }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_36_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_TraceStart }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_37_S1AP_id_TraceStart }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_37_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_TraceFailureIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_38_S1AP_id_TraceFailureIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_38_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_CellTrafficTrace }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_39_S1AP_id_CellTrafficTrace }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_39_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_LocationReportingControl }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_40_S1AP_id_LocationReportingControl }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_40_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_LocationReportingFailureIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_41_S1AP_id_LocationReportingFailureIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_41_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_LocationReport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_42_S1AP_id_LocationReport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_42_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_OverloadStart }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_43_S1AP_id_OverloadStart }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_43_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_OverloadStop }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_44_S1AP_id_OverloadStop }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_44_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBDirectInformationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_45_S1AP_id_eNBDirectInformationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_45_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEDirectInformationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_46_S1AP_id_MMEDirectInformationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_46_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBConfigurationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_47_S1AP_id_eNBConfigurationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_47_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEConfigurationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_48_S1AP_id_MMEConfigurationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_48_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PrivateMessage }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_49_S1AP_id_PrivateMessage }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_49_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_50_S1AP_id_downlinkUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_50_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_51_S1AP_id_uplinkUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_51_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_52_S1AP_id_downlinkNonUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_52_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_53_S1AP_id_uplinkNonUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_53_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PWSRestartIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_54_S1AP_id_PWSRestartIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_54_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_RerouteNASRequest }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_55_S1AP_id_RerouteNASRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_55_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PWSFailureIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_56_S1AP_id_PWSFailureIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_56_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ConnectionEstablishmentIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_57_S1AP_id_ConnectionEstablishmentIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_57_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_NASDeliveryIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_58_S1AP_id_NASDeliveryIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_58_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_RetrieveUEInformation }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_59_S1AP_id_RetrieveUEInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_59_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEInformationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_60_S1AP_id_UEInformationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_60_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBCPRelocationIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_61_S1AP_id_eNBCPRelocationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_61_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMECPRelocationIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_62_S1AP_id_MMECPRelocationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_62_S1AP_reject } +}; +static const asn_ioc_set_t asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1[] = { + { 62, 5, asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_S1AP_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 1; /* &SuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_procedureCode_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.HandoverCommand), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverCommand, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverCommand" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.HandoverRequestAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverRequestAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRequestAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.PathSwitchRequestAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PathSwitchRequestAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PathSwitchRequestAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.E_RABSetupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABSetupResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABSetupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.E_RABModifyResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModifyResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABModifyResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.E_RABReleaseResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABReleaseResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABReleaseResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.InitialContextSetupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InitialContextSetupResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitialContextSetupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.HandoverCancelAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverCancelAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverCancelAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.KillResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_KillResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "KillResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.ResetAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ResetAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.S1SetupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S1SetupResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "S1SetupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.UEContextModificationResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextModificationResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.UEContextReleaseComplete), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextReleaseComplete, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextReleaseComplete" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.ENBConfigurationUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.MMEConfigurationUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMEConfigurationUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.WriteReplaceWarningResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_WriteReplaceWarningResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "WriteReplaceWarningResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.UERadioCapabilityMatchResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UERadioCapabilityMatchResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UERadioCapabilityMatchResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.E_RABModificationConfirm), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_E_RABModificationConfirm, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABModificationConfirm" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.UEContextModificationConfirm), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationConfirm, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextModificationConfirm" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.UEContextSuspendResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextSuspendResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextSuspendResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome__value, choice.UEContextResumeResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextResumeResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextResumeResponse" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_4[] = { 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_4[] = { 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 20 }, /* HandoverCommand */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 19 }, /* HandoverRequestAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 18 }, /* PathSwitchRequestAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 17 }, /* E-RABSetupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 16 }, /* E-RABModifyResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 15 }, /* E-RABReleaseResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 14 }, /* InitialContextSetupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 13 }, /* HandoverCancelAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 12 }, /* KillResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 11 }, /* ResetAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 10 }, /* S1SetupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -11, 9 }, /* UEContextModificationResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -12, 8 }, /* UEContextReleaseComplete */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -13, 7 }, /* ENBConfigurationUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -14, 6 }, /* MMEConfigurationUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 15, -15, 5 }, /* WriteReplaceWarningResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 16, -16, 4 }, /* UERadioCapabilityMatchResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 17, -17, 3 }, /* E-RABModificationConfirm */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 18, -18, 2 }, /* UEContextModificationConfirm */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 19, -19, 1 }, /* UEContextSuspendResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 20, -20, 0 } /* UEContextResumeResponse */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_4 = { + sizeof(struct S1AP_SuccessfulOutcome__value), + offsetof(struct S1AP_SuccessfulOutcome__value, _asn_ctx), + offsetof(struct S1AP_SuccessfulOutcome__value, present), + sizeof(((struct S1AP_SuccessfulOutcome__value *)0)->present), + asn_MAP_S1AP_value_tag2el_4, + 21, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_4, + asn_MAP_S1AP_value_from_canonical_4, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_4, + 21, /* Elements count */ + &asn_SPC_S1AP_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_SuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProcedureCode, + 0, + { &asn_OER_memb_S1AP_procedureCode_constr_2, &asn_PER_memb_S1AP_procedureCode_constr_2, memb_S1AP_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_SuccessfulOutcome_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_3, &asn_PER_memb_S1AP_criticality_constr_3, memb_S1AP_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_SuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_4, + select_SuccessfulOutcome_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_4, &asn_PER_memb_S1AP_value_constr_4, memb_S1AP_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SuccessfulOutcome_specs_1 = { + sizeof(struct S1AP_SuccessfulOutcome), + offsetof(struct S1AP_SuccessfulOutcome, _asn_ctx), + asn_MAP_S1AP_SuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SuccessfulOutcome = { + "SuccessfulOutcome", + "SuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SuccessfulOutcome_tags_1, + sizeof(asn_DEF_S1AP_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_S1AP_SuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_S1AP_SuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_S1AP_SuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.h b/lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.h new file mode 100644 index 0000000000..6bedf39b1b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SuccessfulOutcome.h @@ -0,0 +1,193 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SuccessfulOutcome_H_ +#define _S1AP_SuccessfulOutcome_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProcedureCode.h" +#include "S1AP_Criticality.h" +#include +#include +#include "S1AP_HandoverRequired.h" +#include "S1AP_HandoverCommand.h" +#include "S1AP_HandoverPreparationFailure.h" +#include "S1AP_HandoverRequest.h" +#include "S1AP_HandoverRequestAcknowledge.h" +#include "S1AP_HandoverFailure.h" +#include "S1AP_PathSwitchRequest.h" +#include "S1AP_PathSwitchRequestAcknowledge.h" +#include "S1AP_PathSwitchRequestFailure.h" +#include "S1AP_E-RABSetupRequest.h" +#include "S1AP_E-RABSetupResponse.h" +#include "S1AP_E-RABModifyRequest.h" +#include "S1AP_E-RABModifyResponse.h" +#include "S1AP_E-RABReleaseCommand.h" +#include "S1AP_E-RABReleaseResponse.h" +#include "S1AP_InitialContextSetupRequest.h" +#include "S1AP_InitialContextSetupResponse.h" +#include "S1AP_InitialContextSetupFailure.h" +#include "S1AP_HandoverCancel.h" +#include "S1AP_HandoverCancelAcknowledge.h" +#include "S1AP_KillRequest.h" +#include "S1AP_KillResponse.h" +#include "S1AP_Reset.h" +#include "S1AP_ResetAcknowledge.h" +#include "S1AP_S1SetupRequest.h" +#include "S1AP_S1SetupResponse.h" +#include "S1AP_S1SetupFailure.h" +#include "S1AP_UEContextModificationRequest.h" +#include "S1AP_UEContextModificationResponse.h" +#include "S1AP_UEContextModificationFailure.h" +#include "S1AP_UEContextReleaseCommand.h" +#include "S1AP_UEContextReleaseComplete.h" +#include "S1AP_ENBConfigurationUpdate.h" +#include "S1AP_ENBConfigurationUpdateAcknowledge.h" +#include "S1AP_ENBConfigurationUpdateFailure.h" +#include "S1AP_MMEConfigurationUpdate.h" +#include "S1AP_MMEConfigurationUpdateAcknowledge.h" +#include "S1AP_MMEConfigurationUpdateFailure.h" +#include "S1AP_WriteReplaceWarningRequest.h" +#include "S1AP_WriteReplaceWarningResponse.h" +#include "S1AP_UERadioCapabilityMatchRequest.h" +#include "S1AP_UERadioCapabilityMatchResponse.h" +#include "S1AP_E-RABModificationIndication.h" +#include "S1AP_E-RABModificationConfirm.h" +#include "S1AP_UEContextModificationIndication.h" +#include "S1AP_UEContextModificationConfirm.h" +#include "S1AP_UEContextSuspendRequest.h" +#include "S1AP_UEContextSuspendResponse.h" +#include "S1AP_UEContextResumeRequest.h" +#include "S1AP_UEContextResumeResponse.h" +#include "S1AP_UEContextResumeFailure.h" +#include "S1AP_HandoverNotify.h" +#include "S1AP_E-RABReleaseIndication.h" +#include "S1AP_Paging.h" +#include "S1AP_DownlinkNASTransport.h" +#include "S1AP_InitialUEMessage.h" +#include "S1AP_UplinkNASTransport.h" +#include "S1AP_ErrorIndication.h" +#include "S1AP_NASNonDeliveryIndication.h" +#include "S1AP_UEContextReleaseRequest.h" +#include "S1AP_DownlinkS1cdma2000tunnelling.h" +#include "S1AP_UplinkS1cdma2000tunnelling.h" +#include "S1AP_UECapabilityInfoIndication.h" +#include "S1AP_ENBStatusTransfer.h" +#include "S1AP_MMEStatusTransfer.h" +#include "S1AP_DeactivateTrace.h" +#include "S1AP_TraceStart.h" +#include "S1AP_TraceFailureIndication.h" +#include "S1AP_CellTrafficTrace.h" +#include "S1AP_LocationReportingControl.h" +#include "S1AP_LocationReportingFailureIndication.h" +#include "S1AP_LocationReport.h" +#include "S1AP_OverloadStart.h" +#include "S1AP_OverloadStop.h" +#include "S1AP_ENBDirectInformationTransfer.h" +#include "S1AP_MMEDirectInformationTransfer.h" +#include "S1AP_ENBConfigurationTransfer.h" +#include "S1AP_MMEConfigurationTransfer.h" +#include "S1AP_PrivateMessage.h" +#include "S1AP_DownlinkUEAssociatedLPPaTransport.h" +#include "S1AP_UplinkUEAssociatedLPPaTransport.h" +#include "S1AP_DownlinkNonUEAssociatedLPPaTransport.h" +#include "S1AP_UplinkNonUEAssociatedLPPaTransport.h" +#include "S1AP_PWSRestartIndication.h" +#include "S1AP_RerouteNASRequest.h" +#include "S1AP_PWSFailureIndication.h" +#include "S1AP_ConnectionEstablishmentIndication.h" +#include "S1AP_NASDeliveryIndication.h" +#include "S1AP_RetrieveUEInformation.h" +#include "S1AP_UEInformationTransfer.h" +#include "S1AP_ENBCPRelocationIndication.h" +#include "S1AP_MMECPRelocationIndication.h" +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_SuccessfulOutcome__value_PR { + SuccessfulOutcome__value_PR_NOTHING, /* No components present */ + SuccessfulOutcome__value_PR_HandoverCommand, + SuccessfulOutcome__value_PR_HandoverRequestAcknowledge, + SuccessfulOutcome__value_PR_PathSwitchRequestAcknowledge, + SuccessfulOutcome__value_PR_E_RABSetupResponse, + SuccessfulOutcome__value_PR_E_RABModifyResponse, + SuccessfulOutcome__value_PR_E_RABReleaseResponse, + SuccessfulOutcome__value_PR_InitialContextSetupResponse, + SuccessfulOutcome__value_PR_HandoverCancelAcknowledge, + SuccessfulOutcome__value_PR_KillResponse, + SuccessfulOutcome__value_PR_ResetAcknowledge, + SuccessfulOutcome__value_PR_S1SetupResponse, + SuccessfulOutcome__value_PR_UEContextModificationResponse, + SuccessfulOutcome__value_PR_UEContextReleaseComplete, + SuccessfulOutcome__value_PR_ENBConfigurationUpdateAcknowledge, + SuccessfulOutcome__value_PR_MMEConfigurationUpdateAcknowledge, + SuccessfulOutcome__value_PR_WriteReplaceWarningResponse, + SuccessfulOutcome__value_PR_UERadioCapabilityMatchResponse, + SuccessfulOutcome__value_PR_E_RABModificationConfirm, + SuccessfulOutcome__value_PR_UEContextModificationConfirm, + SuccessfulOutcome__value_PR_UEContextSuspendResponse, + SuccessfulOutcome__value_PR_UEContextResumeResponse +} S1AP_SuccessfulOutcome__value_PR; + +/* S1AP_SuccessfulOutcome */ +typedef struct S1AP_SuccessfulOutcome { + S1AP_ProcedureCode_t procedureCode; + S1AP_Criticality_t criticality; + struct S1AP_SuccessfulOutcome__value { + S1AP_SuccessfulOutcome__value_PR present; + union S1AP_SuccessfulOutcome__S1AP_value_u { + S1AP_HandoverCommand_t HandoverCommand; + S1AP_HandoverRequestAcknowledge_t HandoverRequestAcknowledge; + S1AP_PathSwitchRequestAcknowledge_t PathSwitchRequestAcknowledge; + S1AP_E_RABSetupResponse_t E_RABSetupResponse; + S1AP_E_RABModifyResponse_t E_RABModifyResponse; + S1AP_E_RABReleaseResponse_t E_RABReleaseResponse; + S1AP_InitialContextSetupResponse_t InitialContextSetupResponse; + S1AP_HandoverCancelAcknowledge_t HandoverCancelAcknowledge; + S1AP_KillResponse_t KillResponse; + S1AP_ResetAcknowledge_t ResetAcknowledge; + S1AP_S1SetupResponse_t S1SetupResponse; + S1AP_UEContextModificationResponse_t UEContextModificationResponse; + S1AP_UEContextReleaseComplete_t UEContextReleaseComplete; + S1AP_ENBConfigurationUpdateAcknowledge_t ENBConfigurationUpdateAcknowledge; + S1AP_MMEConfigurationUpdateAcknowledge_t MMEConfigurationUpdateAcknowledge; + S1AP_WriteReplaceWarningResponse_t WriteReplaceWarningResponse; + S1AP_UERadioCapabilityMatchResponse_t UERadioCapabilityMatchResponse; + S1AP_E_RABModificationConfirm_t E_RABModificationConfirm; + S1AP_UEContextModificationConfirm_t UEContextModificationConfirm; + S1AP_UEContextSuspendResponse_t UEContextSuspendResponse; + S1AP_UEContextResumeResponse_t UEContextResumeResponse; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_SuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SuccessfulOutcome_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.c b/lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.c new file mode 100644 index 0000000000..1ba6daaf34 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SupportedTAs-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_SupportedTAs_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SupportedTAs_Item, tAC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_SupportedTAs_Item, broadcastPLMNs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_BPLMNs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "broadcastPLMNs" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_SupportedTAs_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P94, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_SupportedTAs_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_SupportedTAs_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SupportedTAs_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* broadcastPLMNs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_SupportedTAs_Item_specs_1 = { + sizeof(struct S1AP_SupportedTAs_Item), + offsetof(struct S1AP_SupportedTAs_Item, _asn_ctx), + asn_MAP_S1AP_SupportedTAs_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_SupportedTAs_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SupportedTAs_Item = { + "SupportedTAs-Item", + "SupportedTAs-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SupportedTAs_Item_tags_1, + sizeof(asn_DEF_S1AP_SupportedTAs_Item_tags_1) + /sizeof(asn_DEF_S1AP_SupportedTAs_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SupportedTAs_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SupportedTAs_Item_tags_1) + /sizeof(asn_DEF_S1AP_SupportedTAs_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SupportedTAs_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_SupportedTAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.h b/lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.h new file mode 100644 index 0000000000..3edb1480e8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SupportedTAs-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SupportedTAs_Item_H_ +#define _S1AP_SupportedTAs_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TAC.h" +#include "S1AP_BPLMNs.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_SupportedTAs-Item */ +typedef struct S1AP_SupportedTAs_Item { + S1AP_TAC_t tAC; + S1AP_BPLMNs_t broadcastPLMNs; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SupportedTAs_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SupportedTAs_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_SupportedTAs_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_SupportedTAs_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SupportedTAs_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SupportedTAs.c b/lib/s1ap3/asn1c/S1AP_SupportedTAs.c new file mode 100644 index 0000000000..28b92fd697 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SupportedTAs.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SupportedTAs.h" + +#include "S1AP_SupportedTAs-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_SupportedTAs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_SupportedTAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_SupportedTAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_SupportedTAs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SupportedTAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_SupportedTAs_specs_1 = { + sizeof(struct S1AP_SupportedTAs), + offsetof(struct S1AP_SupportedTAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SupportedTAs = { + "SupportedTAs", + "SupportedTAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_SupportedTAs_tags_1, + sizeof(asn_DEF_S1AP_SupportedTAs_tags_1) + /sizeof(asn_DEF_S1AP_SupportedTAs_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SupportedTAs_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SupportedTAs_tags_1) + /sizeof(asn_DEF_S1AP_SupportedTAs_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SupportedTAs_constr_1, &asn_PER_type_S1AP_SupportedTAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_SupportedTAs_1, + 1, /* Single element */ + &asn_SPC_S1AP_SupportedTAs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SupportedTAs.h b/lib/s1ap3/asn1c/S1AP_SupportedTAs.h new file mode 100644 index 0000000000..6fc37c7726 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SupportedTAs.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SupportedTAs_H_ +#define _S1AP_SupportedTAs_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_SupportedTAs_Item; + +/* S1AP_SupportedTAs */ +typedef struct S1AP_SupportedTAs { + A_SEQUENCE_OF(struct S1AP_SupportedTAs_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SupportedTAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SupportedTAs; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SupportedTAs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SynchronisationInformation.c b/lib/s1ap3/asn1c/S1AP_SynchronisationInformation.c new file mode 100644 index 0000000000..35bab84309 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SynchronisationInformation.c @@ -0,0 +1,85 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SynchronisationInformation.h" + +#include "S1AP_ListeningSubframePattern.h" +#include "S1AP_ECGI-List.h" +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_SynchronisationInformation_1[] = { + { ATF_POINTER, 4, offsetof(struct S1AP_SynchronisationInformation, sourceStratumLevel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_StratumLevel, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sourceStratumLevel" + }, + { ATF_POINTER, 3, offsetof(struct S1AP_SynchronisationInformation, listeningSubframePattern), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ListeningSubframePattern, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "listeningSubframePattern" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_SynchronisationInformation, aggressoreCGI_List), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ECGI_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "aggressoreCGI-List" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_SynchronisationInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P90, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_SynchronisationInformation_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_S1AP_SynchronisationInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_SynchronisationInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sourceStratumLevel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* listeningSubframePattern */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aggressoreCGI-List */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_SynchronisationInformation_specs_1 = { + sizeof(struct S1AP_SynchronisationInformation), + offsetof(struct S1AP_SynchronisationInformation, _asn_ctx), + asn_MAP_S1AP_SynchronisationInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_S1AP_SynchronisationInformation_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SynchronisationInformation = { + "SynchronisationInformation", + "SynchronisationInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_SynchronisationInformation_tags_1, + sizeof(asn_DEF_S1AP_SynchronisationInformation_tags_1) + /sizeof(asn_DEF_S1AP_SynchronisationInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SynchronisationInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SynchronisationInformation_tags_1) + /sizeof(asn_DEF_S1AP_SynchronisationInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_SynchronisationInformation_1, + 4, /* Elements count */ + &asn_SPC_S1AP_SynchronisationInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SynchronisationInformation.h b/lib/s1ap3/asn1c/S1AP_SynchronisationInformation.h new file mode 100644 index 0000000000..f713d84545 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SynchronisationInformation.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SynchronisationInformation_H_ +#define _S1AP_SynchronisationInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_StratumLevel.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ListeningSubframePattern; +struct S1AP_ECGI_List; +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_SynchronisationInformation */ +typedef struct S1AP_SynchronisationInformation { + S1AP_StratumLevel_t *sourceStratumLevel; /* OPTIONAL */ + struct S1AP_ListeningSubframePattern *listeningSubframePattern; /* OPTIONAL */ + struct S1AP_ECGI_List *aggressoreCGI_List; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_SynchronisationInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SynchronisationInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SynchronisationInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_SynchronisationStatus.c b/lib/s1ap3/asn1c/S1AP_SynchronisationStatus.c new file mode 100644 index 0000000000..f7e2c4d5f3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SynchronisationStatus.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_SynchronisationStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_SynchronisationStatus_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_SynchronisationStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_SynchronisationStatus_value2enum_1[] = { + { 0, 11, "synchronous" }, + { 1, 12, "asynchronous" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_SynchronisationStatus_enum2value_1[] = { + 1, /* asynchronous(1) */ + 0 /* synchronous(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_SynchronisationStatus_specs_1 = { + asn_MAP_S1AP_SynchronisationStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_SynchronisationStatus_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_SynchronisationStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_SynchronisationStatus = { + "SynchronisationStatus", + "SynchronisationStatus", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_SynchronisationStatus_tags_1, + sizeof(asn_DEF_S1AP_SynchronisationStatus_tags_1) + /sizeof(asn_DEF_S1AP_SynchronisationStatus_tags_1[0]), /* 1 */ + asn_DEF_S1AP_SynchronisationStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_SynchronisationStatus_tags_1) + /sizeof(asn_DEF_S1AP_SynchronisationStatus_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_SynchronisationStatus_constr_1, &asn_PER_type_S1AP_SynchronisationStatus_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_SynchronisationStatus_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_SynchronisationStatus.h b/lib/s1ap3/asn1c/S1AP_SynchronisationStatus.h new file mode 100644 index 0000000000..871dc7e3b0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_SynchronisationStatus.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_SynchronisationStatus_H_ +#define _S1AP_SynchronisationStatus_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_SynchronisationStatus { + S1AP_SynchronisationStatus_synchronous = 0, + S1AP_SynchronisationStatus_asynchronous = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_SynchronisationStatus; + +/* S1AP_SynchronisationStatus */ +typedef long S1AP_SynchronisationStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_SynchronisationStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_SynchronisationStatus; +extern const asn_INTEGER_specifics_t asn_SPC_SynchronisationStatus_specs_1; +asn_struct_free_f SynchronisationStatus_free; +asn_struct_print_f SynchronisationStatus_print; +asn_constr_check_f SynchronisationStatus_constraint; +ber_type_decoder_f SynchronisationStatus_decode_ber; +der_type_encoder_f SynchronisationStatus_encode_der; +xer_type_decoder_f SynchronisationStatus_decode_xer; +xer_type_encoder_f SynchronisationStatus_encode_xer; +oer_type_decoder_f SynchronisationStatus_decode_oer; +oer_type_encoder_f SynchronisationStatus_encode_oer; +per_type_decoder_f SynchronisationStatus_decode_uper; +per_type_encoder_f SynchronisationStatus_encode_uper; +per_type_decoder_f SynchronisationStatus_decode_aper; +per_type_encoder_f SynchronisationStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_SynchronisationStatus_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TABasedMDT.c b/lib/s1ap3/asn1c/S1AP_TABasedMDT.c new file mode 100644 index 0000000000..9c6b441bb9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TABasedMDT.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TABasedMDT.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_TABasedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TABasedMDT, tAListforMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAListforMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TABasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P101, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TABasedMDT_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TABasedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TABasedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAListforMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TABasedMDT_specs_1 = { + sizeof(struct S1AP_TABasedMDT), + offsetof(struct S1AP_TABasedMDT, _asn_ctx), + asn_MAP_S1AP_TABasedMDT_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_TABasedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TABasedMDT = { + "TABasedMDT", + "TABasedMDT", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TABasedMDT_tags_1, + sizeof(asn_DEF_S1AP_TABasedMDT_tags_1) + /sizeof(asn_DEF_S1AP_TABasedMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TABasedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TABasedMDT_tags_1) + /sizeof(asn_DEF_S1AP_TABasedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TABasedMDT_1, + 2, /* Elements count */ + &asn_SPC_S1AP_TABasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TABasedMDT.h b/lib/s1ap3/asn1c/S1AP_TABasedMDT.h new file mode 100644 index 0000000000..50d648a560 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TABasedMDT.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TABasedMDT_H_ +#define _S1AP_TABasedMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TAListforMDT.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TABasedMDT */ +typedef struct S1AP_TABasedMDT { + S1AP_TAListforMDT_t tAListforMDT; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TABasedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TABasedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TABasedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TABasedMDT_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TABasedMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAC.c b/lib/s1ap3/asn1c/S1AP_TAC.c new file mode 100644 index 0000000000..945b164750 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAC.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAC.h" + +int +S1AP_TAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_TAC_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +asn_per_constraints_t asn_PER_type_S1AP_TAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAC = { + "TAC", + "TAC", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_TAC_tags_1, + sizeof(asn_DEF_S1AP_TAC_tags_1) + /sizeof(asn_DEF_S1AP_TAC_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAC_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAC_tags_1) + /sizeof(asn_DEF_S1AP_TAC_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TAC_constr_1, &asn_PER_type_S1AP_TAC_constr_1, S1AP_TAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAC.h b/lib/s1ap3/asn1c/S1AP_TAC.h new file mode 100644 index 0000000000..66b43a1744 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAC.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAC_H_ +#define _S1AP_TAC_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TAC */ +typedef OCTET_STRING_t S1AP_TAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_TAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAC; +asn_struct_free_f S1AP_TAC_free; +asn_struct_print_f S1AP_TAC_print; +asn_constr_check_f S1AP_TAC_constraint; +ber_type_decoder_f S1AP_TAC_decode_ber; +der_type_encoder_f S1AP_TAC_encode_der; +xer_type_decoder_f S1AP_TAC_decode_xer; +xer_type_encoder_f S1AP_TAC_encode_xer; +oer_type_decoder_f S1AP_TAC_decode_oer; +oer_type_encoder_f S1AP_TAC_encode_oer; +per_type_decoder_f S1AP_TAC_decode_uper; +per_type_encoder_f S1AP_TAC_encode_uper; +per_type_decoder_f S1AP_TAC_decode_aper; +per_type_encoder_f S1AP_TAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAC_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.c b/lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.c new file mode 100644 index 0000000000..e5f500cb02 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAI-Broadcast-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_TAI_Broadcast_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Broadcast_Item, tAI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Broadcast_Item, completedCellinTAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CompletedCellinTAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "completedCellinTAI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TAI_Broadcast_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P99, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TAI_Broadcast_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TAI_Broadcast_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAI_Broadcast_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* completedCellinTAI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_Broadcast_Item_specs_1 = { + sizeof(struct S1AP_TAI_Broadcast_Item), + offsetof(struct S1AP_TAI_Broadcast_Item, _asn_ctx), + asn_MAP_S1AP_TAI_Broadcast_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_TAI_Broadcast_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Broadcast_Item = { + "TAI-Broadcast-Item", + "TAI-Broadcast-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAI_Broadcast_Item_tags_1, + sizeof(asn_DEF_S1AP_TAI_Broadcast_Item_tags_1) + /sizeof(asn_DEF_S1AP_TAI_Broadcast_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAI_Broadcast_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAI_Broadcast_Item_tags_1) + /sizeof(asn_DEF_S1AP_TAI_Broadcast_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAI_Broadcast_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_TAI_Broadcast_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.h b/lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.h new file mode 100644 index 0000000000..6b8c9fcf05 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI-Broadcast-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAI_Broadcast_Item_H_ +#define _S1AP_TAI_Broadcast_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TAI.h" +#include "S1AP_CompletedCellinTAI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TAI-Broadcast-Item */ +typedef struct S1AP_TAI_Broadcast_Item { + S1AP_TAI_t tAI; + S1AP_CompletedCellinTAI_t completedCellinTAI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAI_Broadcast_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Broadcast_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_Broadcast_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TAI_Broadcast_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAI_Broadcast_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAI-Broadcast.c b/lib/s1ap3/asn1c/S1AP_TAI-Broadcast.c new file mode 100644 index 0000000000..301b84dec4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI-Broadcast.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAI-Broadcast.h" + +#include "S1AP_TAI-Broadcast-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_TAI_Broadcast_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_TAI_Broadcast_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_TAI_Broadcast_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI_Broadcast_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAI_Broadcast_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_TAI_Broadcast_specs_1 = { + sizeof(struct S1AP_TAI_Broadcast), + offsetof(struct S1AP_TAI_Broadcast, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Broadcast = { + "TAI-Broadcast", + "TAI-Broadcast", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_TAI_Broadcast_tags_1, + sizeof(asn_DEF_S1AP_TAI_Broadcast_tags_1) + /sizeof(asn_DEF_S1AP_TAI_Broadcast_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAI_Broadcast_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAI_Broadcast_tags_1) + /sizeof(asn_DEF_S1AP_TAI_Broadcast_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TAI_Broadcast_constr_1, &asn_PER_type_S1AP_TAI_Broadcast_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_TAI_Broadcast_1, + 1, /* Single element */ + &asn_SPC_S1AP_TAI_Broadcast_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAI-Broadcast.h b/lib/s1ap3/asn1c/S1AP_TAI-Broadcast.h new file mode 100644 index 0000000000..c0e2e85fe2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI-Broadcast.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAI_Broadcast_H_ +#define _S1AP_TAI_Broadcast_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_TAI_Broadcast_Item; + +/* S1AP_TAI-Broadcast */ +typedef struct S1AP_TAI_Broadcast { + A_SEQUENCE_OF(struct S1AP_TAI_Broadcast_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAI_Broadcast_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Broadcast; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_TAI_Broadcast_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TAI_Broadcast_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_TAI_Broadcast_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAI_Broadcast_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.c b/lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.c new file mode 100644 index 0000000000..4b27244ce6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAI-Cancelled-Item.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_TAI_Cancelled_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Cancelled_Item, tAI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI_Cancelled_Item, cancelledCellinTAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CancelledCellinTAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cancelledCellinTAI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TAI_Cancelled_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P100, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TAI_Cancelled_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TAI_Cancelled_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAI_Cancelled_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cancelledCellinTAI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_Cancelled_Item_specs_1 = { + sizeof(struct S1AP_TAI_Cancelled_Item), + offsetof(struct S1AP_TAI_Cancelled_Item, _asn_ctx), + asn_MAP_S1AP_TAI_Cancelled_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_TAI_Cancelled_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Cancelled_Item = { + "TAI-Cancelled-Item", + "TAI-Cancelled-Item", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAI_Cancelled_Item_tags_1, + sizeof(asn_DEF_S1AP_TAI_Cancelled_Item_tags_1) + /sizeof(asn_DEF_S1AP_TAI_Cancelled_Item_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAI_Cancelled_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAI_Cancelled_Item_tags_1) + /sizeof(asn_DEF_S1AP_TAI_Cancelled_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAI_Cancelled_Item_1, + 3, /* Elements count */ + &asn_SPC_S1AP_TAI_Cancelled_Item_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.h b/lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.h new file mode 100644 index 0000000000..657b175f99 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI-Cancelled-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAI_Cancelled_Item_H_ +#define _S1AP_TAI_Cancelled_Item_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TAI.h" +#include "S1AP_CancelledCellinTAI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TAI-Cancelled-Item */ +typedef struct S1AP_TAI_Cancelled_Item { + S1AP_TAI_t tAI; + S1AP_CancelledCellinTAI_t cancelledCellinTAI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAI_Cancelled_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Cancelled_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_Cancelled_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TAI_Cancelled_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAI_Cancelled_Item_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAI-Cancelled.c b/lib/s1ap3/asn1c/S1AP_TAI-Cancelled.c new file mode 100644 index 0000000000..a773f7428d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI-Cancelled.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAI-Cancelled.h" + +#include "S1AP_TAI-Cancelled-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_TAI_Cancelled_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_TAI_Cancelled_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_TAI_Cancelled_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI_Cancelled_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAI_Cancelled_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_TAI_Cancelled_specs_1 = { + sizeof(struct S1AP_TAI_Cancelled), + offsetof(struct S1AP_TAI_Cancelled, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Cancelled = { + "TAI-Cancelled", + "TAI-Cancelled", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_TAI_Cancelled_tags_1, + sizeof(asn_DEF_S1AP_TAI_Cancelled_tags_1) + /sizeof(asn_DEF_S1AP_TAI_Cancelled_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAI_Cancelled_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAI_Cancelled_tags_1) + /sizeof(asn_DEF_S1AP_TAI_Cancelled_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TAI_Cancelled_constr_1, &asn_PER_type_S1AP_TAI_Cancelled_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_TAI_Cancelled_1, + 1, /* Single element */ + &asn_SPC_S1AP_TAI_Cancelled_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAI-Cancelled.h b/lib/s1ap3/asn1c/S1AP_TAI-Cancelled.h new file mode 100644 index 0000000000..6f5c3d6afb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI-Cancelled.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAI_Cancelled_H_ +#define _S1AP_TAI_Cancelled_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_TAI_Cancelled_Item; + +/* S1AP_TAI-Cancelled */ +typedef struct S1AP_TAI_Cancelled { + A_SEQUENCE_OF(struct S1AP_TAI_Cancelled_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAI_Cancelled_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAI_Cancelled; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_TAI_Cancelled_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TAI_Cancelled_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_TAI_Cancelled_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAI_Cancelled_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAI.c b/lib/s1ap3/asn1c/S1AP_TAI.c new file mode 100644 index 0000000000..db8055d03d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAI.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_TAI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI, pLMNidentity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PLMNidentity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNidentity" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAI, tAC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAC" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TAI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P98, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TAI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TAI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNidentity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tAC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_specs_1 = { + sizeof(struct S1AP_TAI), + offsetof(struct S1AP_TAI, _asn_ctx), + asn_MAP_S1AP_TAI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_TAI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAI = { + "TAI", + "TAI", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAI_tags_1, + sizeof(asn_DEF_S1AP_TAI_tags_1) + /sizeof(asn_DEF_S1AP_TAI_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAI_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAI_tags_1) + /sizeof(asn_DEF_S1AP_TAI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAI_1, + 3, /* Elements count */ + &asn_SPC_S1AP_TAI_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAI.h b/lib/s1ap3/asn1c/S1AP_TAI.h new file mode 100644 index 0000000000..b4e57b73ac --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAI.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAI_H_ +#define _S1AP_TAI_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_PLMNidentity.h" +#include "S1AP_TAC.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TAI */ +typedef struct S1AP_TAI { + S1AP_PLMNidentity_t pLMNidentity; + S1AP_TAC_t tAC; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAI; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAI_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TAI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAI_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAIBasedMDT.c b/lib/s1ap3/asn1c/S1AP_TAIBasedMDT.c new file mode 100644 index 0000000000..e7fed1e823 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIBasedMDT.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAIBasedMDT.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_TAIBasedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIBasedMDT, tAIListforMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAIListforMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TAIBasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P97, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TAIBasedMDT_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TAIBasedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAIBasedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAIListforMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAIBasedMDT_specs_1 = { + sizeof(struct S1AP_TAIBasedMDT), + offsetof(struct S1AP_TAIBasedMDT, _asn_ctx), + asn_MAP_S1AP_TAIBasedMDT_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_TAIBasedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAIBasedMDT = { + "TAIBasedMDT", + "TAIBasedMDT", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAIBasedMDT_tags_1, + sizeof(asn_DEF_S1AP_TAIBasedMDT_tags_1) + /sizeof(asn_DEF_S1AP_TAIBasedMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAIBasedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAIBasedMDT_tags_1) + /sizeof(asn_DEF_S1AP_TAIBasedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAIBasedMDT_1, + 2, /* Elements count */ + &asn_SPC_S1AP_TAIBasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAIBasedMDT.h b/lib/s1ap3/asn1c/S1AP_TAIBasedMDT.h new file mode 100644 index 0000000000..daeef2e905 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIBasedMDT.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAIBasedMDT_H_ +#define _S1AP_TAIBasedMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TAIListforMDT.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TAIBasedMDT */ +typedef struct S1AP_TAIBasedMDT { + S1AP_TAIListforMDT_t tAIListforMDT; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAIBasedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAIBasedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAIBasedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TAIBasedMDT_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAIBasedMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAIItem.c b/lib/s1ap3/asn1c/S1AP_TAIItem.c new file mode 100644 index 0000000000..76aad03052 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIItem.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAIItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_TAIItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TAIItem, tAI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TAIItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TAIItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TAIItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TAIItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_TAIItem_specs_1 = { + sizeof(struct S1AP_TAIItem), + offsetof(struct S1AP_TAIItem, _asn_ctx), + asn_MAP_S1AP_TAIItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_TAIItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAIItem = { + "TAIItem", + "TAIItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TAIItem_tags_1, + sizeof(asn_DEF_S1AP_TAIItem_tags_1) + /sizeof(asn_DEF_S1AP_TAIItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAIItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAIItem_tags_1) + /sizeof(asn_DEF_S1AP_TAIItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TAIItem_1, + 2, /* Elements count */ + &asn_SPC_S1AP_TAIItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAIItem.h b/lib/s1ap3/asn1c/S1AP_TAIItem.h new file mode 100644 index 0000000000..b4160edd50 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIItem.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAIItem_H_ +#define _S1AP_TAIItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TAI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TAIItem */ +typedef struct S1AP_TAIItem { + S1AP_TAI_t tAI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAIItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAIItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAIItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAIList.c b/lib/s1ap3/asn1c/S1AP_TAIList.c new file mode 100644 index 0000000000..77fd490524 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIList.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAIList.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_TAIList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_TAIList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_TAIList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAIList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_TAIList_specs_1 = { + sizeof(struct S1AP_TAIList), + offsetof(struct S1AP_TAIList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAIList = { + "TAIList", + "TAIList", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_TAIList_tags_1, + sizeof(asn_DEF_S1AP_TAIList_tags_1) + /sizeof(asn_DEF_S1AP_TAIList_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAIList_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAIList_tags_1) + /sizeof(asn_DEF_S1AP_TAIList_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TAIList_constr_1, &asn_PER_type_S1AP_TAIList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_TAIList_1, + 1, /* Single element */ + &asn_SPC_S1AP_TAIList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAIList.h b/lib/s1ap3/asn1c/S1AP_TAIList.h new file mode 100644 index 0000000000..73c0bbb140 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIList.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAIList_H_ +#define _S1AP_TAIList_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_TAIList */ +typedef struct S1AP_TAIList { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAIList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAIList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAIList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAIListForRestart.c b/lib/s1ap3/asn1c/S1AP_TAIListForRestart.c new file mode 100644 index 0000000000..a345b3d725 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIListForRestart.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAIListForRestart.h" + +#include "S1AP_TAI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_TAIListForRestart_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..2048)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_TAIListForRestart_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 11, 11, 1, 2048 } /* (SIZE(1..2048)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_TAIListForRestart_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAIListForRestart_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_TAIListForRestart_specs_1 = { + sizeof(struct S1AP_TAIListForRestart), + offsetof(struct S1AP_TAIListForRestart, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAIListForRestart = { + "TAIListForRestart", + "TAIListForRestart", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_TAIListForRestart_tags_1, + sizeof(asn_DEF_S1AP_TAIListForRestart_tags_1) + /sizeof(asn_DEF_S1AP_TAIListForRestart_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAIListForRestart_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAIListForRestart_tags_1) + /sizeof(asn_DEF_S1AP_TAIListForRestart_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TAIListForRestart_constr_1, &asn_PER_type_S1AP_TAIListForRestart_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_TAIListForRestart_1, + 1, /* Single element */ + &asn_SPC_S1AP_TAIListForRestart_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAIListForRestart.h b/lib/s1ap3/asn1c/S1AP_TAIListForRestart.h new file mode 100644 index 0000000000..c810f2ac26 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIListForRestart.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAIListForRestart_H_ +#define _S1AP_TAIListForRestart_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_TAI; + +/* S1AP_TAIListForRestart */ +typedef struct S1AP_TAIListForRestart { + A_SEQUENCE_OF(struct S1AP_TAI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAIListForRestart_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAIListForRestart; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAIListForRestart_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAIListforMDT.c b/lib/s1ap3/asn1c/S1AP_TAIListforMDT.c new file mode 100644 index 0000000000..18df9aa15e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIListforMDT.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAIListforMDT.h" + +#include "S1AP_TAI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_TAIListforMDT_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +asn_per_constraints_t asn_PER_type_S1AP_TAIListforMDT_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_TAIListforMDT_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAIListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_TAIListforMDT_specs_1 = { + sizeof(struct S1AP_TAIListforMDT), + offsetof(struct S1AP_TAIListforMDT, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAIListforMDT = { + "TAIListforMDT", + "TAIListforMDT", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_TAIListforMDT_tags_1, + sizeof(asn_DEF_S1AP_TAIListforMDT_tags_1) + /sizeof(asn_DEF_S1AP_TAIListforMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAIListforMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAIListforMDT_tags_1) + /sizeof(asn_DEF_S1AP_TAIListforMDT_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TAIListforMDT_constr_1, &asn_PER_type_S1AP_TAIListforMDT_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_TAIListforMDT_1, + 1, /* Single element */ + &asn_SPC_S1AP_TAIListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAIListforMDT.h b/lib/s1ap3/asn1c/S1AP_TAIListforMDT.h new file mode 100644 index 0000000000..fcf21cf4e0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIListforMDT.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAIListforMDT_H_ +#define _S1AP_TAIListforMDT_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_TAI; + +/* S1AP_TAIListforMDT */ +typedef struct S1AP_TAIListforMDT { + A_SEQUENCE_OF(struct S1AP_TAI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAIListforMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAIListforMDT; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_TAIListforMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TAIListforMDT_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_TAIListforMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAIListforMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAIListforWarning.c b/lib/s1ap3/asn1c/S1AP_TAIListforWarning.c new file mode 100644 index 0000000000..cf03584465 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIListforWarning.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAIListforWarning.h" + +#include "S1AP_TAI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_TAIListforWarning_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..65535)) */}; +asn_per_constraints_t asn_PER_type_S1AP_TAIListforWarning_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_TAIListforWarning_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAIListforWarning_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_TAIListforWarning_specs_1 = { + sizeof(struct S1AP_TAIListforWarning), + offsetof(struct S1AP_TAIListforWarning, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAIListforWarning = { + "TAIListforWarning", + "TAIListforWarning", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_TAIListforWarning_tags_1, + sizeof(asn_DEF_S1AP_TAIListforWarning_tags_1) + /sizeof(asn_DEF_S1AP_TAIListforWarning_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAIListforWarning_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAIListforWarning_tags_1) + /sizeof(asn_DEF_S1AP_TAIListforWarning_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TAIListforWarning_constr_1, &asn_PER_type_S1AP_TAIListforWarning_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_TAIListforWarning_1, + 1, /* Single element */ + &asn_SPC_S1AP_TAIListforWarning_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAIListforWarning.h b/lib/s1ap3/asn1c/S1AP_TAIListforWarning.h new file mode 100644 index 0000000000..0384fb1125 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAIListforWarning.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAIListforWarning_H_ +#define _S1AP_TAIListforWarning_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_TAI; + +/* S1AP_TAIListforWarning */ +typedef struct S1AP_TAIListforWarning { + A_SEQUENCE_OF(struct S1AP_TAI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAIListforWarning_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAIListforWarning; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_TAIListforWarning_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TAIListforWarning_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_TAIListforWarning_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAIListforWarning_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TAListforMDT.c b/lib/s1ap3/asn1c/S1AP_TAListforMDT.c new file mode 100644 index 0000000000..59e3fccc23 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAListforMDT.c @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TAListforMDT.h" + +static asn_oer_constraints_t asn_OER_type_S1AP_TAListforMDT_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..8)) */}; +asn_per_constraints_t asn_PER_type_S1AP_TAListforMDT_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_TAListforMDT_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_S1AP_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TAListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_TAListforMDT_specs_1 = { + sizeof(struct S1AP_TAListforMDT), + offsetof(struct S1AP_TAListforMDT, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TAListforMDT = { + "TAListforMDT", + "TAListforMDT", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_TAListforMDT_tags_1, + sizeof(asn_DEF_S1AP_TAListforMDT_tags_1) + /sizeof(asn_DEF_S1AP_TAListforMDT_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TAListforMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TAListforMDT_tags_1) + /sizeof(asn_DEF_S1AP_TAListforMDT_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TAListforMDT_constr_1, &asn_PER_type_S1AP_TAListforMDT_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_TAListforMDT_1, + 1, /* Single element */ + &asn_SPC_S1AP_TAListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TAListforMDT.h b/lib/s1ap3/asn1c/S1AP_TAListforMDT.h new file mode 100644 index 0000000000..45075d823a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TAListforMDT.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TAListforMDT_H_ +#define _S1AP_TAListforMDT_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TAC.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TAListforMDT */ +typedef struct S1AP_TAListforMDT { + A_SEQUENCE_OF(S1AP_TAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TAListforMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TAListforMDT; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_TAListforMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TAListforMDT_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_TAListforMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TAListforMDT_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TBCD-STRING.c b/lib/s1ap3/asn1c/S1AP_TBCD-STRING.c new file mode 100644 index 0000000000..9b575b0727 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TBCD-STRING.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TBCD-STRING.h" + +int +S1AP_TBCD_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_TBCD_STRING_constr_1 CC_NOTUSED = { + { 0, 0 }, + 3 /* (SIZE(3..3)) */}; +asn_per_constraints_t asn_PER_type_S1AP_TBCD_STRING_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TBCD_STRING_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TBCD_STRING = { + "TBCD-STRING", + "TBCD-STRING", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_TBCD_STRING_tags_1, + sizeof(asn_DEF_S1AP_TBCD_STRING_tags_1) + /sizeof(asn_DEF_S1AP_TBCD_STRING_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TBCD_STRING_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TBCD_STRING_tags_1) + /sizeof(asn_DEF_S1AP_TBCD_STRING_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TBCD_STRING_constr_1, &asn_PER_type_S1AP_TBCD_STRING_constr_1, S1AP_TBCD_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TBCD-STRING.h b/lib/s1ap3/asn1c/S1AP_TBCD-STRING.h new file mode 100644 index 0000000000..73e478828b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TBCD-STRING.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TBCD_STRING_H_ +#define _S1AP_TBCD_STRING_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TBCD-STRING */ +typedef OCTET_STRING_t S1AP_TBCD_STRING_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_TBCD_STRING_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TBCD_STRING; +asn_struct_free_f S1AP_TBCD_STRING_free; +asn_struct_print_f S1AP_TBCD_STRING_print; +asn_constr_check_f S1AP_TBCD_STRING_constraint; +ber_type_decoder_f S1AP_TBCD_STRING_decode_ber; +der_type_encoder_f S1AP_TBCD_STRING_encode_der; +xer_type_decoder_f S1AP_TBCD_STRING_decode_xer; +xer_type_encoder_f S1AP_TBCD_STRING_encode_xer; +oer_type_decoder_f S1AP_TBCD_STRING_decode_oer; +oer_type_encoder_f S1AP_TBCD_STRING_encode_oer; +per_type_decoder_f S1AP_TBCD_STRING_decode_uper; +per_type_encoder_f S1AP_TBCD_STRING_encode_uper; +per_type_decoder_f S1AP_TBCD_STRING_decode_aper; +per_type_encoder_f S1AP_TBCD_STRING_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TBCD_STRING_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Target-ToSource-TransparentContainer.c b/lib/s1ap3/asn1c/S1AP_Target-ToSource-TransparentContainer.c new file mode 100644 index 0000000000..20654d2a1b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Target-ToSource-TransparentContainer.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Target-ToSource-TransparentContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_Target_ToSource_TransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Target_ToSource_TransparentContainer = { + "Target-ToSource-TransparentContainer", + "Target-ToSource-TransparentContainer", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_Target_ToSource_TransparentContainer_tags_1, + sizeof(asn_DEF_S1AP_Target_ToSource_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_Target_ToSource_TransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Target_ToSource_TransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Target_ToSource_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_Target_ToSource_TransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Target-ToSource-TransparentContainer.h b/lib/s1ap3/asn1c/S1AP_Target-ToSource-TransparentContainer.h new file mode 100644 index 0000000000..e1764fd7dc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Target-ToSource-TransparentContainer.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Target_ToSource_TransparentContainer_H_ +#define _S1AP_Target_ToSource_TransparentContainer_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Target-ToSource-TransparentContainer */ +typedef OCTET_STRING_t S1AP_Target_ToSource_TransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Target_ToSource_TransparentContainer; +asn_struct_free_f S1AP_Target_ToSource_TransparentContainer_free; +asn_struct_print_f S1AP_Target_ToSource_TransparentContainer_print; +asn_constr_check_f S1AP_Target_ToSource_TransparentContainer_constraint; +ber_type_decoder_f S1AP_Target_ToSource_TransparentContainer_decode_ber; +der_type_encoder_f S1AP_Target_ToSource_TransparentContainer_encode_der; +xer_type_decoder_f S1AP_Target_ToSource_TransparentContainer_decode_xer; +xer_type_encoder_f S1AP_Target_ToSource_TransparentContainer_encode_xer; +oer_type_decoder_f S1AP_Target_ToSource_TransparentContainer_decode_oer; +oer_type_encoder_f S1AP_Target_ToSource_TransparentContainer_encode_oer; +per_type_decoder_f S1AP_Target_ToSource_TransparentContainer_decode_uper; +per_type_encoder_f S1AP_Target_ToSource_TransparentContainer_encode_uper; +per_type_decoder_f S1AP_Target_ToSource_TransparentContainer_decode_aper; +per_type_encoder_f S1AP_Target_ToSource_TransparentContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Target_ToSource_TransparentContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TargetBSS-ToSourceBSS-TransparentContainer.c b/lib/s1ap3/asn1c/S1AP_TargetBSS-ToSourceBSS-TransparentContainer.c new file mode 100644 index 0000000000..d9792c2dc1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargetBSS-ToSourceBSS-TransparentContainer.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TargetBSS-ToSourceBSS-TransparentContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TargetBSS_ToSourceBSS_TransparentContainer = { + "TargetBSS-ToSourceBSS-TransparentContainer", + "TargetBSS-ToSourceBSS-TransparentContainer", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1, + sizeof(asn_DEF_S1AP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_TargetBSS_ToSourceBSS_TransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TargetBSS-ToSourceBSS-TransparentContainer.h b/lib/s1ap3/asn1c/S1AP_TargetBSS-ToSourceBSS-TransparentContainer.h new file mode 100644 index 0000000000..6d85b4071f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargetBSS-ToSourceBSS-TransparentContainer.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TargetBSS_ToSourceBSS_TransparentContainer_H_ +#define _S1AP_TargetBSS_ToSourceBSS_TransparentContainer_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TargetBSS-ToSourceBSS-TransparentContainer */ +typedef OCTET_STRING_t S1AP_TargetBSS_ToSourceBSS_TransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TargetBSS_ToSourceBSS_TransparentContainer; +asn_struct_free_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_free; +asn_struct_print_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_print; +asn_constr_check_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_constraint; +ber_type_decoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_decode_ber; +der_type_encoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_encode_der; +xer_type_decoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_decode_xer; +xer_type_encoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_encode_xer; +oer_type_decoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_decode_oer; +oer_type_encoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_encode_oer; +per_type_decoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_decode_uper; +per_type_encoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_encode_uper; +per_type_decoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_decode_aper; +per_type_encoder_f S1AP_TargetBSS_ToSourceBSS_TransparentContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TargetBSS_ToSourceBSS_TransparentContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TargetID.c b/lib/s1ap3/asn1c/S1AP_TargetID.c new file mode 100644 index 0000000000..9dfe924dd8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargetID.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TargetID.h" + +#include "S1AP_TargeteNB-ID.h" +#include "S1AP_TargetRNC-ID.h" +#include "S1AP_CGI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_TargetID_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_TargetID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_TargetID_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_TargetID, choice.targeteNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TargeteNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "targeteNB-ID" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_TargetID, choice.targetRNC_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TargetRNC_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "targetRNC-ID" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_TargetID, choice.cGI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cGI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TargetID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* targeteNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* targetRNC-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_TargetID_specs_1 = { + sizeof(struct S1AP_TargetID), + offsetof(struct S1AP_TargetID, _asn_ctx), + offsetof(struct S1AP_TargetID, present), + sizeof(((struct S1AP_TargetID *)0)->present), + asn_MAP_S1AP_TargetID_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TargetID = { + "TargetID", + "TargetID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_TargetID_constr_1, &asn_PER_type_S1AP_TargetID_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_TargetID_1, + 3, /* Elements count */ + &asn_SPC_S1AP_TargetID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TargetID.h b/lib/s1ap3/asn1c/S1AP_TargetID.h new file mode 100644 index 0000000000..8a5c15e3eb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargetID.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TargetID_H_ +#define _S1AP_TargetID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_TargetID_PR { + TargetID_PR_NOTHING, /* No components present */ + TargetID_PR_targeteNB_ID, + TargetID_PR_targetRNC_ID, + TargetID_PR_cGI + /* Extensions may appear below */ + +} S1AP_TargetID_PR; + +/* Forward declarations */ +struct S1AP_TargeteNB_ID; +struct S1AP_TargetRNC_ID; +struct S1AP_CGI; + +/* S1AP_TargetID */ +typedef struct S1AP_TargetID { + S1AP_TargetID_PR present; + union S1AP_TargetID_u { + struct S1AP_TargeteNB_ID *targeteNB_ID; + struct S1AP_TargetRNC_ID *targetRNC_ID; + struct S1AP_CGI *cGI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TargetID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TargetID; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TargetID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TargetRNC-ID.c b/lib/s1ap3/asn1c/S1AP_TargetRNC-ID.c new file mode 100644 index 0000000000..2ada5d0464 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargetRNC-ID.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TargetRNC-ID.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_TargetRNC_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargetRNC_ID, lAI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_LAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "lAI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TargetRNC_ID, rAC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargetRNC_ID, rNC_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RNC_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rNC-ID" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_TargetRNC_ID, extendedRNC_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ExtendedRNC_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "extendedRNC-ID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TargetRNC_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P104, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TargetRNC_ID_oms_1[] = { 1, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TargetRNC_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TargetRNC_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lAI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rAC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rNC-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* extendedRNC-ID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargetRNC_ID_specs_1 = { + sizeof(struct S1AP_TargetRNC_ID), + offsetof(struct S1AP_TargetRNC_ID, _asn_ctx), + asn_MAP_S1AP_TargetRNC_ID_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_TargetRNC_ID_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TargetRNC_ID = { + "TargetRNC-ID", + "TargetRNC-ID", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TargetRNC_ID_tags_1, + sizeof(asn_DEF_S1AP_TargetRNC_ID_tags_1) + /sizeof(asn_DEF_S1AP_TargetRNC_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TargetRNC_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TargetRNC_ID_tags_1) + /sizeof(asn_DEF_S1AP_TargetRNC_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TargetRNC_ID_1, + 5, /* Elements count */ + &asn_SPC_S1AP_TargetRNC_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TargetRNC-ID.h b/lib/s1ap3/asn1c/S1AP_TargetRNC-ID.h new file mode 100644 index 0000000000..3457b912b9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargetRNC-ID.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TargetRNC_ID_H_ +#define _S1AP_TargetRNC_ID_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_LAI.h" +#include "S1AP_RAC.h" +#include "S1AP_RNC-ID.h" +#include "S1AP_ExtendedRNC-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TargetRNC-ID */ +typedef struct S1AP_TargetRNC_ID { + S1AP_LAI_t lAI; + S1AP_RAC_t *rAC; /* OPTIONAL */ + S1AP_RNC_ID_t rNC_ID; + S1AP_ExtendedRNC_ID_t *extendedRNC_ID; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TargetRNC_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TargetRNC_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargetRNC_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TargetRNC_ID_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TargetRNC_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TargetRNC-ToSourceRNC-TransparentContainer.c b/lib/s1ap3/asn1c/S1AP_TargetRNC-ToSourceRNC-TransparentContainer.c new file mode 100644 index 0000000000..9c8159ab12 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargetRNC-ToSourceRNC-TransparentContainer.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TargetRNC-ToSourceRNC-TransparentContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TargetRNC_ToSourceRNC_TransparentContainer = { + "TargetRNC-ToSourceRNC-TransparentContainer", + "TargetRNC-ToSourceRNC-TransparentContainer", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1, + sizeof(asn_DEF_S1AP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_TargetRNC_ToSourceRNC_TransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TargetRNC-ToSourceRNC-TransparentContainer.h b/lib/s1ap3/asn1c/S1AP_TargetRNC-ToSourceRNC-TransparentContainer.h new file mode 100644 index 0000000000..d2a83a82e6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargetRNC-ToSourceRNC-TransparentContainer.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TargetRNC_ToSourceRNC_TransparentContainer_H_ +#define _S1AP_TargetRNC_ToSourceRNC_TransparentContainer_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TargetRNC-ToSourceRNC-TransparentContainer */ +typedef OCTET_STRING_t S1AP_TargetRNC_ToSourceRNC_TransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TargetRNC_ToSourceRNC_TransparentContainer; +asn_struct_free_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_free; +asn_struct_print_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_print; +asn_constr_check_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_constraint; +ber_type_decoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_decode_ber; +der_type_encoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_encode_der; +xer_type_decoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_decode_xer; +xer_type_encoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_encode_xer; +oer_type_decoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_decode_oer; +oer_type_encoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_encode_oer; +per_type_decoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_decode_uper; +per_type_encoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_encode_uper; +per_type_decoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_decode_aper; +per_type_encoder_f S1AP_TargetRNC_ToSourceRNC_TransparentContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TargetRNC_ToSourceRNC_TransparentContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TargeteNB-ID.c b/lib/s1ap3/asn1c/S1AP_TargeteNB-ID.c new file mode 100644 index 0000000000..06e189ac76 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargeteNB-ID.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TargeteNB-ID.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_TargeteNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargeteNB_ID, global_ENB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Global_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-ENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargeteNB_ID, selected_TAI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "selected-TAI" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TargeteNB_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P103, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TargeteNB_ID_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TargeteNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TargeteNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-ENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* selected-TAI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargeteNB_ID_specs_1 = { + sizeof(struct S1AP_TargeteNB_ID), + offsetof(struct S1AP_TargeteNB_ID, _asn_ctx), + asn_MAP_S1AP_TargeteNB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_TargeteNB_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TargeteNB_ID = { + "TargeteNB-ID", + "TargeteNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TargeteNB_ID_tags_1, + sizeof(asn_DEF_S1AP_TargeteNB_ID_tags_1) + /sizeof(asn_DEF_S1AP_TargeteNB_ID_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TargeteNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TargeteNB_ID_tags_1) + /sizeof(asn_DEF_S1AP_TargeteNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TargeteNB_ID_1, + 3, /* Elements count */ + &asn_SPC_S1AP_TargeteNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TargeteNB-ID.h b/lib/s1ap3/asn1c/S1AP_TargeteNB-ID.h new file mode 100644 index 0000000000..c60627a3a5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargeteNB-ID.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TargeteNB_ID_H_ +#define _S1AP_TargeteNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_Global-ENB-ID.h" +#include "S1AP_TAI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TargeteNB-ID */ +typedef struct S1AP_TargeteNB_ID { + S1AP_Global_ENB_ID_t global_ENB_ID; + S1AP_TAI_t selected_TAI; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TargeteNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TargeteNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargeteNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TargeteNB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TargeteNB_ID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TargeteNB-ToSourceeNB-TransparentContainer.c b/lib/s1ap3/asn1c/S1AP_TargeteNB-ToSourceeNB-TransparentContainer.c new file mode 100644 index 0000000000..ba92512681 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargeteNB-ToSourceeNB-TransparentContainer.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TargeteNB-ToSourceeNB-TransparentContainer.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer, rRC_Container), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_RRC_Container, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rRC-Container" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P105, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rRC-Container */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_specs_1 = { + sizeof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer), + offsetof(struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer, _asn_ctx), + asn_MAP_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer = { + "TargeteNB-ToSourceeNB-TransparentContainer", + "TargeteNB-ToSourceeNB-TransparentContainer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_tags_1, + sizeof(asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_tags_1) + /sizeof(asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_1, + 2, /* Elements count */ + &asn_SPC_S1AP_TargeteNB_ToSourceeNB_TransparentContainer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TargeteNB-ToSourceeNB-TransparentContainer.h b/lib/s1ap3/asn1c/S1AP_TargeteNB-ToSourceeNB-TransparentContainer.h new file mode 100644 index 0000000000..bc26049e8c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TargeteNB-ToSourceeNB-TransparentContainer.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TargeteNB_ToSourceeNB_TransparentContainer_H_ +#define _S1AP_TargeteNB_ToSourceeNB_TransparentContainer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_RRC-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TargeteNB-ToSourceeNB-TransparentContainer */ +typedef struct S1AP_TargeteNB_ToSourceeNB_TransparentContainer { + S1AP_RRC_Container_t rRC_Container; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TargeteNB_ToSourceeNB_TransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TargeteNB_ToSourceeNB_TransparentContainer; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TargeteNB_ToSourceeNB_TransparentContainer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Threshold-RSRP.c b/lib/s1ap3/asn1c/S1AP_Threshold-RSRP.c new file mode 100644 index 0000000000..6c618c069f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Threshold-RSRP.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Threshold-RSRP.h" + +int +S1AP_Threshold_RSRP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 97)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Threshold_RSRP_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..97) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Threshold_RSRP_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 97 } /* (0..97) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Threshold_RSRP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Threshold_RSRP = { + "Threshold-RSRP", + "Threshold-RSRP", + &asn_OP_NativeInteger, + asn_DEF_S1AP_Threshold_RSRP_tags_1, + sizeof(asn_DEF_S1AP_Threshold_RSRP_tags_1) + /sizeof(asn_DEF_S1AP_Threshold_RSRP_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Threshold_RSRP_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Threshold_RSRP_tags_1) + /sizeof(asn_DEF_S1AP_Threshold_RSRP_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Threshold_RSRP_constr_1, &asn_PER_type_S1AP_Threshold_RSRP_constr_1, S1AP_Threshold_RSRP_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Threshold-RSRP.h b/lib/s1ap3/asn1c/S1AP_Threshold-RSRP.h new file mode 100644 index 0000000000..66ea01ac95 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Threshold-RSRP.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Threshold_RSRP_H_ +#define _S1AP_Threshold_RSRP_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Threshold-RSRP */ +typedef long S1AP_Threshold_RSRP_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Threshold_RSRP_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Threshold_RSRP; +asn_struct_free_f S1AP_Threshold_RSRP_free; +asn_struct_print_f S1AP_Threshold_RSRP_print; +asn_constr_check_f S1AP_Threshold_RSRP_constraint; +ber_type_decoder_f S1AP_Threshold_RSRP_decode_ber; +der_type_encoder_f S1AP_Threshold_RSRP_encode_der; +xer_type_decoder_f S1AP_Threshold_RSRP_decode_xer; +xer_type_encoder_f S1AP_Threshold_RSRP_encode_xer; +oer_type_decoder_f S1AP_Threshold_RSRP_decode_oer; +oer_type_encoder_f S1AP_Threshold_RSRP_encode_oer; +per_type_decoder_f S1AP_Threshold_RSRP_decode_uper; +per_type_encoder_f S1AP_Threshold_RSRP_encode_uper; +per_type_decoder_f S1AP_Threshold_RSRP_decode_aper; +per_type_encoder_f S1AP_Threshold_RSRP_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Threshold_RSRP_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.c b/lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.c new file mode 100644 index 0000000000..4dd19e8891 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Threshold-RSRQ.h" + +int +S1AP_Threshold_RSRQ_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 34)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Threshold_RSRQ_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..34) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Threshold_RSRQ_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 34 } /* (0..34) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Threshold_RSRQ_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Threshold_RSRQ = { + "Threshold-RSRQ", + "Threshold-RSRQ", + &asn_OP_NativeInteger, + asn_DEF_S1AP_Threshold_RSRQ_tags_1, + sizeof(asn_DEF_S1AP_Threshold_RSRQ_tags_1) + /sizeof(asn_DEF_S1AP_Threshold_RSRQ_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Threshold_RSRQ_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Threshold_RSRQ_tags_1) + /sizeof(asn_DEF_S1AP_Threshold_RSRQ_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Threshold_RSRQ_constr_1, &asn_PER_type_S1AP_Threshold_RSRQ_constr_1, S1AP_Threshold_RSRQ_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.h b/lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.h new file mode 100644 index 0000000000..31664a0673 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Threshold-RSRQ.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Threshold_RSRQ_H_ +#define _S1AP_Threshold_RSRQ_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Threshold-RSRQ */ +typedef long S1AP_Threshold_RSRQ_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Threshold_RSRQ_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Threshold_RSRQ; +asn_struct_free_f S1AP_Threshold_RSRQ_free; +asn_struct_print_f S1AP_Threshold_RSRQ_print; +asn_constr_check_f S1AP_Threshold_RSRQ_constraint; +ber_type_decoder_f S1AP_Threshold_RSRQ_decode_ber; +der_type_encoder_f S1AP_Threshold_RSRQ_encode_der; +xer_type_decoder_f S1AP_Threshold_RSRQ_decode_xer; +xer_type_encoder_f S1AP_Threshold_RSRQ_encode_xer; +oer_type_decoder_f S1AP_Threshold_RSRQ_decode_oer; +oer_type_encoder_f S1AP_Threshold_RSRQ_encode_oer; +per_type_decoder_f S1AP_Threshold_RSRQ_decode_uper; +per_type_encoder_f S1AP_Threshold_RSRQ_encode_uper; +per_type_decoder_f S1AP_Threshold_RSRQ_decode_aper; +per_type_encoder_f S1AP_Threshold_RSRQ_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Threshold_RSRQ_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell-EnhancedGranularity.c b/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell-EnhancedGranularity.c new file mode 100644 index 0000000000..a54eac23fd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell-EnhancedGranularity.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Time-UE-StayedInCell-EnhancedGranularity.h" + +int +S1AP_Time_UE_StayedInCell_EnhancedGranularity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 40950)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Time_UE_StayedInCell_EnhancedGranularity_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..40950) */, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_Time_UE_StayedInCell_EnhancedGranularity_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 40950 } /* (0..40950) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity = { + "Time-UE-StayedInCell-EnhancedGranularity", + "Time-UE-StayedInCell-EnhancedGranularity", + &asn_OP_NativeInteger, + asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity_tags_1, + sizeof(asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity_tags_1) + /sizeof(asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity_tags_1) + /sizeof(asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Time_UE_StayedInCell_EnhancedGranularity_constr_1, &asn_PER_type_S1AP_Time_UE_StayedInCell_EnhancedGranularity_constr_1, S1AP_Time_UE_StayedInCell_EnhancedGranularity_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell-EnhancedGranularity.h b/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell-EnhancedGranularity.h new file mode 100644 index 0000000000..006b948025 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell-EnhancedGranularity.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Time_UE_StayedInCell_EnhancedGranularity_H_ +#define _S1AP_Time_UE_StayedInCell_EnhancedGranularity_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Time-UE-StayedInCell-EnhancedGranularity */ +typedef long S1AP_Time_UE_StayedInCell_EnhancedGranularity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Time_UE_StayedInCell_EnhancedGranularity; +asn_struct_free_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_free; +asn_struct_print_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_print; +asn_constr_check_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_constraint; +ber_type_decoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_decode_ber; +der_type_encoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_encode_der; +xer_type_decoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_decode_xer; +xer_type_encoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_encode_xer; +oer_type_decoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_decode_oer; +oer_type_encoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_encode_oer; +per_type_decoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_decode_uper; +per_type_encoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_encode_uper; +per_type_decoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_decode_aper; +per_type_encoder_f S1AP_Time_UE_StayedInCell_EnhancedGranularity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Time_UE_StayedInCell_EnhancedGranularity_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.c b/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.c new file mode 100644 index 0000000000..aa61eaddbf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_Time-UE-StayedInCell.h" + +int +S1AP_Time_UE_StayedInCell_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_Time_UE_StayedInCell_constr_1 CC_NOTUSED = { + { 2, 1 } /* (0..4095) */, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_Time_UE_StayedInCell_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_Time_UE_StayedInCell_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_Time_UE_StayedInCell = { + "Time-UE-StayedInCell", + "Time-UE-StayedInCell", + &asn_OP_NativeInteger, + asn_DEF_S1AP_Time_UE_StayedInCell_tags_1, + sizeof(asn_DEF_S1AP_Time_UE_StayedInCell_tags_1) + /sizeof(asn_DEF_S1AP_Time_UE_StayedInCell_tags_1[0]), /* 1 */ + asn_DEF_S1AP_Time_UE_StayedInCell_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_Time_UE_StayedInCell_tags_1) + /sizeof(asn_DEF_S1AP_Time_UE_StayedInCell_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_Time_UE_StayedInCell_constr_1, &asn_PER_type_S1AP_Time_UE_StayedInCell_constr_1, S1AP_Time_UE_StayedInCell_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.h b/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.h new file mode 100644 index 0000000000..a4dd2a0eb8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_Time-UE-StayedInCell.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_Time_UE_StayedInCell_H_ +#define _S1AP_Time_UE_StayedInCell_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_Time-UE-StayedInCell */ +typedef long S1AP_Time_UE_StayedInCell_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_Time_UE_StayedInCell_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_Time_UE_StayedInCell; +asn_struct_free_f S1AP_Time_UE_StayedInCell_free; +asn_struct_print_f S1AP_Time_UE_StayedInCell_print; +asn_constr_check_f S1AP_Time_UE_StayedInCell_constraint; +ber_type_decoder_f S1AP_Time_UE_StayedInCell_decode_ber; +der_type_encoder_f S1AP_Time_UE_StayedInCell_encode_der; +xer_type_decoder_f S1AP_Time_UE_StayedInCell_decode_xer; +xer_type_encoder_f S1AP_Time_UE_StayedInCell_encode_xer; +oer_type_decoder_f S1AP_Time_UE_StayedInCell_decode_oer; +oer_type_encoder_f S1AP_Time_UE_StayedInCell_encode_oer; +per_type_decoder_f S1AP_Time_UE_StayedInCell_decode_uper; +per_type_encoder_f S1AP_Time_UE_StayedInCell_encode_uper; +per_type_decoder_f S1AP_Time_UE_StayedInCell_decode_aper; +per_type_encoder_f S1AP_Time_UE_StayedInCell_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_Time_UE_StayedInCell_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TimeSynchronisationInfo.c b/lib/s1ap3/asn1c/S1AP_TimeSynchronisationInfo.c new file mode 100644 index 0000000000..4eb30f9326 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TimeSynchronisationInfo.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TimeSynchronisationInfo.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_TimeSynchronisationInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TimeSynchronisationInfo, stratumLevel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_StratumLevel, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "stratumLevel" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TimeSynchronisationInfo, synchronisationStatus), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_SynchronisationStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "synchronisationStatus" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TimeSynchronisationInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P95, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TimeSynchronisationInfo_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TimeSynchronisationInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TimeSynchronisationInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* stratumLevel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* synchronisationStatus */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_TimeSynchronisationInfo_specs_1 = { + sizeof(struct S1AP_TimeSynchronisationInfo), + offsetof(struct S1AP_TimeSynchronisationInfo, _asn_ctx), + asn_MAP_S1AP_TimeSynchronisationInfo_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_TimeSynchronisationInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TimeSynchronisationInfo = { + "TimeSynchronisationInfo", + "TimeSynchronisationInfo", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TimeSynchronisationInfo_tags_1, + sizeof(asn_DEF_S1AP_TimeSynchronisationInfo_tags_1) + /sizeof(asn_DEF_S1AP_TimeSynchronisationInfo_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TimeSynchronisationInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TimeSynchronisationInfo_tags_1) + /sizeof(asn_DEF_S1AP_TimeSynchronisationInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TimeSynchronisationInfo_1, + 3, /* Elements count */ + &asn_SPC_S1AP_TimeSynchronisationInfo_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TimeSynchronisationInfo.h b/lib/s1ap3/asn1c/S1AP_TimeSynchronisationInfo.h new file mode 100644 index 0000000000..613594653a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TimeSynchronisationInfo.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TimeSynchronisationInfo_H_ +#define _S1AP_TimeSynchronisationInfo_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_StratumLevel.h" +#include "S1AP_SynchronisationStatus.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TimeSynchronisationInfo */ +typedef struct S1AP_TimeSynchronisationInfo { + S1AP_StratumLevel_t stratumLevel; + S1AP_SynchronisationStatus_t synchronisationStatus; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TimeSynchronisationInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TimeSynchronisationInfo; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TimeSynchronisationInfo_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TimeToWait.c b/lib/s1ap3/asn1c/S1AP_TimeToWait.c new file mode 100644 index 0000000000..69f5788431 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TimeToWait.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_TimeToWait_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_TimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_TimeToWait_value2enum_1[] = { + { 0, 3, "v1s" }, + { 1, 3, "v2s" }, + { 2, 3, "v5s" }, + { 3, 4, "v10s" }, + { 4, 4, "v20s" }, + { 5, 4, "v60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_TimeToWait_enum2value_1[] = { + 3, /* v10s(3) */ + 0, /* v1s(0) */ + 4, /* v20s(4) */ + 1, /* v2s(1) */ + 2, /* v5s(2) */ + 5 /* v60s(5) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_TimeToWait_specs_1 = { + asn_MAP_S1AP_TimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_TimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TimeToWait = { + "TimeToWait", + "TimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_TimeToWait_tags_1, + sizeof(asn_DEF_S1AP_TimeToWait_tags_1) + /sizeof(asn_DEF_S1AP_TimeToWait_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TimeToWait_tags_1) + /sizeof(asn_DEF_S1AP_TimeToWait_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TimeToWait_constr_1, &asn_PER_type_S1AP_TimeToWait_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_TimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TimeToWait.h b/lib/s1ap3/asn1c/S1AP_TimeToWait.h new file mode 100644 index 0000000000..2583b47d17 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TimeToWait.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TimeToWait_H_ +#define _S1AP_TimeToWait_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_TimeToWait { + S1AP_TimeToWait_v1s = 0, + S1AP_TimeToWait_v2s = 1, + S1AP_TimeToWait_v5s = 2, + S1AP_TimeToWait_v10s = 3, + S1AP_TimeToWait_v20s = 4, + S1AP_TimeToWait_v60s = 5 + /* + * Enumeration is extensible + */ +} e_S1AP_TimeToWait; + +/* S1AP_TimeToWait */ +typedef long S1AP_TimeToWait_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TimeToWait; +asn_struct_free_f S1AP_TimeToWait_free; +asn_struct_print_f S1AP_TimeToWait_print; +asn_constr_check_f S1AP_TimeToWait_constraint; +ber_type_decoder_f S1AP_TimeToWait_decode_ber; +der_type_encoder_f S1AP_TimeToWait_encode_der; +xer_type_decoder_f S1AP_TimeToWait_decode_xer; +xer_type_encoder_f S1AP_TimeToWait_encode_xer; +oer_type_decoder_f S1AP_TimeToWait_decode_oer; +oer_type_encoder_f S1AP_TimeToWait_encode_oer; +per_type_decoder_f S1AP_TimeToWait_decode_uper; +per_type_encoder_f S1AP_TimeToWait_encode_uper; +per_type_decoder_f S1AP_TimeToWait_decode_aper; +per_type_encoder_f S1AP_TimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TimeToWait_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TraceActivation.c b/lib/s1ap3/asn1c/S1AP_TraceActivation.c new file mode 100644 index 0000000000..c801b554d2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TraceActivation.c @@ -0,0 +1,93 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TraceActivation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_TraceActivation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceActivation, e_UTRAN_Trace_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_E_UTRAN_Trace_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-UTRAN-Trace-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceActivation, interfacesToTrace), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_InterfacesToTrace, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfacesToTrace" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceActivation, traceDepth), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TraceDepth, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "traceDepth" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceActivation, traceCollectionEntityIPAddress), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "traceCollectionEntityIPAddress" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TraceActivation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P107, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TraceActivation_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TraceActivation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TraceActivation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-UTRAN-Trace-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfacesToTrace */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* traceDepth */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* traceCollectionEntityIPAddress */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceActivation_specs_1 = { + sizeof(struct S1AP_TraceActivation), + offsetof(struct S1AP_TraceActivation, _asn_ctx), + asn_MAP_S1AP_TraceActivation_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_S1AP_TraceActivation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TraceActivation = { + "TraceActivation", + "TraceActivation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TraceActivation_tags_1, + sizeof(asn_DEF_S1AP_TraceActivation_tags_1) + /sizeof(asn_DEF_S1AP_TraceActivation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TraceActivation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TraceActivation_tags_1) + /sizeof(asn_DEF_S1AP_TraceActivation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TraceActivation_1, + 5, /* Elements count */ + &asn_SPC_S1AP_TraceActivation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TraceActivation.h b/lib/s1ap3/asn1c/S1AP_TraceActivation.h new file mode 100644 index 0000000000..e4c786d238 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TraceActivation.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TraceActivation_H_ +#define _S1AP_TraceActivation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_E-UTRAN-Trace-ID.h" +#include "S1AP_InterfacesToTrace.h" +#include "S1AP_TraceDepth.h" +#include "S1AP_TransportLayerAddress.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TraceActivation */ +typedef struct S1AP_TraceActivation { + S1AP_E_UTRAN_Trace_ID_t e_UTRAN_Trace_ID; + S1AP_InterfacesToTrace_t interfacesToTrace; + S1AP_TraceDepth_t traceDepth; + S1AP_TransportLayerAddress_t traceCollectionEntityIPAddress; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TraceActivation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TraceActivation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TraceActivation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TraceDepth.c b/lib/s1ap3/asn1c/S1AP_TraceDepth.c new file mode 100644 index 0000000000..e1785324a6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TraceDepth.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TraceDepth.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_TraceDepth_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_TraceDepth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_TraceDepth_value2enum_1[] = { + { 0, 7, "minimum" }, + { 1, 6, "medium" }, + { 2, 7, "maximum" }, + { 3, 37, "minimumWithoutVendorSpecificExtension" }, + { 4, 36, "mediumWithoutVendorSpecificExtension" }, + { 5, 37, "maximumWithoutVendorSpecificExtension" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_TraceDepth_enum2value_1[] = { + 2, /* maximum(2) */ + 5, /* maximumWithoutVendorSpecificExtension(5) */ + 1, /* medium(1) */ + 4, /* mediumWithoutVendorSpecificExtension(4) */ + 0, /* minimum(0) */ + 3 /* minimumWithoutVendorSpecificExtension(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_TraceDepth_specs_1 = { + asn_MAP_S1AP_TraceDepth_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_TraceDepth_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TraceDepth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TraceDepth = { + "TraceDepth", + "TraceDepth", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_TraceDepth_tags_1, + sizeof(asn_DEF_S1AP_TraceDepth_tags_1) + /sizeof(asn_DEF_S1AP_TraceDepth_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TraceDepth_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TraceDepth_tags_1) + /sizeof(asn_DEF_S1AP_TraceDepth_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TraceDepth_constr_1, &asn_PER_type_S1AP_TraceDepth_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_TraceDepth_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TraceDepth.h b/lib/s1ap3/asn1c/S1AP_TraceDepth.h new file mode 100644 index 0000000000..03fcff4a15 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TraceDepth.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TraceDepth_H_ +#define _S1AP_TraceDepth_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_TraceDepth { + S1AP_TraceDepth_minimum = 0, + S1AP_TraceDepth_medium = 1, + S1AP_TraceDepth_maximum = 2, + S1AP_TraceDepth_minimumWithoutVendorSpecificExtension = 3, + S1AP_TraceDepth_mediumWithoutVendorSpecificExtension = 4, + S1AP_TraceDepth_maximumWithoutVendorSpecificExtension = 5 + /* + * Enumeration is extensible + */ +} e_S1AP_TraceDepth; + +/* S1AP_TraceDepth */ +typedef long S1AP_TraceDepth_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_TraceDepth_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TraceDepth; +extern const asn_INTEGER_specifics_t asn_SPC_TraceDepth_specs_1; +asn_struct_free_f TraceDepth_free; +asn_struct_print_f TraceDepth_print; +asn_constr_check_f TraceDepth_constraint; +ber_type_decoder_f TraceDepth_decode_ber; +der_type_encoder_f TraceDepth_encode_der; +xer_type_decoder_f TraceDepth_decode_xer; +xer_type_encoder_f TraceDepth_encode_xer; +oer_type_decoder_f TraceDepth_decode_oer; +oer_type_encoder_f TraceDepth_encode_oer; +per_type_decoder_f TraceDepth_decode_uper; +per_type_encoder_f TraceDepth_encode_uper; +per_type_decoder_f TraceDepth_decode_aper; +per_type_encoder_f TraceDepth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TraceDepth_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TraceFailureIndication.c b/lib/s1ap3/asn1c/S1AP_TraceFailureIndication.c new file mode 100644 index 0000000000..edd0e2b5b6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TraceFailureIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TraceFailureIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_TraceFailureIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceFailureIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P55, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TraceFailureIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TraceFailureIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceFailureIndication_specs_1 = { + sizeof(struct S1AP_TraceFailureIndication), + offsetof(struct S1AP_TraceFailureIndication, _asn_ctx), + asn_MAP_S1AP_TraceFailureIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TraceFailureIndication = { + "TraceFailureIndication", + "TraceFailureIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TraceFailureIndication_tags_1, + sizeof(asn_DEF_S1AP_TraceFailureIndication_tags_1) + /sizeof(asn_DEF_S1AP_TraceFailureIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TraceFailureIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TraceFailureIndication_tags_1) + /sizeof(asn_DEF_S1AP_TraceFailureIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TraceFailureIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_TraceFailureIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TraceFailureIndication.h b/lib/s1ap3/asn1c/S1AP_TraceFailureIndication.h new file mode 100644 index 0000000000..53fb2aa22e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TraceFailureIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TraceFailureIndication_H_ +#define _S1AP_TraceFailureIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TraceFailureIndication */ +typedef struct S1AP_TraceFailureIndication { + S1AP_ProtocolIE_Container_6551P55_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TraceFailureIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TraceFailureIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceFailureIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TraceFailureIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TraceFailureIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TraceStart.c b/lib/s1ap3/asn1c/S1AP_TraceStart.c new file mode 100644 index 0000000000..1a53ff1126 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TraceStart.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TraceStart.h" + +asn_TYPE_member_t asn_MBR_S1AP_TraceStart_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TraceStart, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P54, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TraceStart_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TraceStart_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceStart_specs_1 = { + sizeof(struct S1AP_TraceStart), + offsetof(struct S1AP_TraceStart, _asn_ctx), + asn_MAP_S1AP_TraceStart_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TraceStart = { + "TraceStart", + "TraceStart", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TraceStart_tags_1, + sizeof(asn_DEF_S1AP_TraceStart_tags_1) + /sizeof(asn_DEF_S1AP_TraceStart_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TraceStart_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TraceStart_tags_1) + /sizeof(asn_DEF_S1AP_TraceStart_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TraceStart_1, + 1, /* Elements count */ + &asn_SPC_S1AP_TraceStart_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TraceStart.h b/lib/s1ap3/asn1c/S1AP_TraceStart.h new file mode 100644 index 0000000000..5918cfead0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TraceStart.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TraceStart_H_ +#define _S1AP_TraceStart_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TraceStart */ +typedef struct S1AP_TraceStart { + S1AP_ProtocolIE_Container_6551P54_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TraceStart_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TraceStart; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_TraceStart_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_TraceStart_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TraceStart_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TrafficLoadReductionIndication.c b/lib/s1ap3/asn1c/S1AP_TrafficLoadReductionIndication.c new file mode 100644 index 0000000000..367d4b6ceb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TrafficLoadReductionIndication.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TrafficLoadReductionIndication.h" + +int +S1AP_TrafficLoadReductionIndication_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 99)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_TrafficLoadReductionIndication_constr_1 CC_NOTUSED = { + { 1, 1 } /* (1..99) */, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_TrafficLoadReductionIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 1, 99 } /* (1..99) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TrafficLoadReductionIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TrafficLoadReductionIndication = { + "TrafficLoadReductionIndication", + "TrafficLoadReductionIndication", + &asn_OP_NativeInteger, + asn_DEF_S1AP_TrafficLoadReductionIndication_tags_1, + sizeof(asn_DEF_S1AP_TrafficLoadReductionIndication_tags_1) + /sizeof(asn_DEF_S1AP_TrafficLoadReductionIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TrafficLoadReductionIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TrafficLoadReductionIndication_tags_1) + /sizeof(asn_DEF_S1AP_TrafficLoadReductionIndication_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TrafficLoadReductionIndication_constr_1, &asn_PER_type_S1AP_TrafficLoadReductionIndication_constr_1, S1AP_TrafficLoadReductionIndication_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TrafficLoadReductionIndication.h b/lib/s1ap3/asn1c/S1AP_TrafficLoadReductionIndication.h new file mode 100644 index 0000000000..a1e644ce46 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TrafficLoadReductionIndication.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TrafficLoadReductionIndication_H_ +#define _S1AP_TrafficLoadReductionIndication_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TrafficLoadReductionIndication */ +typedef long S1AP_TrafficLoadReductionIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TrafficLoadReductionIndication; +asn_struct_free_f S1AP_TrafficLoadReductionIndication_free; +asn_struct_print_f S1AP_TrafficLoadReductionIndication_print; +asn_constr_check_f S1AP_TrafficLoadReductionIndication_constraint; +ber_type_decoder_f S1AP_TrafficLoadReductionIndication_decode_ber; +der_type_encoder_f S1AP_TrafficLoadReductionIndication_encode_der; +xer_type_decoder_f S1AP_TrafficLoadReductionIndication_decode_xer; +xer_type_encoder_f S1AP_TrafficLoadReductionIndication_encode_xer; +oer_type_decoder_f S1AP_TrafficLoadReductionIndication_decode_oer; +oer_type_encoder_f S1AP_TrafficLoadReductionIndication_encode_oer; +per_type_decoder_f S1AP_TrafficLoadReductionIndication_decode_uper; +per_type_encoder_f S1AP_TrafficLoadReductionIndication_encode_uper; +per_type_decoder_f S1AP_TrafficLoadReductionIndication_decode_aper; +per_type_encoder_f S1AP_TrafficLoadReductionIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TrafficLoadReductionIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TransportInformation.c b/lib/s1ap3/asn1c/S1AP_TransportInformation.c new file mode 100644 index 0000000000..087b971b2d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TransportInformation.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TransportInformation.h" + +static asn_TYPE_member_t asn_MBR_S1AP_TransportInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TransportInformation, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TransportInformation, uL_GTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_GTP_TEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTP-TEID" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TransportInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TransportInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uL-GTP-TEID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_TransportInformation_specs_1 = { + sizeof(struct S1AP_TransportInformation), + offsetof(struct S1AP_TransportInformation, _asn_ctx), + asn_MAP_S1AP_TransportInformation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TransportInformation = { + "TransportInformation", + "TransportInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TransportInformation_tags_1, + sizeof(asn_DEF_S1AP_TransportInformation_tags_1) + /sizeof(asn_DEF_S1AP_TransportInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TransportInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TransportInformation_tags_1) + /sizeof(asn_DEF_S1AP_TransportInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TransportInformation_1, + 2, /* Elements count */ + &asn_SPC_S1AP_TransportInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TransportInformation.h b/lib/s1ap3/asn1c/S1AP_TransportInformation.h new file mode 100644 index 0000000000..a97dc177a0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TransportInformation.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TransportInformation_H_ +#define _S1AP_TransportInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_GTP-TEID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TransportInformation */ +typedef struct S1AP_TransportInformation { + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_GTP_TEID_t uL_GTP_TEID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TransportInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TransportInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TransportInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TransportLayerAddress.c b/lib/s1ap3/asn1c/S1AP_TransportLayerAddress.c new file mode 100644 index 0000000000..fe4abaea6f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TransportLayerAddress.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TransportLayerAddress.h" + +int +S1AP_TransportLayerAddress_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 160)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_TransportLayerAddress_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(0..MAX)) */}; +asn_per_constraints_t asn_PER_type_S1AP_TransportLayerAddress_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 160 } /* (SIZE(1..160,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TransportLayerAddress_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TransportLayerAddress = { + "TransportLayerAddress", + "TransportLayerAddress", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_TransportLayerAddress_tags_1, + sizeof(asn_DEF_S1AP_TransportLayerAddress_tags_1) + /sizeof(asn_DEF_S1AP_TransportLayerAddress_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TransportLayerAddress_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TransportLayerAddress_tags_1) + /sizeof(asn_DEF_S1AP_TransportLayerAddress_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TransportLayerAddress_constr_1, &asn_PER_type_S1AP_TransportLayerAddress_constr_1, S1AP_TransportLayerAddress_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TransportLayerAddress.h b/lib/s1ap3/asn1c/S1AP_TransportLayerAddress.h new file mode 100644 index 0000000000..0a140ec2d3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TransportLayerAddress.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TransportLayerAddress_H_ +#define _S1AP_TransportLayerAddress_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_TransportLayerAddress */ +typedef BIT_STRING_t S1AP_TransportLayerAddress_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_TransportLayerAddress_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TransportLayerAddress; +asn_struct_free_f S1AP_TransportLayerAddress_free; +asn_struct_print_f S1AP_TransportLayerAddress_print; +asn_constr_check_f S1AP_TransportLayerAddress_constraint; +ber_type_decoder_f S1AP_TransportLayerAddress_decode_ber; +der_type_encoder_f S1AP_TransportLayerAddress_encode_der; +xer_type_decoder_f S1AP_TransportLayerAddress_decode_xer; +xer_type_encoder_f S1AP_TransportLayerAddress_encode_xer; +oer_type_decoder_f S1AP_TransportLayerAddress_decode_oer; +oer_type_encoder_f S1AP_TransportLayerAddress_encode_oer; +per_type_decoder_f S1AP_TransportLayerAddress_decode_uper; +per_type_encoder_f S1AP_TransportLayerAddress_encode_uper; +per_type_decoder_f S1AP_TransportLayerAddress_decode_aper; +per_type_encoder_f S1AP_TransportLayerAddress_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TransportLayerAddress_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TriggeringMessage.c b/lib/s1ap3/asn1c/S1AP_TriggeringMessage.c new file mode 100644 index 0000000000..70161698d5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TriggeringMessage.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TriggeringMessage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_TriggeringMessage_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_TriggeringMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_TriggeringMessage_value2enum_1[] = { + { 0, 18, "initiating-message" }, + { 1, 18, "successful-outcome" }, + { 2, 21, "unsuccessfull-outcome" } +}; +static const unsigned int asn_MAP_S1AP_TriggeringMessage_enum2value_1[] = { + 0, /* initiating-message(0) */ + 1, /* successful-outcome(1) */ + 2 /* unsuccessfull-outcome(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_TriggeringMessage_specs_1 = { + asn_MAP_S1AP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TriggeringMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TriggeringMessage = { + "TriggeringMessage", + "TriggeringMessage", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_TriggeringMessage_tags_1, + sizeof(asn_DEF_S1AP_TriggeringMessage_tags_1) + /sizeof(asn_DEF_S1AP_TriggeringMessage_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TriggeringMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TriggeringMessage_tags_1) + /sizeof(asn_DEF_S1AP_TriggeringMessage_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TriggeringMessage_constr_1, &asn_PER_type_S1AP_TriggeringMessage_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_TriggeringMessage_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TriggeringMessage.h b/lib/s1ap3/asn1c/S1AP_TriggeringMessage.h new file mode 100644 index 0000000000..2760e15463 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TriggeringMessage.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-CommonDataTypes" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TriggeringMessage_H_ +#define _S1AP_TriggeringMessage_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_TriggeringMessage { + S1AP_TriggeringMessage_initiating_message = 0, + S1AP_TriggeringMessage_successful_outcome = 1, + S1AP_TriggeringMessage_unsuccessfull_outcome = 2 +} e_S1AP_TriggeringMessage; + +/* S1AP_TriggeringMessage */ +typedef long S1AP_TriggeringMessage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_TriggeringMessage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TriggeringMessage; +extern const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1; +asn_struct_free_f TriggeringMessage_free; +asn_struct_print_f TriggeringMessage_print; +asn_constr_check_f TriggeringMessage_constraint; +ber_type_decoder_f TriggeringMessage_decode_ber; +der_type_encoder_f TriggeringMessage_encode_der; +xer_type_decoder_f TriggeringMessage_decode_xer; +xer_type_encoder_f TriggeringMessage_encode_xer; +oer_type_decoder_f TriggeringMessage_decode_oer; +oer_type_encoder_f TriggeringMessage_encode_oer; +per_type_decoder_f TriggeringMessage_decode_uper; +per_type_encoder_f TriggeringMessage_encode_uper; +per_type_decoder_f TriggeringMessage_decode_aper; +per_type_encoder_f TriggeringMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TriggeringMessage_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TunnelInformation.c b/lib/s1ap3/asn1c/S1AP_TunnelInformation.c new file mode 100644 index 0000000000..62998e389d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TunnelInformation.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TunnelInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_TunnelInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_TunnelInformation, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_TunnelInformation, uDP_Port_Number), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Port_Number, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uDP-Port-Number" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_TunnelInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P108, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_TunnelInformation_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_TunnelInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_TunnelInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uDP-Port-Number */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_TunnelInformation_specs_1 = { + sizeof(struct S1AP_TunnelInformation), + offsetof(struct S1AP_TunnelInformation, _asn_ctx), + asn_MAP_S1AP_TunnelInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_TunnelInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TunnelInformation = { + "TunnelInformation", + "TunnelInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_TunnelInformation_tags_1, + sizeof(asn_DEF_S1AP_TunnelInformation_tags_1) + /sizeof(asn_DEF_S1AP_TunnelInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TunnelInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TunnelInformation_tags_1) + /sizeof(asn_DEF_S1AP_TunnelInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_TunnelInformation_1, + 3, /* Elements count */ + &asn_SPC_S1AP_TunnelInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TunnelInformation.h b/lib/s1ap3/asn1c/S1AP_TunnelInformation.h new file mode 100644 index 0000000000..8957b14d8b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TunnelInformation.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TunnelInformation_H_ +#define _S1AP_TunnelInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_TransportLayerAddress.h" +#include "S1AP_Port-Number.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_TunnelInformation */ +typedef struct S1AP_TunnelInformation { + S1AP_TransportLayerAddress_t transportLayerAddress; + S1AP_Port_Number_t *uDP_Port_Number; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_TunnelInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TunnelInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TunnelInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_TypeOfError.c b/lib/s1ap3/asn1c/S1AP_TypeOfError.c new file mode 100644 index 0000000000..33391984cc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TypeOfError.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_TypeOfError.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_TypeOfError_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_TypeOfError_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_TypeOfError_value2enum_1[] = { + { 0, 14, "not-understood" }, + { 1, 7, "missing" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_TypeOfError_enum2value_1[] = { + 1, /* missing(1) */ + 0 /* not-understood(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_TypeOfError_specs_1 = { + asn_MAP_S1AP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_TypeOfError_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_TypeOfError = { + "TypeOfError", + "TypeOfError", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_TypeOfError_tags_1, + sizeof(asn_DEF_S1AP_TypeOfError_tags_1) + /sizeof(asn_DEF_S1AP_TypeOfError_tags_1[0]), /* 1 */ + asn_DEF_S1AP_TypeOfError_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_TypeOfError_tags_1) + /sizeof(asn_DEF_S1AP_TypeOfError_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_TypeOfError_constr_1, &asn_PER_type_S1AP_TypeOfError_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_TypeOfError_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_TypeOfError.h b/lib/s1ap3/asn1c/S1AP_TypeOfError.h new file mode 100644 index 0000000000..0a124930fd --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_TypeOfError.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_TypeOfError_H_ +#define _S1AP_TypeOfError_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_TypeOfError { + S1AP_TypeOfError_not_understood = 0, + S1AP_TypeOfError_missing = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_TypeOfError; + +/* S1AP_TypeOfError */ +typedef long S1AP_TypeOfError_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_TypeOfError_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_TypeOfError; +extern const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1; +asn_struct_free_f TypeOfError_free; +asn_struct_print_f TypeOfError_print; +asn_constr_check_f TypeOfError_constraint; +ber_type_decoder_f TypeOfError_decode_ber; +der_type_encoder_f TypeOfError_encode_der; +xer_type_decoder_f TypeOfError_decode_xer; +xer_type_encoder_f TypeOfError_encode_xer; +oer_type_decoder_f TypeOfError_decode_oer; +oer_type_encoder_f TypeOfError_encode_oer; +per_type_decoder_f TypeOfError_decode_uper; +per_type_encoder_f TypeOfError_encode_uper; +per_type_decoder_f TypeOfError_decode_aper; +per_type_encoder_f TypeOfError_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_TypeOfError_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.c b/lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.c new file mode 100644 index 0000000000..3724ea8a64 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-HistoryInformation.h" + +#include "S1AP_LastVisitedCell-Item.h" +static asn_oer_constraints_t asn_OER_type_S1AP_UE_HistoryInformation_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..16)) */}; +asn_per_constraints_t asn_PER_type_S1AP_UE_HistoryInformation_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_UE_HistoryInformation_1[] = { + { ATF_POINTER, 0, 0, + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_S1AP_LastVisitedCell_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_HistoryInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_UE_HistoryInformation_specs_1 = { + sizeof(struct S1AP_UE_HistoryInformation), + offsetof(struct S1AP_UE_HistoryInformation, _asn_ctx), + 2, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_HistoryInformation = { + "UE-HistoryInformation", + "UE-HistoryInformation", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_UE_HistoryInformation_tags_1, + sizeof(asn_DEF_S1AP_UE_HistoryInformation_tags_1) + /sizeof(asn_DEF_S1AP_UE_HistoryInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_HistoryInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_HistoryInformation_tags_1) + /sizeof(asn_DEF_S1AP_UE_HistoryInformation_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_UE_HistoryInformation_constr_1, &asn_PER_type_S1AP_UE_HistoryInformation_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_UE_HistoryInformation_1, + 1, /* Single element */ + &asn_SPC_S1AP_UE_HistoryInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.h b/lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.h new file mode 100644 index 0000000000..6a05bd1060 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-HistoryInformation.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_HistoryInformation_H_ +#define _S1AP_UE_HistoryInformation_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_LastVisitedCell_Item; + +/* S1AP_UE-HistoryInformation */ +typedef struct S1AP_UE_HistoryInformation { + A_SEQUENCE_OF(struct S1AP_LastVisitedCell_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_HistoryInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_HistoryInformation; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_UE_HistoryInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UE_HistoryInformation_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_UE_HistoryInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_HistoryInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-HistoryInformationFromTheUE.c b/lib/s1ap3/asn1c/S1AP_UE-HistoryInformationFromTheUE.c new file mode 100644 index 0000000000..9cfb363b10 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-HistoryInformationFromTheUE.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-HistoryInformationFromTheUE.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_UE_HistoryInformationFromTheUE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_HistoryInformationFromTheUE = { + "UE-HistoryInformationFromTheUE", + "UE-HistoryInformationFromTheUE", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_UE_HistoryInformationFromTheUE_tags_1, + sizeof(asn_DEF_S1AP_UE_HistoryInformationFromTheUE_tags_1) + /sizeof(asn_DEF_S1AP_UE_HistoryInformationFromTheUE_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_HistoryInformationFromTheUE_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_HistoryInformationFromTheUE_tags_1) + /sizeof(asn_DEF_S1AP_UE_HistoryInformationFromTheUE_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-HistoryInformationFromTheUE.h b/lib/s1ap3/asn1c/S1AP_UE-HistoryInformationFromTheUE.h new file mode 100644 index 0000000000..0a31b2de21 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-HistoryInformationFromTheUE.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_HistoryInformationFromTheUE_H_ +#define _S1AP_UE_HistoryInformationFromTheUE_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UE-HistoryInformationFromTheUE */ +typedef OCTET_STRING_t S1AP_UE_HistoryInformationFromTheUE_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_HistoryInformationFromTheUE; +asn_struct_free_f S1AP_UE_HistoryInformationFromTheUE_free; +asn_struct_print_f S1AP_UE_HistoryInformationFromTheUE_print; +asn_constr_check_f S1AP_UE_HistoryInformationFromTheUE_constraint; +ber_type_decoder_f S1AP_UE_HistoryInformationFromTheUE_decode_ber; +der_type_encoder_f S1AP_UE_HistoryInformationFromTheUE_encode_der; +xer_type_decoder_f S1AP_UE_HistoryInformationFromTheUE_decode_xer; +xer_type_encoder_f S1AP_UE_HistoryInformationFromTheUE_encode_xer; +oer_type_decoder_f S1AP_UE_HistoryInformationFromTheUE_decode_oer; +oer_type_encoder_f S1AP_UE_HistoryInformationFromTheUE_encode_oer; +per_type_decoder_f S1AP_UE_HistoryInformationFromTheUE_decode_uper; +per_type_encoder_f S1AP_UE_HistoryInformationFromTheUE_encode_uper; +per_type_decoder_f S1AP_UE_HistoryInformationFromTheUE_decode_aper; +per_type_encoder_f S1AP_UE_HistoryInformationFromTheUE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_HistoryInformationFromTheUE_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container-for-extended-bands.c b/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container-for-extended-bands.c new file mode 100644 index 0000000000..88c41a9bcc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container-for-extended-bands.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-RLF-Report-Container-for-extended-bands.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands = { + "UE-RLF-Report-Container-for-extended-bands", + "UE-RLF-Report-Container-for-extended-bands", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands_tags_1, + sizeof(asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands_tags_1) + /sizeof(asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands_tags_1) + /sizeof(asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container-for-extended-bands.h b/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container-for-extended-bands.h new file mode 100644 index 0000000000..b0c407ff86 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container-for-extended-bands.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_RLF_Report_Container_for_extended_bands_H_ +#define _S1AP_UE_RLF_Report_Container_for_extended_bands_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UE-RLF-Report-Container-for-extended-bands */ +typedef OCTET_STRING_t S1AP_UE_RLF_Report_Container_for_extended_bands_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_RLF_Report_Container_for_extended_bands; +asn_struct_free_f S1AP_UE_RLF_Report_Container_for_extended_bands_free; +asn_struct_print_f S1AP_UE_RLF_Report_Container_for_extended_bands_print; +asn_constr_check_f S1AP_UE_RLF_Report_Container_for_extended_bands_constraint; +ber_type_decoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_decode_ber; +der_type_encoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_encode_der; +xer_type_decoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_decode_xer; +xer_type_encoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_encode_xer; +oer_type_decoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_decode_oer; +oer_type_encoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_encode_oer; +per_type_decoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_decode_uper; +per_type_encoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_encode_uper; +per_type_decoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_decode_aper; +per_type_encoder_f S1AP_UE_RLF_Report_Container_for_extended_bands_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_RLF_Report_Container_for_extended_bands_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container.c b/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container.c new file mode 100644 index 0000000000..df2d56494f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-RLF-Report-Container.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_UE_RLF_Report_Container_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_RLF_Report_Container = { + "UE-RLF-Report-Container", + "UE-RLF-Report-Container", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_UE_RLF_Report_Container_tags_1, + sizeof(asn_DEF_S1AP_UE_RLF_Report_Container_tags_1) + /sizeof(asn_DEF_S1AP_UE_RLF_Report_Container_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_RLF_Report_Container_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_RLF_Report_Container_tags_1) + /sizeof(asn_DEF_S1AP_UE_RLF_Report_Container_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container.h b/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container.h new file mode 100644 index 0000000000..75164e9b17 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-RLF-Report-Container.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_RLF_Report_Container_H_ +#define _S1AP_UE_RLF_Report_Container_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UE-RLF-Report-Container */ +typedef OCTET_STRING_t S1AP_UE_RLF_Report_Container_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_RLF_Report_Container; +asn_struct_free_f S1AP_UE_RLF_Report_Container_free; +asn_struct_print_f S1AP_UE_RLF_Report_Container_print; +asn_constr_check_f S1AP_UE_RLF_Report_Container_constraint; +ber_type_decoder_f S1AP_UE_RLF_Report_Container_decode_ber; +der_type_encoder_f S1AP_UE_RLF_Report_Container_encode_der; +xer_type_decoder_f S1AP_UE_RLF_Report_Container_decode_xer; +xer_type_encoder_f S1AP_UE_RLF_Report_Container_encode_xer; +oer_type_decoder_f S1AP_UE_RLF_Report_Container_decode_oer; +oer_type_encoder_f S1AP_UE_RLF_Report_Container_encode_oer; +per_type_decoder_f S1AP_UE_RLF_Report_Container_decode_uper; +per_type_encoder_f S1AP_UE_RLF_Report_Container_encode_uper; +per_type_decoder_f S1AP_UE_RLF_Report_Container_decode_aper; +per_type_encoder_f S1AP_UE_RLF_Report_Container_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_RLF_Report_Container_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-RetentionInformation.c b/lib/s1ap3/asn1c/S1AP_UE-RetentionInformation.c new file mode 100644 index 0000000000..e77a8182d6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-RetentionInformation.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-RetentionInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_UE_RetentionInformation_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_UE_RetentionInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_UE_RetentionInformation_value2enum_1[] = { + { 0, 12, "ues-retained" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_UE_RetentionInformation_enum2value_1[] = { + 0 /* ues-retained(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_UE_RetentionInformation_specs_1 = { + asn_MAP_S1AP_UE_RetentionInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_UE_RetentionInformation_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_RetentionInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_RetentionInformation = { + "UE-RetentionInformation", + "UE-RetentionInformation", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_UE_RetentionInformation_tags_1, + sizeof(asn_DEF_S1AP_UE_RetentionInformation_tags_1) + /sizeof(asn_DEF_S1AP_UE_RetentionInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_RetentionInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_RetentionInformation_tags_1) + /sizeof(asn_DEF_S1AP_UE_RetentionInformation_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_UE_RetentionInformation_constr_1, &asn_PER_type_S1AP_UE_RetentionInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_UE_RetentionInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-RetentionInformation.h b/lib/s1ap3/asn1c/S1AP_UE-RetentionInformation.h new file mode 100644 index 0000000000..ed96b0c589 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-RetentionInformation.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_RetentionInformation_H_ +#define _S1AP_UE_RetentionInformation_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_UE_RetentionInformation { + S1AP_UE_RetentionInformation_ues_retained = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_UE_RetentionInformation; + +/* S1AP_UE-RetentionInformation */ +typedef long S1AP_UE_RetentionInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_RetentionInformation; +asn_struct_free_f S1AP_UE_RetentionInformation_free; +asn_struct_print_f S1AP_UE_RetentionInformation_print; +asn_constr_check_f S1AP_UE_RetentionInformation_constraint; +ber_type_decoder_f S1AP_UE_RetentionInformation_decode_ber; +der_type_encoder_f S1AP_UE_RetentionInformation_encode_der; +xer_type_decoder_f S1AP_UE_RetentionInformation_decode_xer; +xer_type_encoder_f S1AP_UE_RetentionInformation_encode_xer; +oer_type_decoder_f S1AP_UE_RetentionInformation_decode_oer; +oer_type_encoder_f S1AP_UE_RetentionInformation_encode_oer; +per_type_decoder_f S1AP_UE_RetentionInformation_decode_uper; +per_type_encoder_f S1AP_UE_RetentionInformation_encode_uper; +per_type_decoder_f S1AP_UE_RetentionInformation_decode_aper; +per_type_encoder_f S1AP_UE_RetentionInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_RetentionInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.c b/lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.c new file mode 100644 index 0000000000..3573f5da22 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-S1AP-ID-pair.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_UE_S1AP_ID_pair_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_S1AP_ID_pair, mME_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_S1AP_ID_pair, eNB_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNB-UE-S1AP-ID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_UE_S1AP_ID_pair, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P110, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_UE_S1AP_ID_pair_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_S1AP_ID_pair_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UE_S1AP_ID_pair_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eNB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_S1AP_ID_pair_specs_1 = { + sizeof(struct S1AP_UE_S1AP_ID_pair), + offsetof(struct S1AP_UE_S1AP_ID_pair, _asn_ctx), + asn_MAP_S1AP_UE_S1AP_ID_pair_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_UE_S1AP_ID_pair_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_S1AP_ID_pair = { + "UE-S1AP-ID-pair", + "UE-S1AP-ID-pair", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UE_S1AP_ID_pair_tags_1, + sizeof(asn_DEF_S1AP_UE_S1AP_ID_pair_tags_1) + /sizeof(asn_DEF_S1AP_UE_S1AP_ID_pair_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_S1AP_ID_pair_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_S1AP_ID_pair_tags_1) + /sizeof(asn_DEF_S1AP_UE_S1AP_ID_pair_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UE_S1AP_ID_pair_1, + 3, /* Elements count */ + &asn_SPC_S1AP_UE_S1AP_ID_pair_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.h b/lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.h new file mode 100644 index 0000000000..04c9ce7a42 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-S1AP-ID-pair.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_S1AP_ID_pair_H_ +#define _S1AP_UE_S1AP_ID_pair_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MME-UE-S1AP-ID.h" +#include "S1AP_ENB-UE-S1AP-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_UE-S1AP-ID-pair */ +typedef struct S1AP_UE_S1AP_ID_pair { + S1AP_MME_UE_S1AP_ID_t mME_UE_S1AP_ID; + S1AP_ENB_UE_S1AP_ID_t eNB_UE_S1AP_ID; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_S1AP_ID_pair_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_S1AP_ID_pair; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_S1AP_ID_pair_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UE_S1AP_ID_pair_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_S1AP_ID_pair_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.c b/lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.c new file mode 100644 index 0000000000..65e224c979 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-S1AP-IDs.h" + +#include "S1AP_UE-S1AP-ID-pair.h" +static asn_oer_constraints_t asn_OER_type_S1AP_UE_S1AP_IDs_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_UE_S1AP_IDs_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_UE_S1AP_IDs_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_UE_S1AP_IDs, choice.uE_S1AP_ID_pair), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_UE_S1AP_ID_pair, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uE-S1AP-ID-pair" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UE_S1AP_IDs, choice.mME_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-UE-S1AP-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UE_S1AP_IDs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uE-S1AP-ID-pair */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* mME-UE-S1AP-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_UE_S1AP_IDs_specs_1 = { + sizeof(struct S1AP_UE_S1AP_IDs), + offsetof(struct S1AP_UE_S1AP_IDs, _asn_ctx), + offsetof(struct S1AP_UE_S1AP_IDs, present), + sizeof(((struct S1AP_UE_S1AP_IDs *)0)->present), + asn_MAP_S1AP_UE_S1AP_IDs_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_S1AP_IDs = { + "UE-S1AP-IDs", + "UE-S1AP-IDs", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_UE_S1AP_IDs_constr_1, &asn_PER_type_S1AP_UE_S1AP_IDs_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_UE_S1AP_IDs_1, + 2, /* Elements count */ + &asn_SPC_S1AP_UE_S1AP_IDs_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.h b/lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.h new file mode 100644 index 0000000000..a04b3c4ff0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-S1AP-IDs.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_S1AP_IDs_H_ +#define _S1AP_UE_S1AP_IDs_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MME-UE-S1AP-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_UE_S1AP_IDs_PR { + UE_S1AP_IDs_PR_NOTHING, /* No components present */ + UE_S1AP_IDs_PR_uE_S1AP_ID_pair, + UE_S1AP_IDs_PR_mME_UE_S1AP_ID + /* Extensions may appear below */ + +} S1AP_UE_S1AP_IDs_PR; + +/* Forward declarations */ +struct S1AP_UE_S1AP_ID_pair; + +/* S1AP_UE-S1AP-IDs */ +typedef struct S1AP_UE_S1AP_IDs { + S1AP_UE_S1AP_IDs_PR present; + union S1AP_UE_S1AP_IDs_u { + struct S1AP_UE_S1AP_ID_pair *uE_S1AP_ID_pair; + S1AP_MME_UE_S1AP_ID_t mME_UE_S1AP_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_S1AP_IDs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_S1AP_IDs; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_S1AP_IDs_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-Usage-Type.c b/lib/s1ap3/asn1c/S1AP_UE-Usage-Type.c new file mode 100644 index 0000000000..34e2c0a526 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-Usage-Type.c @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-Usage-Type.h" + +int +S1AP_UE_Usage_Type_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_UE_Usage_Type_constr_1 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_UE_Usage_Type_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_Usage_Type_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_Usage_Type = { + "UE-Usage-Type", + "UE-Usage-Type", + &asn_OP_NativeInteger, + asn_DEF_S1AP_UE_Usage_Type_tags_1, + sizeof(asn_DEF_S1AP_UE_Usage_Type_tags_1) + /sizeof(asn_DEF_S1AP_UE_Usage_Type_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_Usage_Type_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_Usage_Type_tags_1) + /sizeof(asn_DEF_S1AP_UE_Usage_Type_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_UE_Usage_Type_constr_1, &asn_PER_type_S1AP_UE_Usage_Type_constr_1, S1AP_UE_Usage_Type_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-Usage-Type.h b/lib/s1ap3/asn1c/S1AP_UE-Usage-Type.h new file mode 100644 index 0000000000..02ae1b18d4 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-Usage-Type.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_Usage_Type_H_ +#define _S1AP_UE_Usage_Type_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UE-Usage-Type */ +typedef long S1AP_UE_Usage_Type_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_Usage_Type; +asn_struct_free_f S1AP_UE_Usage_Type_free; +asn_struct_print_f S1AP_UE_Usage_Type_print; +asn_constr_check_f S1AP_UE_Usage_Type_constraint; +ber_type_decoder_f S1AP_UE_Usage_Type_decode_ber; +der_type_encoder_f S1AP_UE_Usage_Type_encode_der; +xer_type_decoder_f S1AP_UE_Usage_Type_decode_xer; +xer_type_encoder_f S1AP_UE_Usage_Type_encode_xer; +oer_type_decoder_f S1AP_UE_Usage_Type_decode_oer; +oer_type_encoder_f S1AP_UE_Usage_Type_encode_oer; +per_type_decoder_f S1AP_UE_Usage_Type_decode_uper; +per_type_encoder_f S1AP_UE_Usage_Type_encode_uper; +per_type_decoder_f S1AP_UE_Usage_Type_decode_aper; +per_type_encoder_f S1AP_UE_Usage_Type_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_Usage_Type_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionItem.c b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionItem.c new file mode 100644 index 0000000000..446c815bac --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionItem.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-associatedLogicalS1-ConnectionItem.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItem_1[] = { + { ATF_POINTER, 3, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItem, mME_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_MME_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-UE-S1AP-ID" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItem, eNB_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ENB_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNB-UE-S1AP-ID" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P111, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItem_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eNB-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItem_specs_1 = { + sizeof(struct S1AP_UE_associatedLogicalS1_ConnectionItem), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionItem, _asn_ctx), + asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_UE_associatedLogicalS1_ConnectionItem_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem = { + "UE-associatedLogicalS1-ConnectionItem", + "UE-associatedLogicalS1-ConnectionItem", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem_tags_1, + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem_tags_1) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem_tags_1) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionItem_1, + 3, /* Elements count */ + &asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionItem_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionItem.h b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionItem.h new file mode 100644 index 0000000000..73ca324c43 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionItem.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_associatedLogicalS1_ConnectionItem_H_ +#define _S1AP_UE_associatedLogicalS1_ConnectionItem_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_MME-UE-S1AP-ID.h" +#include "S1AP_ENB-UE-S1AP-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_UE-associatedLogicalS1-ConnectionItem */ +typedef struct S1AP_UE_associatedLogicalS1_ConnectionItem { + S1AP_MME_UE_S1AP_ID_t *mME_UE_S1AP_ID; /* OPTIONAL */ + S1AP_ENB_UE_S1AP_ID_t *eNB_UE_S1AP_ID; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_associatedLogicalS1_ConnectionItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_associatedLogicalS1_ConnectionItem_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListRes.c b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListRes.c new file mode 100644 index 0000000000..267bfea69e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListRes.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-associatedLogicalS1-ConnectionListRes.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_UE_associatedLogicalS1_ConnectionListRes_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +asn_per_constraints_t asn_PER_type_S1AP_UE_associatedLogicalS1_ConnectionListRes_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionListRes_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionListRes_specs_1 = { + sizeof(struct S1AP_UE_associatedLogicalS1_ConnectionListRes), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionListRes, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes = { + "UE-associatedLogicalS1-ConnectionListRes", + "UE-associatedLogicalS1-ConnectionListRes", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes_tags_1, + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes_tags_1) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes_tags_1) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_UE_associatedLogicalS1_ConnectionListRes_constr_1, &asn_PER_type_S1AP_UE_associatedLogicalS1_ConnectionListRes_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionListRes_1, + 1, /* Single element */ + &asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionListRes_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListRes.h b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListRes.h new file mode 100644 index 0000000000..aaae1c890e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListRes.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_associatedLogicalS1_ConnectionListRes_H_ +#define _S1AP_UE_associatedLogicalS1_ConnectionListRes_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_UE-associatedLogicalS1-ConnectionListRes */ +typedef struct S1AP_UE_associatedLogicalS1_ConnectionListRes { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_associatedLogicalS1_ConnectionListRes_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListRes; +extern asn_SET_OF_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionListRes_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionListRes_1[1]; +extern asn_per_constraints_t asn_PER_type_S1AP_UE_associatedLogicalS1_ConnectionListRes_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_associatedLogicalS1_ConnectionListRes_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListResAck.c b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListResAck.c new file mode 100644 index 0000000000..44513cc93f --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListResAck.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UE-associatedLogicalS1-ConnectionListResAck.h" + +#include "S1AP_ProtocolIE-SingleContainer.h" +static asn_oer_constraints_t asn_OER_type_S1AP_UE_associatedLogicalS1_ConnectionListResAck_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..256)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_UE_associatedLogicalS1_ConnectionListResAck_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionListResAck_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ProtocolIE_SingleContainer_6554P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionListResAck_specs_1 = { + sizeof(struct S1AP_UE_associatedLogicalS1_ConnectionListResAck), + offsetof(struct S1AP_UE_associatedLogicalS1_ConnectionListResAck, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck = { + "UE-associatedLogicalS1-ConnectionListResAck", + "UE-associatedLogicalS1-ConnectionListResAck", + &asn_OP_SEQUENCE_OF, + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck_tags_1, + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck_tags_1) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck_tags_1) + /sizeof(asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_UE_associatedLogicalS1_ConnectionListResAck_constr_1, &asn_PER_type_S1AP_UE_associatedLogicalS1_ConnectionListResAck_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_S1AP_UE_associatedLogicalS1_ConnectionListResAck_1, + 1, /* Single element */ + &asn_SPC_S1AP_UE_associatedLogicalS1_ConnectionListResAck_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListResAck.h b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListResAck.h new file mode 100644 index 0000000000..01039e27d0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UE-associatedLogicalS1-ConnectionListResAck.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UE_associatedLogicalS1_ConnectionListResAck_H_ +#define _S1AP_UE_associatedLogicalS1_ConnectionListResAck_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolIE_SingleContainer; + +/* S1AP_UE-associatedLogicalS1-ConnectionListResAck */ +typedef struct S1AP_UE_associatedLogicalS1_ConnectionListResAck { + A_SEQUENCE_OF(struct S1AP_ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UE_associatedLogicalS1_ConnectionListResAck_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UE_associatedLogicalS1_ConnectionListResAck; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UE_associatedLogicalS1_ConnectionListResAck_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEAggregateMaximumBitrate.c b/lib/s1ap3/asn1c/S1AP_UEAggregateMaximumBitrate.c new file mode 100644 index 0000000000..7e5012182e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEAggregateMaximumBitrate.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEAggregateMaximumBitrate.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_UEAggregateMaximumBitrate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEAggregateMaximumBitrate, uEaggregateMaximumBitRateDL), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRateDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEAggregateMaximumBitrate, uEaggregateMaximumBitRateUL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRateUL" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_UEAggregateMaximumBitrate, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P109, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_UEAggregateMaximumBitrate_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_UEAggregateMaximumBitrate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEAggregateMaximumBitrate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uEaggregateMaximumBitRateDL */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uEaggregateMaximumBitRateUL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEAggregateMaximumBitrate_specs_1 = { + sizeof(struct S1AP_UEAggregateMaximumBitrate), + offsetof(struct S1AP_UEAggregateMaximumBitrate, _asn_ctx), + asn_MAP_S1AP_UEAggregateMaximumBitrate_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_UEAggregateMaximumBitrate_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEAggregateMaximumBitrate = { + "UEAggregateMaximumBitrate", + "UEAggregateMaximumBitrate", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEAggregateMaximumBitrate_tags_1, + sizeof(asn_DEF_S1AP_UEAggregateMaximumBitrate_tags_1) + /sizeof(asn_DEF_S1AP_UEAggregateMaximumBitrate_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEAggregateMaximumBitrate_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEAggregateMaximumBitrate_tags_1) + /sizeof(asn_DEF_S1AP_UEAggregateMaximumBitrate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEAggregateMaximumBitrate_1, + 3, /* Elements count */ + &asn_SPC_S1AP_UEAggregateMaximumBitrate_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEAggregateMaximumBitrate.h b/lib/s1ap3/asn1c/S1AP_UEAggregateMaximumBitrate.h new file mode 100644 index 0000000000..37c51039f8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEAggregateMaximumBitrate.h @@ -0,0 +1,47 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEAggregateMaximumBitrate_H_ +#define _S1AP_UEAggregateMaximumBitrate_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_BitRate.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_UEAggregateMaximumBitrate */ +typedef struct S1AP_UEAggregateMaximumBitrate { + S1AP_BitRate_t uEaggregateMaximumBitRateDL; + S1AP_BitRate_t uEaggregateMaximumBitRateUL; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEAggregateMaximumBitrate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEAggregateMaximumBitrate; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEAggregateMaximumBitrate_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UECapabilityInfoIndication.c b/lib/s1ap3/asn1c/S1AP_UECapabilityInfoIndication.c new file mode 100644 index 0000000000..c04d7fe8c3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UECapabilityInfoIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UECapabilityInfoIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_UECapabilityInfoIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UECapabilityInfoIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P51, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UECapabilityInfoIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UECapabilityInfoIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UECapabilityInfoIndication_specs_1 = { + sizeof(struct S1AP_UECapabilityInfoIndication), + offsetof(struct S1AP_UECapabilityInfoIndication, _asn_ctx), + asn_MAP_S1AP_UECapabilityInfoIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UECapabilityInfoIndication = { + "UECapabilityInfoIndication", + "UECapabilityInfoIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UECapabilityInfoIndication_tags_1, + sizeof(asn_DEF_S1AP_UECapabilityInfoIndication_tags_1) + /sizeof(asn_DEF_S1AP_UECapabilityInfoIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UECapabilityInfoIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UECapabilityInfoIndication_tags_1) + /sizeof(asn_DEF_S1AP_UECapabilityInfoIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UECapabilityInfoIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UECapabilityInfoIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UECapabilityInfoIndication.h b/lib/s1ap3/asn1c/S1AP_UECapabilityInfoIndication.h new file mode 100644 index 0000000000..54876ebe53 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UECapabilityInfoIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UECapabilityInfoIndication_H_ +#define _S1AP_UECapabilityInfoIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UECapabilityInfoIndication */ +typedef struct S1AP_UECapabilityInfoIndication { + S1AP_ProtocolIE_Container_6551P51_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UECapabilityInfoIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UECapabilityInfoIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UECapabilityInfoIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UECapabilityInfoIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UECapabilityInfoIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationConfirm.c b/lib/s1ap3/asn1c/S1AP_UEContextModificationConfirm.c new file mode 100644 index 0000000000..8386b5adba --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationConfirm.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextModificationConfirm.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P80, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationConfirm_specs_1 = { + sizeof(struct S1AP_UEContextModificationConfirm), + offsetof(struct S1AP_UEContextModificationConfirm, _asn_ctx), + asn_MAP_S1AP_UEContextModificationConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationConfirm = { + "UEContextModificationConfirm", + "UEContextModificationConfirm", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationConfirm_tags_1, + sizeof(asn_DEF_S1AP_UEContextModificationConfirm_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationConfirm_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationConfirm_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationConfirm_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationConfirm_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationConfirm.h b/lib/s1ap3/asn1c/S1AP_UEContextModificationConfirm.h new file mode 100644 index 0000000000..b637f20db0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationConfirm.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextModificationConfirm_H_ +#define _S1AP_UEContextModificationConfirm_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextModificationConfirm */ +typedef struct S1AP_UEContextModificationConfirm { + S1AP_ProtocolIE_Container_6551P80_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationConfirm; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationConfirm_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationConfirm_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextModificationConfirm_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationFailure.c b/lib/s1ap3/asn1c/S1AP_UEContextModificationFailure.c new file mode 100644 index 0000000000..abdb353fc2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextModificationFailure.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P28, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationFailure_specs_1 = { + sizeof(struct S1AP_UEContextModificationFailure), + offsetof(struct S1AP_UEContextModificationFailure, _asn_ctx), + asn_MAP_S1AP_UEContextModificationFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationFailure = { + "UEContextModificationFailure", + "UEContextModificationFailure", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationFailure_tags_1, + sizeof(asn_DEF_S1AP_UEContextModificationFailure_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationFailure_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationFailure_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationFailure_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationFailure.h b/lib/s1ap3/asn1c/S1AP_UEContextModificationFailure.h new file mode 100644 index 0000000000..62fbed0569 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextModificationFailure_H_ +#define _S1AP_UEContextModificationFailure_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextModificationFailure */ +typedef struct S1AP_UEContextModificationFailure { + S1AP_ProtocolIE_Container_6551P28_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextModificationFailure_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationIndication.c b/lib/s1ap3/asn1c/S1AP_UEContextModificationIndication.c new file mode 100644 index 0000000000..66793b663a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextModificationIndication.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P79, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationIndication_specs_1 = { + sizeof(struct S1AP_UEContextModificationIndication), + offsetof(struct S1AP_UEContextModificationIndication, _asn_ctx), + asn_MAP_S1AP_UEContextModificationIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationIndication = { + "UEContextModificationIndication", + "UEContextModificationIndication", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationIndication_tags_1, + sizeof(asn_DEF_S1AP_UEContextModificationIndication_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationIndication_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationIndication_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationIndication_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationIndication_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationIndication.h b/lib/s1ap3/asn1c/S1AP_UEContextModificationIndication.h new file mode 100644 index 0000000000..8a4985dea5 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextModificationIndication_H_ +#define _S1AP_UEContextModificationIndication_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextModificationIndication */ +typedef struct S1AP_UEContextModificationIndication { + S1AP_ProtocolIE_Container_6551P79_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextModificationIndication_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationRequest.c b/lib/s1ap3/asn1c/S1AP_UEContextModificationRequest.c new file mode 100644 index 0000000000..f1968f3ffe --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextModificationRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationRequest_specs_1 = { + sizeof(struct S1AP_UEContextModificationRequest), + offsetof(struct S1AP_UEContextModificationRequest, _asn_ctx), + asn_MAP_S1AP_UEContextModificationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationRequest = { + "UEContextModificationRequest", + "UEContextModificationRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationRequest_tags_1, + sizeof(asn_DEF_S1AP_UEContextModificationRequest_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationRequest_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationRequest.h b/lib/s1ap3/asn1c/S1AP_UEContextModificationRequest.h new file mode 100644 index 0000000000..46eb2087aa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextModificationRequest_H_ +#define _S1AP_UEContextModificationRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextModificationRequest */ +typedef struct S1AP_UEContextModificationRequest { + S1AP_ProtocolIE_Container_6551P26_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextModificationRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationResponse.c b/lib/s1ap3/asn1c/S1AP_UEContextModificationResponse.c new file mode 100644 index 0000000000..2d28056c02 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextModificationResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextModificationResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P27, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextModificationResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextModificationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationResponse_specs_1 = { + sizeof(struct S1AP_UEContextModificationResponse), + offsetof(struct S1AP_UEContextModificationResponse, _asn_ctx), + asn_MAP_S1AP_UEContextModificationResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationResponse = { + "UEContextModificationResponse", + "UEContextModificationResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextModificationResponse_tags_1, + sizeof(asn_DEF_S1AP_UEContextModificationResponse_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextModificationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextModificationResponse_tags_1) + /sizeof(asn_DEF_S1AP_UEContextModificationResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextModificationResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextModificationResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextModificationResponse.h b/lib/s1ap3/asn1c/S1AP_UEContextModificationResponse.h new file mode 100644 index 0000000000..6d176c72bb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextModificationResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextModificationResponse_H_ +#define _S1AP_UEContextModificationResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextModificationResponse */ +typedef struct S1AP_UEContextModificationResponse { + S1AP_ProtocolIE_Container_6551P27_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextModificationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextModificationResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextModificationResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextModificationResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextModificationResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextReleaseCommand.c b/lib/s1ap3/asn1c/S1AP_UEContextReleaseCommand.c new file mode 100644 index 0000000000..57b4a5a093 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextReleaseCommand.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextReleaseCommand.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseCommand_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseCommand, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P24, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextReleaseCommand_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextReleaseCommand_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseCommand_specs_1 = { + sizeof(struct S1AP_UEContextReleaseCommand), + offsetof(struct S1AP_UEContextReleaseCommand, _asn_ctx), + asn_MAP_S1AP_UEContextReleaseCommand_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseCommand = { + "UEContextReleaseCommand", + "UEContextReleaseCommand", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextReleaseCommand_tags_1, + sizeof(asn_DEF_S1AP_UEContextReleaseCommand_tags_1) + /sizeof(asn_DEF_S1AP_UEContextReleaseCommand_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextReleaseCommand_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextReleaseCommand_tags_1) + /sizeof(asn_DEF_S1AP_UEContextReleaseCommand_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextReleaseCommand_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextReleaseCommand_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextReleaseCommand.h b/lib/s1ap3/asn1c/S1AP_UEContextReleaseCommand.h new file mode 100644 index 0000000000..bd53a5943b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextReleaseCommand.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextReleaseCommand_H_ +#define _S1AP_UEContextReleaseCommand_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextReleaseCommand */ +typedef struct S1AP_UEContextReleaseCommand { + S1AP_ProtocolIE_Container_6551P24_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextReleaseCommand_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseCommand; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseCommand_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseCommand_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextReleaseCommand_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextReleaseComplete.c b/lib/s1ap3/asn1c/S1AP_UEContextReleaseComplete.c new file mode 100644 index 0000000000..01eb58ac20 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextReleaseComplete.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextReleaseComplete.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseComplete_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseComplete, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextReleaseComplete_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextReleaseComplete_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseComplete_specs_1 = { + sizeof(struct S1AP_UEContextReleaseComplete), + offsetof(struct S1AP_UEContextReleaseComplete, _asn_ctx), + asn_MAP_S1AP_UEContextReleaseComplete_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseComplete = { + "UEContextReleaseComplete", + "UEContextReleaseComplete", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextReleaseComplete_tags_1, + sizeof(asn_DEF_S1AP_UEContextReleaseComplete_tags_1) + /sizeof(asn_DEF_S1AP_UEContextReleaseComplete_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextReleaseComplete_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextReleaseComplete_tags_1) + /sizeof(asn_DEF_S1AP_UEContextReleaseComplete_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextReleaseComplete_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextReleaseComplete_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextReleaseComplete.h b/lib/s1ap3/asn1c/S1AP_UEContextReleaseComplete.h new file mode 100644 index 0000000000..e4f8ca0c29 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextReleaseComplete.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextReleaseComplete_H_ +#define _S1AP_UEContextReleaseComplete_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextReleaseComplete */ +typedef struct S1AP_UEContextReleaseComplete { + S1AP_ProtocolIE_Container_6551P25_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextReleaseComplete_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseComplete; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseComplete_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseComplete_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextReleaseComplete_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextReleaseRequest.c b/lib/s1ap3/asn1c/S1AP_UEContextReleaseRequest.c new file mode 100644 index 0000000000..93cf27d7c8 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextReleaseRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextReleaseRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextReleaseRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextReleaseRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextReleaseRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseRequest_specs_1 = { + sizeof(struct S1AP_UEContextReleaseRequest), + offsetof(struct S1AP_UEContextReleaseRequest, _asn_ctx), + asn_MAP_S1AP_UEContextReleaseRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseRequest = { + "UEContextReleaseRequest", + "UEContextReleaseRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextReleaseRequest_tags_1, + sizeof(asn_DEF_S1AP_UEContextReleaseRequest_tags_1) + /sizeof(asn_DEF_S1AP_UEContextReleaseRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextReleaseRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextReleaseRequest_tags_1) + /sizeof(asn_DEF_S1AP_UEContextReleaseRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextReleaseRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextReleaseRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextReleaseRequest.h b/lib/s1ap3/asn1c/S1AP_UEContextReleaseRequest.h new file mode 100644 index 0000000000..ff7a2ae62c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextReleaseRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextReleaseRequest_H_ +#define _S1AP_UEContextReleaseRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextReleaseRequest */ +typedef struct S1AP_UEContextReleaseRequest { + S1AP_ProtocolIE_Container_6551P23_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextReleaseRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextReleaseRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextReleaseRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextReleaseRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextReleaseRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.c b/lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.c new file mode 100644 index 0000000000..3b470ab92b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextResumeFailure.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P85, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextResumeFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextResumeFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeFailure_specs_1 = { + sizeof(struct S1AP_UEContextResumeFailure), + offsetof(struct S1AP_UEContextResumeFailure, _asn_ctx), + asn_MAP_S1AP_UEContextResumeFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeFailure = { + "UEContextResumeFailure", + "UEContextResumeFailure", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextResumeFailure_tags_1, + sizeof(asn_DEF_S1AP_UEContextResumeFailure_tags_1) + /sizeof(asn_DEF_S1AP_UEContextResumeFailure_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextResumeFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextResumeFailure_tags_1) + /sizeof(asn_DEF_S1AP_UEContextResumeFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextResumeFailure_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextResumeFailure_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.h b/lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.h new file mode 100644 index 0000000000..569deb8238 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextResumeFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextResumeFailure_H_ +#define _S1AP_UEContextResumeFailure_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextResumeFailure */ +typedef struct S1AP_UEContextResumeFailure { + S1AP_ProtocolIE_Container_6551P85_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextResumeFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextResumeFailure_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.c b/lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.c new file mode 100644 index 0000000000..e49ff28c18 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextResumeRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P83, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextResumeRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextResumeRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeRequest_specs_1 = { + sizeof(struct S1AP_UEContextResumeRequest), + offsetof(struct S1AP_UEContextResumeRequest, _asn_ctx), + asn_MAP_S1AP_UEContextResumeRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeRequest = { + "UEContextResumeRequest", + "UEContextResumeRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextResumeRequest_tags_1, + sizeof(asn_DEF_S1AP_UEContextResumeRequest_tags_1) + /sizeof(asn_DEF_S1AP_UEContextResumeRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextResumeRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextResumeRequest_tags_1) + /sizeof(asn_DEF_S1AP_UEContextResumeRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextResumeRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextResumeRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.h b/lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.h new file mode 100644 index 0000000000..295747da06 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextResumeRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextResumeRequest_H_ +#define _S1AP_UEContextResumeRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextResumeRequest */ +typedef struct S1AP_UEContextResumeRequest { + S1AP_ProtocolIE_Container_6551P83_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextResumeRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextResumeRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextResumeResponse.c b/lib/s1ap3/asn1c/S1AP_UEContextResumeResponse.c new file mode 100644 index 0000000000..1744a5dac6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextResumeResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextResumeResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextResumeResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P84, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextResumeResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextResumeResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeResponse_specs_1 = { + sizeof(struct S1AP_UEContextResumeResponse), + offsetof(struct S1AP_UEContextResumeResponse, _asn_ctx), + asn_MAP_S1AP_UEContextResumeResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeResponse = { + "UEContextResumeResponse", + "UEContextResumeResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextResumeResponse_tags_1, + sizeof(asn_DEF_S1AP_UEContextResumeResponse_tags_1) + /sizeof(asn_DEF_S1AP_UEContextResumeResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextResumeResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextResumeResponse_tags_1) + /sizeof(asn_DEF_S1AP_UEContextResumeResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextResumeResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextResumeResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextResumeResponse.h b/lib/s1ap3/asn1c/S1AP_UEContextResumeResponse.h new file mode 100644 index 0000000000..d682011c10 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextResumeResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextResumeResponse_H_ +#define _S1AP_UEContextResumeResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextResumeResponse */ +typedef struct S1AP_UEContextResumeResponse { + S1AP_ProtocolIE_Container_6551P84_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextResumeResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextResumeResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextResumeResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextResumeResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextResumeResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextSuspendRequest.c b/lib/s1ap3/asn1c/S1AP_UEContextSuspendRequest.c new file mode 100644 index 0000000000..f9f892c0a1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextSuspendRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextSuspendRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextSuspendRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P81, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextSuspendRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextSuspendRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextSuspendRequest_specs_1 = { + sizeof(struct S1AP_UEContextSuspendRequest), + offsetof(struct S1AP_UEContextSuspendRequest, _asn_ctx), + asn_MAP_S1AP_UEContextSuspendRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextSuspendRequest = { + "UEContextSuspendRequest", + "UEContextSuspendRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextSuspendRequest_tags_1, + sizeof(asn_DEF_S1AP_UEContextSuspendRequest_tags_1) + /sizeof(asn_DEF_S1AP_UEContextSuspendRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextSuspendRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextSuspendRequest_tags_1) + /sizeof(asn_DEF_S1AP_UEContextSuspendRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextSuspendRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextSuspendRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextSuspendRequest.h b/lib/s1ap3/asn1c/S1AP_UEContextSuspendRequest.h new file mode 100644 index 0000000000..95ba1f281e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextSuspendRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextSuspendRequest_H_ +#define _S1AP_UEContextSuspendRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextSuspendRequest */ +typedef struct S1AP_UEContextSuspendRequest { + S1AP_ProtocolIE_Container_6551P81_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextSuspendRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextSuspendRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextSuspendRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextSuspendRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextSuspendRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEContextSuspendResponse.c b/lib/s1ap3/asn1c/S1AP_UEContextSuspendResponse.c new file mode 100644 index 0000000000..4b21a65490 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextSuspendResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEContextSuspendResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEContextSuspendResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEContextSuspendResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P82, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEContextSuspendResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEContextSuspendResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextSuspendResponse_specs_1 = { + sizeof(struct S1AP_UEContextSuspendResponse), + offsetof(struct S1AP_UEContextSuspendResponse, _asn_ctx), + asn_MAP_S1AP_UEContextSuspendResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextSuspendResponse = { + "UEContextSuspendResponse", + "UEContextSuspendResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEContextSuspendResponse_tags_1, + sizeof(asn_DEF_S1AP_UEContextSuspendResponse_tags_1) + /sizeof(asn_DEF_S1AP_UEContextSuspendResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEContextSuspendResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEContextSuspendResponse_tags_1) + /sizeof(asn_DEF_S1AP_UEContextSuspendResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEContextSuspendResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEContextSuspendResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEContextSuspendResponse.h b/lib/s1ap3/asn1c/S1AP_UEContextSuspendResponse.h new file mode 100644 index 0000000000..2a1c7f628b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEContextSuspendResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEContextSuspendResponse_H_ +#define _S1AP_UEContextSuspendResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEContextSuspendResponse */ +typedef struct S1AP_UEContextSuspendResponse { + S1AP_ProtocolIE_Container_6551P82_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEContextSuspendResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEContextSuspendResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEContextSuspendResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEContextSuspendResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEContextSuspendResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.c b/lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.c new file mode 100644 index 0000000000..4231d74baf --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEIdentityIndexValue.h" + +int +S1AP_UEIdentityIndexValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 10)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_UEIdentityIndexValue_constr_1 CC_NOTUSED = { + { 0, 0 }, + 10 /* (SIZE(10..10)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_UEIdentityIndexValue_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 10, 10 } /* (SIZE(10..10)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEIdentityIndexValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEIdentityIndexValue = { + "UEIdentityIndexValue", + "UEIdentityIndexValue", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_UEIdentityIndexValue_tags_1, + sizeof(asn_DEF_S1AP_UEIdentityIndexValue_tags_1) + /sizeof(asn_DEF_S1AP_UEIdentityIndexValue_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEIdentityIndexValue_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEIdentityIndexValue_tags_1) + /sizeof(asn_DEF_S1AP_UEIdentityIndexValue_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_UEIdentityIndexValue_constr_1, &asn_PER_type_S1AP_UEIdentityIndexValue_constr_1, S1AP_UEIdentityIndexValue_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.h b/lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.h new file mode 100644 index 0000000000..99ee72fda7 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEIdentityIndexValue.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEIdentityIndexValue_H_ +#define _S1AP_UEIdentityIndexValue_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEIdentityIndexValue */ +typedef BIT_STRING_t S1AP_UEIdentityIndexValue_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEIdentityIndexValue; +asn_struct_free_f S1AP_UEIdentityIndexValue_free; +asn_struct_print_f S1AP_UEIdentityIndexValue_print; +asn_constr_check_f S1AP_UEIdentityIndexValue_constraint; +ber_type_decoder_f S1AP_UEIdentityIndexValue_decode_ber; +der_type_encoder_f S1AP_UEIdentityIndexValue_encode_der; +xer_type_decoder_f S1AP_UEIdentityIndexValue_decode_xer; +xer_type_encoder_f S1AP_UEIdentityIndexValue_encode_xer; +oer_type_decoder_f S1AP_UEIdentityIndexValue_decode_oer; +oer_type_encoder_f S1AP_UEIdentityIndexValue_encode_oer; +per_type_decoder_f S1AP_UEIdentityIndexValue_decode_uper; +per_type_encoder_f S1AP_UEIdentityIndexValue_encode_uper; +per_type_decoder_f S1AP_UEIdentityIndexValue_decode_aper; +per_type_encoder_f S1AP_UEIdentityIndexValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEIdentityIndexValue_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEInformationTransfer.c b/lib/s1ap3/asn1c/S1AP_UEInformationTransfer.c new file mode 100644 index 0000000000..5277e70e88 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEInformationTransfer.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEInformationTransfer.h" + +asn_TYPE_member_t asn_MBR_S1AP_UEInformationTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEInformationTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P88, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEInformationTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEInformationTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEInformationTransfer_specs_1 = { + sizeof(struct S1AP_UEInformationTransfer), + offsetof(struct S1AP_UEInformationTransfer, _asn_ctx), + asn_MAP_S1AP_UEInformationTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEInformationTransfer = { + "UEInformationTransfer", + "UEInformationTransfer", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UEInformationTransfer_tags_1, + sizeof(asn_DEF_S1AP_UEInformationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_UEInformationTransfer_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEInformationTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEInformationTransfer_tags_1) + /sizeof(asn_DEF_S1AP_UEInformationTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UEInformationTransfer_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UEInformationTransfer_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEInformationTransfer.h b/lib/s1ap3/asn1c/S1AP_UEInformationTransfer.h new file mode 100644 index 0000000000..259a1c01c1 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEInformationTransfer.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEInformationTransfer_H_ +#define _S1AP_UEInformationTransfer_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UEInformationTransfer */ +typedef struct S1AP_UEInformationTransfer { + S1AP_ProtocolIE_Container_6551P88_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEInformationTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEInformationTransfer; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UEInformationTransfer_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UEInformationTransfer_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEInformationTransfer_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEPagingID.c b/lib/s1ap3/asn1c/S1AP_UEPagingID.c new file mode 100644 index 0000000000..752efbbb8b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEPagingID.c @@ -0,0 +1,66 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEPagingID.h" + +#include "S1AP_S-TMSI.h" +static asn_oer_constraints_t asn_OER_type_S1AP_UEPagingID_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_UEPagingID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_UEPagingID_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_UEPagingID, choice.s_TMSI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_S_TMSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s-TMSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UEPagingID, choice.iMSI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_IMSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iMSI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UEPagingID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* s-TMSI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iMSI */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_UEPagingID_specs_1 = { + sizeof(struct S1AP_UEPagingID), + offsetof(struct S1AP_UEPagingID, _asn_ctx), + offsetof(struct S1AP_UEPagingID, present), + sizeof(((struct S1AP_UEPagingID *)0)->present), + asn_MAP_S1AP_UEPagingID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEPagingID = { + "UEPagingID", + "UEPagingID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_UEPagingID_constr_1, &asn_PER_type_S1AP_UEPagingID_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_UEPagingID_1, + 2, /* Elements count */ + &asn_SPC_S1AP_UEPagingID_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEPagingID.h b/lib/s1ap3/asn1c/S1AP_UEPagingID.h new file mode 100644 index 0000000000..1367b07157 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEPagingID.h @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEPagingID_H_ +#define _S1AP_UEPagingID_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_IMSI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_UEPagingID_PR { + UEPagingID_PR_NOTHING, /* No components present */ + UEPagingID_PR_s_TMSI, + UEPagingID_PR_iMSI + /* Extensions may appear below */ + +} S1AP_UEPagingID_PR; + +/* Forward declarations */ +struct S1AP_S_TMSI; + +/* S1AP_UEPagingID */ +typedef struct S1AP_UEPagingID { + S1AP_UEPagingID_PR present; + union S1AP_UEPagingID_u { + struct S1AP_S_TMSI *s_TMSI; + S1AP_IMSI_t iMSI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UEPagingID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEPagingID; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEPagingID_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UERadioCapability.c b/lib/s1ap3/asn1c/S1AP_UERadioCapability.c new file mode 100644 index 0000000000..f0af843f81 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UERadioCapability.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UERadioCapability.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_UERadioCapability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapability = { + "UERadioCapability", + "UERadioCapability", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_UERadioCapability_tags_1, + sizeof(asn_DEF_S1AP_UERadioCapability_tags_1) + /sizeof(asn_DEF_S1AP_UERadioCapability_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UERadioCapability_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UERadioCapability_tags_1) + /sizeof(asn_DEF_S1AP_UERadioCapability_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UERadioCapability.h b/lib/s1ap3/asn1c/S1AP_UERadioCapability.h new file mode 100644 index 0000000000..6256b76ff9 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UERadioCapability.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UERadioCapability_H_ +#define _S1AP_UERadioCapability_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UERadioCapability */ +typedef OCTET_STRING_t S1AP_UERadioCapability_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapability; +asn_struct_free_f S1AP_UERadioCapability_free; +asn_struct_print_f S1AP_UERadioCapability_print; +asn_constr_check_f S1AP_UERadioCapability_constraint; +ber_type_decoder_f S1AP_UERadioCapability_decode_ber; +der_type_encoder_f S1AP_UERadioCapability_encode_der; +xer_type_decoder_f S1AP_UERadioCapability_decode_xer; +xer_type_encoder_f S1AP_UERadioCapability_encode_xer; +oer_type_decoder_f S1AP_UERadioCapability_decode_oer; +oer_type_encoder_f S1AP_UERadioCapability_encode_oer; +per_type_decoder_f S1AP_UERadioCapability_decode_uper; +per_type_encoder_f S1AP_UERadioCapability_encode_uper; +per_type_decoder_f S1AP_UERadioCapability_decode_aper; +per_type_encoder_f S1AP_UERadioCapability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UERadioCapability_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UERadioCapabilityForPaging.c b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityForPaging.c new file mode 100644 index 0000000000..46fba3cebc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityForPaging.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UERadioCapabilityForPaging.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_S1AP_UERadioCapabilityForPaging_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityForPaging = { + "UERadioCapabilityForPaging", + "UERadioCapabilityForPaging", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_UERadioCapabilityForPaging_tags_1, + sizeof(asn_DEF_S1AP_UERadioCapabilityForPaging_tags_1) + /sizeof(asn_DEF_S1AP_UERadioCapabilityForPaging_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UERadioCapabilityForPaging_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UERadioCapabilityForPaging_tags_1) + /sizeof(asn_DEF_S1AP_UERadioCapabilityForPaging_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UERadioCapabilityForPaging.h b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityForPaging.h new file mode 100644 index 0000000000..0aa8fc44c3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityForPaging.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UERadioCapabilityForPaging_H_ +#define _S1AP_UERadioCapabilityForPaging_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UERadioCapabilityForPaging */ +typedef OCTET_STRING_t S1AP_UERadioCapabilityForPaging_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityForPaging; +asn_struct_free_f S1AP_UERadioCapabilityForPaging_free; +asn_struct_print_f S1AP_UERadioCapabilityForPaging_print; +asn_constr_check_f S1AP_UERadioCapabilityForPaging_constraint; +ber_type_decoder_f S1AP_UERadioCapabilityForPaging_decode_ber; +der_type_encoder_f S1AP_UERadioCapabilityForPaging_encode_der; +xer_type_decoder_f S1AP_UERadioCapabilityForPaging_decode_xer; +xer_type_encoder_f S1AP_UERadioCapabilityForPaging_encode_xer; +oer_type_decoder_f S1AP_UERadioCapabilityForPaging_decode_oer; +oer_type_encoder_f S1AP_UERadioCapabilityForPaging_encode_oer; +per_type_decoder_f S1AP_UERadioCapabilityForPaging_decode_uper; +per_type_encoder_f S1AP_UERadioCapabilityForPaging_encode_uper; +per_type_decoder_f S1AP_UERadioCapabilityForPaging_decode_aper; +per_type_encoder_f S1AP_UERadioCapabilityForPaging_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UERadioCapabilityForPaging_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchRequest.c b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchRequest.c new file mode 100644 index 0000000000..a76c00746e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UERadioCapabilityMatchRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_UERadioCapabilityMatchRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P29, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UERadioCapabilityMatchRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UERadioCapabilityMatchRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UERadioCapabilityMatchRequest_specs_1 = { + sizeof(struct S1AP_UERadioCapabilityMatchRequest), + offsetof(struct S1AP_UERadioCapabilityMatchRequest, _asn_ctx), + asn_MAP_S1AP_UERadioCapabilityMatchRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityMatchRequest = { + "UERadioCapabilityMatchRequest", + "UERadioCapabilityMatchRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UERadioCapabilityMatchRequest_tags_1, + sizeof(asn_DEF_S1AP_UERadioCapabilityMatchRequest_tags_1) + /sizeof(asn_DEF_S1AP_UERadioCapabilityMatchRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UERadioCapabilityMatchRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UERadioCapabilityMatchRequest_tags_1) + /sizeof(asn_DEF_S1AP_UERadioCapabilityMatchRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UERadioCapabilityMatchRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UERadioCapabilityMatchRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchRequest.h b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchRequest.h new file mode 100644 index 0000000000..f5f1f2b42d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UERadioCapabilityMatchRequest_H_ +#define _S1AP_UERadioCapabilityMatchRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UERadioCapabilityMatchRequest */ +typedef struct S1AP_UERadioCapabilityMatchRequest { + S1AP_ProtocolIE_Container_6551P29_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UERadioCapabilityMatchRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityMatchRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UERadioCapabilityMatchRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UERadioCapabilityMatchRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UERadioCapabilityMatchRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchResponse.c b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchResponse.c new file mode 100644 index 0000000000..9599ba5781 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UERadioCapabilityMatchResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_UERadioCapabilityMatchResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UERadioCapabilityMatchResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P30, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UERadioCapabilityMatchResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UERadioCapabilityMatchResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UERadioCapabilityMatchResponse_specs_1 = { + sizeof(struct S1AP_UERadioCapabilityMatchResponse), + offsetof(struct S1AP_UERadioCapabilityMatchResponse, _asn_ctx), + asn_MAP_S1AP_UERadioCapabilityMatchResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityMatchResponse = { + "UERadioCapabilityMatchResponse", + "UERadioCapabilityMatchResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UERadioCapabilityMatchResponse_tags_1, + sizeof(asn_DEF_S1AP_UERadioCapabilityMatchResponse_tags_1) + /sizeof(asn_DEF_S1AP_UERadioCapabilityMatchResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UERadioCapabilityMatchResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UERadioCapabilityMatchResponse_tags_1) + /sizeof(asn_DEF_S1AP_UERadioCapabilityMatchResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UERadioCapabilityMatchResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UERadioCapabilityMatchResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchResponse.h b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchResponse.h new file mode 100644 index 0000000000..e83484fdce --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UERadioCapabilityMatchResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UERadioCapabilityMatchResponse_H_ +#define _S1AP_UERadioCapabilityMatchResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UERadioCapabilityMatchResponse */ +typedef struct S1AP_UERadioCapabilityMatchResponse { + S1AP_ProtocolIE_Container_6551P30_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UERadioCapabilityMatchResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UERadioCapabilityMatchResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UERadioCapabilityMatchResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UERadioCapabilityMatchResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UERadioCapabilityMatchResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.c b/lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.c new file mode 100644 index 0000000000..f313f328c0 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UESecurityCapabilities.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_UESecurityCapabilities_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UESecurityCapabilities, encryptionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EncryptionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "encryptionAlgorithms" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UESecurityCapabilities, integrityProtectionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_IntegrityProtectionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "integrityProtectionAlgorithms" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_UESecurityCapabilities, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P112, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_UESecurityCapabilities_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_UESecurityCapabilities_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UESecurityCapabilities_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* encryptionAlgorithms */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* integrityProtectionAlgorithms */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_UESecurityCapabilities_specs_1 = { + sizeof(struct S1AP_UESecurityCapabilities), + offsetof(struct S1AP_UESecurityCapabilities, _asn_ctx), + asn_MAP_S1AP_UESecurityCapabilities_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_UESecurityCapabilities_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UESecurityCapabilities = { + "UESecurityCapabilities", + "UESecurityCapabilities", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UESecurityCapabilities_tags_1, + sizeof(asn_DEF_S1AP_UESecurityCapabilities_tags_1) + /sizeof(asn_DEF_S1AP_UESecurityCapabilities_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UESecurityCapabilities_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UESecurityCapabilities_tags_1) + /sizeof(asn_DEF_S1AP_UESecurityCapabilities_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UESecurityCapabilities_1, + 3, /* Elements count */ + &asn_SPC_S1AP_UESecurityCapabilities_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.h b/lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.h new file mode 100644 index 0000000000..093d63098b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UESecurityCapabilities.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UESecurityCapabilities_H_ +#define _S1AP_UESecurityCapabilities_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EncryptionAlgorithms.h" +#include "S1AP_IntegrityProtectionAlgorithms.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_UESecurityCapabilities */ +typedef struct S1AP_UESecurityCapabilities { + S1AP_EncryptionAlgorithms_t encryptionAlgorithms; + S1AP_IntegrityProtectionAlgorithms_t integrityProtectionAlgorithms; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UESecurityCapabilities_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UESecurityCapabilities; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UESecurityCapabilities_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UESidelinkAggregateMaximumBitrate.c b/lib/s1ap3/asn1c/S1AP_UESidelinkAggregateMaximumBitrate.c new file mode 100644 index 0000000000..2f9cdbef8c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UESidelinkAggregateMaximumBitrate.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UESidelinkAggregateMaximumBitrate.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_UESidelinkAggregateMaximumBitrate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UESidelinkAggregateMaximumBitrate, uESidelinkAggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uESidelinkAggregateMaximumBitRate" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_UESidelinkAggregateMaximumBitrate, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P113, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_UESidelinkAggregateMaximumBitrate_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UESidelinkAggregateMaximumBitrate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uESidelinkAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_UESidelinkAggregateMaximumBitrate_specs_1 = { + sizeof(struct S1AP_UESidelinkAggregateMaximumBitrate), + offsetof(struct S1AP_UESidelinkAggregateMaximumBitrate, _asn_ctx), + asn_MAP_S1AP_UESidelinkAggregateMaximumBitrate_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_UESidelinkAggregateMaximumBitrate_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate = { + "UESidelinkAggregateMaximumBitrate", + "UESidelinkAggregateMaximumBitrate", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate_tags_1, + sizeof(asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate_tags_1) + /sizeof(asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate_tags_1) + /sizeof(asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UESidelinkAggregateMaximumBitrate_1, + 2, /* Elements count */ + &asn_SPC_S1AP_UESidelinkAggregateMaximumBitrate_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UESidelinkAggregateMaximumBitrate.h b/lib/s1ap3/asn1c/S1AP_UESidelinkAggregateMaximumBitrate.h new file mode 100644 index 0000000000..75b8f97cec --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UESidelinkAggregateMaximumBitrate.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UESidelinkAggregateMaximumBitrate_H_ +#define _S1AP_UESidelinkAggregateMaximumBitrate_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_BitRate.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_UESidelinkAggregateMaximumBitrate */ +typedef struct S1AP_UESidelinkAggregateMaximumBitrate { + S1AP_BitRate_t uESidelinkAggregateMaximumBitRate; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UESidelinkAggregateMaximumBitrate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UESidelinkAggregateMaximumBitrate; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UESidelinkAggregateMaximumBitrate_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UEUserPlaneCIoTSupportIndicator.c b/lib/s1ap3/asn1c/S1AP_UEUserPlaneCIoTSupportIndicator.c new file mode 100644 index 0000000000..98842c3f16 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEUserPlaneCIoTSupportIndicator.c @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UEUserPlaneCIoTSupportIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_UEUserPlaneCIoTSupportIndicator_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_UEUserPlaneCIoTSupportIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_UEUserPlaneCIoTSupportIndicator_value2enum_1[] = { + { 0, 9, "supported" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_UEUserPlaneCIoTSupportIndicator_enum2value_1[] = { + 0 /* supported(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_UEUserPlaneCIoTSupportIndicator_specs_1 = { + asn_MAP_S1AP_UEUserPlaneCIoTSupportIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_UEUserPlaneCIoTSupportIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator = { + "UEUserPlaneCIoTSupportIndicator", + "UEUserPlaneCIoTSupportIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator_tags_1, + sizeof(asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator_tags_1) + /sizeof(asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator_tags_1) + /sizeof(asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_UEUserPlaneCIoTSupportIndicator_constr_1, &asn_PER_type_S1AP_UEUserPlaneCIoTSupportIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_UEUserPlaneCIoTSupportIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UEUserPlaneCIoTSupportIndicator.h b/lib/s1ap3/asn1c/S1AP_UEUserPlaneCIoTSupportIndicator.h new file mode 100644 index 0000000000..a5c0911900 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UEUserPlaneCIoTSupportIndicator.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UEUserPlaneCIoTSupportIndicator_H_ +#define _S1AP_UEUserPlaneCIoTSupportIndicator_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_UEUserPlaneCIoTSupportIndicator { + S1AP_UEUserPlaneCIoTSupportIndicator_supported = 0 + /* + * Enumeration is extensible + */ +} e_S1AP_UEUserPlaneCIoTSupportIndicator; + +/* S1AP_UEUserPlaneCIoTSupportIndicator */ +typedef long S1AP_UEUserPlaneCIoTSupportIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UEUserPlaneCIoTSupportIndicator; +asn_struct_free_f S1AP_UEUserPlaneCIoTSupportIndicator_free; +asn_struct_print_f S1AP_UEUserPlaneCIoTSupportIndicator_print; +asn_constr_check_f S1AP_UEUserPlaneCIoTSupportIndicator_constraint; +ber_type_decoder_f S1AP_UEUserPlaneCIoTSupportIndicator_decode_ber; +der_type_encoder_f S1AP_UEUserPlaneCIoTSupportIndicator_encode_der; +xer_type_decoder_f S1AP_UEUserPlaneCIoTSupportIndicator_decode_xer; +xer_type_encoder_f S1AP_UEUserPlaneCIoTSupportIndicator_encode_xer; +oer_type_decoder_f S1AP_UEUserPlaneCIoTSupportIndicator_decode_oer; +oer_type_encoder_f S1AP_UEUserPlaneCIoTSupportIndicator_encode_oer; +per_type_decoder_f S1AP_UEUserPlaneCIoTSupportIndicator_decode_uper; +per_type_encoder_f S1AP_UEUserPlaneCIoTSupportIndicator_encode_uper; +per_type_decoder_f S1AP_UEUserPlaneCIoTSupportIndicator_decode_aper; +per_type_encoder_f S1AP_UEUserPlaneCIoTSupportIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UEUserPlaneCIoTSupportIndicator_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UL-CP-SecurityInformation.c b/lib/s1ap3/asn1c/S1AP_UL-CP-SecurityInformation.c new file mode 100644 index 0000000000..809043e564 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UL-CP-SecurityInformation.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UL-CP-SecurityInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_UL_CP_SecurityInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UL_CP_SecurityInformation, ul_NAS_MAC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_UL_NAS_MAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-NAS-MAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UL_CP_SecurityInformation, ul_NAS_Count), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_UL_NAS_Count, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-NAS-Count" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_UL_CP_SecurityInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P114, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_UL_CP_SecurityInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_UL_CP_SecurityInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UL_CP_SecurityInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ul-NAS-MAC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ul-NAS-Count */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_UL_CP_SecurityInformation_specs_1 = { + sizeof(struct S1AP_UL_CP_SecurityInformation), + offsetof(struct S1AP_UL_CP_SecurityInformation, _asn_ctx), + asn_MAP_S1AP_UL_CP_SecurityInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_UL_CP_SecurityInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UL_CP_SecurityInformation = { + "UL-CP-SecurityInformation", + "UL-CP-SecurityInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UL_CP_SecurityInformation_tags_1, + sizeof(asn_DEF_S1AP_UL_CP_SecurityInformation_tags_1) + /sizeof(asn_DEF_S1AP_UL_CP_SecurityInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UL_CP_SecurityInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UL_CP_SecurityInformation_tags_1) + /sizeof(asn_DEF_S1AP_UL_CP_SecurityInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UL_CP_SecurityInformation_1, + 3, /* Elements count */ + &asn_SPC_S1AP_UL_CP_SecurityInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UL-CP-SecurityInformation.h b/lib/s1ap3/asn1c/S1AP_UL-CP-SecurityInformation.h new file mode 100644 index 0000000000..c735d8784a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UL-CP-SecurityInformation.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UL_CP_SecurityInformation_H_ +#define _S1AP_UL_CP_SecurityInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_UL-NAS-MAC.h" +#include "S1AP_UL-NAS-Count.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_UL-CP-SecurityInformation */ +typedef struct S1AP_UL_CP_SecurityInformation { + S1AP_UL_NAS_MAC_t ul_NAS_MAC; + S1AP_UL_NAS_Count_t ul_NAS_Count; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UL_CP_SecurityInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UL_CP_SecurityInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UL_CP_SecurityInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UL-NAS-Count.c b/lib/s1ap3/asn1c/S1AP_UL-NAS-Count.c new file mode 100644 index 0000000000..aa7de30179 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UL-NAS-Count.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UL-NAS-Count.h" + +int +S1AP_UL_NAS_Count_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 5)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_UL_NAS_Count_constr_1 CC_NOTUSED = { + { 0, 0 }, + 5 /* (SIZE(5..5)) */}; +asn_per_constraints_t asn_PER_type_S1AP_UL_NAS_Count_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 5, 5 } /* (SIZE(5..5)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UL_NAS_Count_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UL_NAS_Count = { + "UL-NAS-Count", + "UL-NAS-Count", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_UL_NAS_Count_tags_1, + sizeof(asn_DEF_S1AP_UL_NAS_Count_tags_1) + /sizeof(asn_DEF_S1AP_UL_NAS_Count_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UL_NAS_Count_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UL_NAS_Count_tags_1) + /sizeof(asn_DEF_S1AP_UL_NAS_Count_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_UL_NAS_Count_constr_1, &asn_PER_type_S1AP_UL_NAS_Count_constr_1, S1AP_UL_NAS_Count_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UL-NAS-Count.h b/lib/s1ap3/asn1c/S1AP_UL-NAS-Count.h new file mode 100644 index 0000000000..75e438e099 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UL-NAS-Count.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UL_NAS_Count_H_ +#define _S1AP_UL_NAS_Count_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UL-NAS-Count */ +typedef BIT_STRING_t S1AP_UL_NAS_Count_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_UL_NAS_Count_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UL_NAS_Count; +asn_struct_free_f S1AP_UL_NAS_Count_free; +asn_struct_print_f S1AP_UL_NAS_Count_print; +asn_constr_check_f S1AP_UL_NAS_Count_constraint; +ber_type_decoder_f S1AP_UL_NAS_Count_decode_ber; +der_type_encoder_f S1AP_UL_NAS_Count_encode_der; +xer_type_decoder_f S1AP_UL_NAS_Count_decode_xer; +xer_type_encoder_f S1AP_UL_NAS_Count_encode_xer; +oer_type_decoder_f S1AP_UL_NAS_Count_decode_oer; +oer_type_encoder_f S1AP_UL_NAS_Count_encode_oer; +per_type_decoder_f S1AP_UL_NAS_Count_decode_uper; +per_type_encoder_f S1AP_UL_NAS_Count_encode_uper; +per_type_decoder_f S1AP_UL_NAS_Count_decode_aper; +per_type_encoder_f S1AP_UL_NAS_Count_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UL_NAS_Count_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.c b/lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.c new file mode 100644 index 0000000000..848b7adca2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UL-NAS-MAC.h" + +int +S1AP_UL_NAS_MAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_UL_NAS_MAC_constr_1 CC_NOTUSED = { + { 0, 0 }, + 16 /* (SIZE(16..16)) */}; +asn_per_constraints_t asn_PER_type_S1AP_UL_NAS_MAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UL_NAS_MAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UL_NAS_MAC = { + "UL-NAS-MAC", + "UL-NAS-MAC", + &asn_OP_BIT_STRING, + asn_DEF_S1AP_UL_NAS_MAC_tags_1, + sizeof(asn_DEF_S1AP_UL_NAS_MAC_tags_1) + /sizeof(asn_DEF_S1AP_UL_NAS_MAC_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UL_NAS_MAC_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UL_NAS_MAC_tags_1) + /sizeof(asn_DEF_S1AP_UL_NAS_MAC_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_UL_NAS_MAC_constr_1, &asn_PER_type_S1AP_UL_NAS_MAC_constr_1, S1AP_UL_NAS_MAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.h b/lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.h new file mode 100644 index 0000000000..c1b033f08b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UL-NAS-MAC.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UL_NAS_MAC_H_ +#define _S1AP_UL_NAS_MAC_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UL-NAS-MAC */ +typedef BIT_STRING_t S1AP_UL_NAS_MAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_UL_NAS_MAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UL_NAS_MAC; +asn_struct_free_f S1AP_UL_NAS_MAC_free; +asn_struct_print_f S1AP_UL_NAS_MAC_print; +asn_constr_check_f S1AP_UL_NAS_MAC_constraint; +ber_type_decoder_f S1AP_UL_NAS_MAC_decode_ber; +der_type_encoder_f S1AP_UL_NAS_MAC_encode_der; +xer_type_decoder_f S1AP_UL_NAS_MAC_decode_xer; +xer_type_encoder_f S1AP_UL_NAS_MAC_encode_xer; +oer_type_decoder_f S1AP_UL_NAS_MAC_decode_oer; +oer_type_encoder_f S1AP_UL_NAS_MAC_encode_oer; +per_type_decoder_f S1AP_UL_NAS_MAC_decode_uper; +per_type_encoder_f S1AP_UL_NAS_MAC_encode_uper; +per_type_decoder_f S1AP_UL_NAS_MAC_decode_aper; +per_type_encoder_f S1AP_UL_NAS_MAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UL_NAS_MAC_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.c b/lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.c new file mode 100644 index 0000000000..5e1230c220 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.c @@ -0,0 +1,772 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UnsuccessfulOutcome.h" + +static const long asn_VAL_1_S1AP_id_HandoverPreparation = 0; +static const long asn_VAL_1_S1AP_reject = 0; +static const long asn_VAL_2_S1AP_id_HandoverResourceAllocation = 1; +static const long asn_VAL_2_S1AP_reject = 0; +static const long asn_VAL_3_S1AP_id_PathSwitchRequest = 3; +static const long asn_VAL_3_S1AP_reject = 0; +static const long asn_VAL_4_S1AP_id_E_RABSetup = 5; +static const long asn_VAL_4_S1AP_reject = 0; +static const long asn_VAL_5_S1AP_id_E_RABModify = 6; +static const long asn_VAL_5_S1AP_reject = 0; +static const long asn_VAL_6_S1AP_id_E_RABRelease = 7; +static const long asn_VAL_6_S1AP_reject = 0; +static const long asn_VAL_7_S1AP_id_InitialContextSetup = 9; +static const long asn_VAL_7_S1AP_reject = 0; +static const long asn_VAL_8_S1AP_id_HandoverCancel = 4; +static const long asn_VAL_8_S1AP_reject = 0; +static const long asn_VAL_9_S1AP_id_Kill = 43; +static const long asn_VAL_9_S1AP_reject = 0; +static const long asn_VAL_10_S1AP_id_Reset = 14; +static const long asn_VAL_10_S1AP_reject = 0; +static const long asn_VAL_11_S1AP_id_S1Setup = 17; +static const long asn_VAL_11_S1AP_reject = 0; +static const long asn_VAL_12_S1AP_id_UEContextModification = 21; +static const long asn_VAL_12_S1AP_reject = 0; +static const long asn_VAL_13_S1AP_id_UEContextRelease = 23; +static const long asn_VAL_13_S1AP_reject = 0; +static const long asn_VAL_14_S1AP_id_ENBConfigurationUpdate = 29; +static const long asn_VAL_14_S1AP_reject = 0; +static const long asn_VAL_15_S1AP_id_MMEConfigurationUpdate = 30; +static const long asn_VAL_15_S1AP_reject = 0; +static const long asn_VAL_16_S1AP_id_WriteReplaceWarning = 36; +static const long asn_VAL_16_S1AP_reject = 0; +static const long asn_VAL_17_S1AP_id_UERadioCapabilityMatch = 48; +static const long asn_VAL_17_S1AP_reject = 0; +static const long asn_VAL_18_S1AP_id_E_RABModificationIndication = 50; +static const long asn_VAL_18_S1AP_reject = 0; +static const long asn_VAL_19_S1AP_id_UEContextModificationIndication = 53; +static const long asn_VAL_19_S1AP_reject = 0; +static const long asn_VAL_20_S1AP_id_UEContextSuspend = 55; +static const long asn_VAL_20_S1AP_reject = 0; +static const long asn_VAL_21_S1AP_id_UEContextResume = 56; +static const long asn_VAL_21_S1AP_reject = 0; +static const long asn_VAL_22_S1AP_id_HandoverNotification = 2; +static const long asn_VAL_22_S1AP_ignore = 1; +static const long asn_VAL_23_S1AP_id_E_RABReleaseIndication = 8; +static const long asn_VAL_23_S1AP_ignore = 1; +static const long asn_VAL_24_S1AP_id_Paging = 10; +static const long asn_VAL_24_S1AP_ignore = 1; +static const long asn_VAL_25_S1AP_id_downlinkNASTransport = 11; +static const long asn_VAL_25_S1AP_ignore = 1; +static const long asn_VAL_26_S1AP_id_initialUEMessage = 12; +static const long asn_VAL_26_S1AP_ignore = 1; +static const long asn_VAL_27_S1AP_id_uplinkNASTransport = 13; +static const long asn_VAL_27_S1AP_ignore = 1; +static const long asn_VAL_28_S1AP_id_ErrorIndication = 15; +static const long asn_VAL_28_S1AP_ignore = 1; +static const long asn_VAL_29_S1AP_id_NASNonDeliveryIndication = 16; +static const long asn_VAL_29_S1AP_ignore = 1; +static const long asn_VAL_30_S1AP_id_UEContextReleaseRequest = 18; +static const long asn_VAL_30_S1AP_ignore = 1; +static const long asn_VAL_31_S1AP_id_DownlinkS1cdma2000tunnelling = 19; +static const long asn_VAL_31_S1AP_ignore = 1; +static const long asn_VAL_32_S1AP_id_UplinkS1cdma2000tunnelling = 20; +static const long asn_VAL_32_S1AP_ignore = 1; +static const long asn_VAL_33_S1AP_id_UECapabilityInfoIndication = 22; +static const long asn_VAL_33_S1AP_ignore = 1; +static const long asn_VAL_34_S1AP_id_eNBStatusTransfer = 24; +static const long asn_VAL_34_S1AP_ignore = 1; +static const long asn_VAL_35_S1AP_id_MMEStatusTransfer = 25; +static const long asn_VAL_35_S1AP_ignore = 1; +static const long asn_VAL_36_S1AP_id_DeactivateTrace = 26; +static const long asn_VAL_36_S1AP_ignore = 1; +static const long asn_VAL_37_S1AP_id_TraceStart = 27; +static const long asn_VAL_37_S1AP_ignore = 1; +static const long asn_VAL_38_S1AP_id_TraceFailureIndication = 28; +static const long asn_VAL_38_S1AP_ignore = 1; +static const long asn_VAL_39_S1AP_id_CellTrafficTrace = 42; +static const long asn_VAL_39_S1AP_ignore = 1; +static const long asn_VAL_40_S1AP_id_LocationReportingControl = 31; +static const long asn_VAL_40_S1AP_ignore = 1; +static const long asn_VAL_41_S1AP_id_LocationReportingFailureIndication = 32; +static const long asn_VAL_41_S1AP_ignore = 1; +static const long asn_VAL_42_S1AP_id_LocationReport = 33; +static const long asn_VAL_42_S1AP_ignore = 1; +static const long asn_VAL_43_S1AP_id_OverloadStart = 34; +static const long asn_VAL_43_S1AP_ignore = 1; +static const long asn_VAL_44_S1AP_id_OverloadStop = 35; +static const long asn_VAL_44_S1AP_reject = 0; +static const long asn_VAL_45_S1AP_id_eNBDirectInformationTransfer = 37; +static const long asn_VAL_45_S1AP_ignore = 1; +static const long asn_VAL_46_S1AP_id_MMEDirectInformationTransfer = 38; +static const long asn_VAL_46_S1AP_ignore = 1; +static const long asn_VAL_47_S1AP_id_eNBConfigurationTransfer = 40; +static const long asn_VAL_47_S1AP_ignore = 1; +static const long asn_VAL_48_S1AP_id_MMEConfigurationTransfer = 41; +static const long asn_VAL_48_S1AP_ignore = 1; +static const long asn_VAL_49_S1AP_id_PrivateMessage = 39; +static const long asn_VAL_49_S1AP_ignore = 1; +static const long asn_VAL_50_S1AP_id_downlinkUEAssociatedLPPaTransport = 44; +static const long asn_VAL_50_S1AP_ignore = 1; +static const long asn_VAL_51_S1AP_id_uplinkUEAssociatedLPPaTransport = 45; +static const long asn_VAL_51_S1AP_ignore = 1; +static const long asn_VAL_52_S1AP_id_downlinkNonUEAssociatedLPPaTransport = 46; +static const long asn_VAL_52_S1AP_ignore = 1; +static const long asn_VAL_53_S1AP_id_uplinkNonUEAssociatedLPPaTransport = 47; +static const long asn_VAL_53_S1AP_ignore = 1; +static const long asn_VAL_54_S1AP_id_PWSRestartIndication = 49; +static const long asn_VAL_54_S1AP_ignore = 1; +static const long asn_VAL_55_S1AP_id_RerouteNASRequest = 52; +static const long asn_VAL_55_S1AP_reject = 0; +static const long asn_VAL_56_S1AP_id_PWSFailureIndication = 51; +static const long asn_VAL_56_S1AP_ignore = 1; +static const long asn_VAL_57_S1AP_id_ConnectionEstablishmentIndication = 54; +static const long asn_VAL_57_S1AP_reject = 0; +static const long asn_VAL_58_S1AP_id_NASDeliveryIndication = 57; +static const long asn_VAL_58_S1AP_ignore = 1; +static const long asn_VAL_59_S1AP_id_RetrieveUEInformation = 58; +static const long asn_VAL_59_S1AP_reject = 0; +static const long asn_VAL_60_S1AP_id_UEInformationTransfer = 59; +static const long asn_VAL_60_S1AP_reject = 0; +static const long asn_VAL_61_S1AP_id_eNBCPRelocationIndication = 60; +static const long asn_VAL_61_S1AP_reject = 0; +static const long asn_VAL_62_S1AP_id_MMECPRelocationIndication = 61; +static const long asn_VAL_62_S1AP_reject = 0; +static const asn_ioc_cell_t asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverRequired }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverCommand }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverPreparationFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_1_S1AP_id_HandoverPreparation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_1_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverRequestAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_2_S1AP_id_HandoverResourceAllocation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_2_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PathSwitchRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_PathSwitchRequestAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_PathSwitchRequestFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_3_S1AP_id_PathSwitchRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_3_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABSetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABSetupResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_4_S1AP_id_E_RABSetup }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_4_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABModifyRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABModifyResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_5_S1AP_id_E_RABModify }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_5_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABReleaseCommand }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABReleaseResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_6_S1AP_id_E_RABRelease }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_6_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_InitialContextSetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_InitialContextSetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_InitialContextSetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_7_S1AP_id_InitialContextSetup }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_7_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverCancel }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_HandoverCancelAcknowledge }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_8_S1AP_id_HandoverCancel }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_8_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_KillRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_KillResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_9_S1AP_id_Kill }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_9_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_Reset }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_ResetAcknowledge }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_10_S1AP_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_10_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_S1SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_S1SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_S1SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_11_S1AP_id_S1Setup }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_11_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextModificationRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextModificationResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextModificationFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_12_S1AP_id_UEContextModification }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_12_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextReleaseCommand }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextReleaseComplete }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_13_S1AP_id_UEContextRelease }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_13_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_ENBConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_ENBConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_14_S1AP_id_ENBConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_14_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_MMEConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_MMEConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_15_S1AP_id_MMEConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_15_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_WriteReplaceWarningRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_WriteReplaceWarningResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_16_S1AP_id_WriteReplaceWarning }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_16_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UERadioCapabilityMatchRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UERadioCapabilityMatchResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_17_S1AP_id_UERadioCapabilityMatch }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_17_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABModificationIndication }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_E_RABModificationConfirm }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_18_S1AP_id_E_RABModificationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_18_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextModificationIndication }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextModificationConfirm }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_19_S1AP_id_UEContextModificationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_19_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextSuspendRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextSuspendResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_20_S1AP_id_UEContextSuspend }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_20_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextResumeRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextResumeResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_S1AP_UEContextResumeFailure }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_21_S1AP_id_UEContextResume }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_21_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_HandoverNotify }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_22_S1AP_id_HandoverNotification }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_22_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_E_RABReleaseIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_23_S1AP_id_E_RABReleaseIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_23_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_Paging }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_24_S1AP_id_Paging }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_24_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkNASTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_25_S1AP_id_downlinkNASTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_25_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_InitialUEMessage }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_26_S1AP_id_initialUEMessage }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_26_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkNASTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_27_S1AP_id_uplinkNASTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_27_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_28_S1AP_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_28_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_NASNonDeliveryIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_29_S1AP_id_NASNonDeliveryIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_29_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEContextReleaseRequest }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_30_S1AP_id_UEContextReleaseRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_30_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkS1cdma2000tunnelling }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_31_S1AP_id_DownlinkS1cdma2000tunnelling }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_31_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkS1cdma2000tunnelling }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_32_S1AP_id_UplinkS1cdma2000tunnelling }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_32_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UECapabilityInfoIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_33_S1AP_id_UECapabilityInfoIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_33_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBStatusTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_34_S1AP_id_eNBStatusTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_34_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEStatusTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_35_S1AP_id_MMEStatusTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_35_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DeactivateTrace }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_36_S1AP_id_DeactivateTrace }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_36_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_TraceStart }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_37_S1AP_id_TraceStart }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_37_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_TraceFailureIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_38_S1AP_id_TraceFailureIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_38_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_CellTrafficTrace }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_39_S1AP_id_CellTrafficTrace }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_39_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_LocationReportingControl }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_40_S1AP_id_LocationReportingControl }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_40_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_LocationReportingFailureIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_41_S1AP_id_LocationReportingFailureIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_41_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_LocationReport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_42_S1AP_id_LocationReport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_42_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_OverloadStart }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_43_S1AP_id_OverloadStart }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_43_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_OverloadStop }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_44_S1AP_id_OverloadStop }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_44_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBDirectInformationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_45_S1AP_id_eNBDirectInformationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_45_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEDirectInformationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_46_S1AP_id_MMEDirectInformationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_46_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBConfigurationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_47_S1AP_id_eNBConfigurationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_47_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMEConfigurationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_48_S1AP_id_MMEConfigurationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_48_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PrivateMessage }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_49_S1AP_id_PrivateMessage }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_49_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_50_S1AP_id_downlinkUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_50_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_51_S1AP_id_uplinkUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_51_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_DownlinkNonUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_52_S1AP_id_downlinkNonUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_52_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_53_S1AP_id_uplinkNonUEAssociatedLPPaTransport }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_53_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PWSRestartIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_54_S1AP_id_PWSRestartIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_54_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_RerouteNASRequest }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_55_S1AP_id_RerouteNASRequest }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_55_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_PWSFailureIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_56_S1AP_id_PWSFailureIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_56_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ConnectionEstablishmentIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_57_S1AP_id_ConnectionEstablishmentIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_57_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_NASDeliveryIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_58_S1AP_id_NASDeliveryIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_58_S1AP_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_RetrieveUEInformation }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_59_S1AP_id_RetrieveUEInformation }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_59_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_UEInformationTransfer }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_60_S1AP_id_UEInformationTransfer }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_60_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_ENBCPRelocationIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_61_S1AP_id_eNBCPRelocationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_61_S1AP_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_S1AP_MMECPRelocationIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_S1AP_ProcedureCode, &asn_VAL_62_S1AP_id_MMECPRelocationIndication }, + { "&criticality", aioc__value, &asn_DEF_S1AP_Criticality, &asn_VAL_62_S1AP_reject } +}; +static const asn_ioc_set_t asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1[] = { + { 62, 5, asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_S1AP_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_S1AP_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_S1AP_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_S1AP_S1AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 2; /* &UnsuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct S1AP_UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_S1AP_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_oer_constraints_t asn_OER_memb_S1AP_procedureCode_constr_2 CC_NOTUSED = { + { 1, 1 } /* (0..255) */, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_oer_constraints_t asn_OER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_memb_S1AP_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome__value, choice.HandoverPreparationFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverPreparationFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverPreparationFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome__value, choice.HandoverFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_HandoverFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome__value, choice.PathSwitchRequestFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_PathSwitchRequestFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PathSwitchRequestFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome__value, choice.InitialContextSetupFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_InitialContextSetupFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitialContextSetupFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome__value, choice.S1SetupFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_S1SetupFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "S1SetupFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome__value, choice.UEContextModificationFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextModificationFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextModificationFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome__value, choice.ENBConfigurationUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_ENBConfigurationUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome__value, choice.MMEConfigurationUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_MMEConfigurationUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MMEConfigurationUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome__value, choice.UEContextResumeFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1AP_UEContextResumeFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEContextResumeFailure" + }, +}; +static const unsigned asn_MAP_S1AP_value_to_canonical_4[] = { 8, 1, 2, 3, 4, 5, 6, 7, 0 }; +static const unsigned asn_MAP_S1AP_value_from_canonical_4[] = { 8, 1, 2, 3, 4, 5, 6, 7, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 8 }, /* HandoverPreparationFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 7 }, /* HandoverFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 6 }, /* PathSwitchRequestFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 5 }, /* InitialContextSetupFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 4 }, /* S1SetupFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 3 }, /* UEContextModificationFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 2 }, /* ENBConfigurationUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 1 }, /* MMEConfigurationUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 0 } /* UEContextResumeFailure */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_value_specs_4 = { + sizeof(struct S1AP_UnsuccessfulOutcome__value), + offsetof(struct S1AP_UnsuccessfulOutcome__value, _asn_ctx), + offsetof(struct S1AP_UnsuccessfulOutcome__value, present), + sizeof(((struct S1AP_UnsuccessfulOutcome__value *)0)->present), + asn_MAP_S1AP_value_tag2el_4, + 9, /* Count of tags in the map */ + asn_MAP_S1AP_value_to_canonical_4, + asn_MAP_S1AP_value_from_canonical_4, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_S1AP_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_S1AP_value_4, + 9, /* Elements count */ + &asn_SPC_S1AP_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1AP_UnsuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProcedureCode, + 0, + { &asn_OER_memb_S1AP_procedureCode_constr_2, &asn_PER_memb_S1AP_procedureCode_constr_2, memb_S1AP_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_Criticality, + select_UnsuccessfulOutcome_S1AP_criticality_type, + { &asn_OER_memb_S1AP_criticality_constr_3, &asn_PER_memb_S1AP_criticality_constr_3, memb_S1AP_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1AP_UnsuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_S1AP_value_4, + select_UnsuccessfulOutcome_S1AP_value_type, + { &asn_OER_memb_S1AP_value_constr_4, &asn_PER_memb_S1AP_value_constr_4, memb_S1AP_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UnsuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UnsuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UnsuccessfulOutcome_specs_1 = { + sizeof(struct S1AP_UnsuccessfulOutcome), + offsetof(struct S1AP_UnsuccessfulOutcome, _asn_ctx), + asn_MAP_S1AP_UnsuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UnsuccessfulOutcome = { + "UnsuccessfulOutcome", + "UnsuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UnsuccessfulOutcome_tags_1, + sizeof(asn_DEF_S1AP_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_S1AP_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UnsuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_S1AP_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UnsuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_S1AP_UnsuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.h b/lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.h new file mode 100644 index 0000000000..56b0f2edca --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UnsuccessfulOutcome.h @@ -0,0 +1,169 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Descriptions" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UnsuccessfulOutcome_H_ +#define _S1AP_UnsuccessfulOutcome_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProcedureCode.h" +#include "S1AP_Criticality.h" +#include +#include +#include "S1AP_HandoverRequired.h" +#include "S1AP_HandoverCommand.h" +#include "S1AP_HandoverPreparationFailure.h" +#include "S1AP_HandoverRequest.h" +#include "S1AP_HandoverRequestAcknowledge.h" +#include "S1AP_HandoverFailure.h" +#include "S1AP_PathSwitchRequest.h" +#include "S1AP_PathSwitchRequestAcknowledge.h" +#include "S1AP_PathSwitchRequestFailure.h" +#include "S1AP_E-RABSetupRequest.h" +#include "S1AP_E-RABSetupResponse.h" +#include "S1AP_E-RABModifyRequest.h" +#include "S1AP_E-RABModifyResponse.h" +#include "S1AP_E-RABReleaseCommand.h" +#include "S1AP_E-RABReleaseResponse.h" +#include "S1AP_InitialContextSetupRequest.h" +#include "S1AP_InitialContextSetupResponse.h" +#include "S1AP_InitialContextSetupFailure.h" +#include "S1AP_HandoverCancel.h" +#include "S1AP_HandoverCancelAcknowledge.h" +#include "S1AP_KillRequest.h" +#include "S1AP_KillResponse.h" +#include "S1AP_Reset.h" +#include "S1AP_ResetAcknowledge.h" +#include "S1AP_S1SetupRequest.h" +#include "S1AP_S1SetupResponse.h" +#include "S1AP_S1SetupFailure.h" +#include "S1AP_UEContextModificationRequest.h" +#include "S1AP_UEContextModificationResponse.h" +#include "S1AP_UEContextModificationFailure.h" +#include "S1AP_UEContextReleaseCommand.h" +#include "S1AP_UEContextReleaseComplete.h" +#include "S1AP_ENBConfigurationUpdate.h" +#include "S1AP_ENBConfigurationUpdateAcknowledge.h" +#include "S1AP_ENBConfigurationUpdateFailure.h" +#include "S1AP_MMEConfigurationUpdate.h" +#include "S1AP_MMEConfigurationUpdateAcknowledge.h" +#include "S1AP_MMEConfigurationUpdateFailure.h" +#include "S1AP_WriteReplaceWarningRequest.h" +#include "S1AP_WriteReplaceWarningResponse.h" +#include "S1AP_UERadioCapabilityMatchRequest.h" +#include "S1AP_UERadioCapabilityMatchResponse.h" +#include "S1AP_E-RABModificationIndication.h" +#include "S1AP_E-RABModificationConfirm.h" +#include "S1AP_UEContextModificationIndication.h" +#include "S1AP_UEContextModificationConfirm.h" +#include "S1AP_UEContextSuspendRequest.h" +#include "S1AP_UEContextSuspendResponse.h" +#include "S1AP_UEContextResumeRequest.h" +#include "S1AP_UEContextResumeResponse.h" +#include "S1AP_UEContextResumeFailure.h" +#include "S1AP_HandoverNotify.h" +#include "S1AP_E-RABReleaseIndication.h" +#include "S1AP_Paging.h" +#include "S1AP_DownlinkNASTransport.h" +#include "S1AP_InitialUEMessage.h" +#include "S1AP_UplinkNASTransport.h" +#include "S1AP_ErrorIndication.h" +#include "S1AP_NASNonDeliveryIndication.h" +#include "S1AP_UEContextReleaseRequest.h" +#include "S1AP_DownlinkS1cdma2000tunnelling.h" +#include "S1AP_UplinkS1cdma2000tunnelling.h" +#include "S1AP_UECapabilityInfoIndication.h" +#include "S1AP_ENBStatusTransfer.h" +#include "S1AP_MMEStatusTransfer.h" +#include "S1AP_DeactivateTrace.h" +#include "S1AP_TraceStart.h" +#include "S1AP_TraceFailureIndication.h" +#include "S1AP_CellTrafficTrace.h" +#include "S1AP_LocationReportingControl.h" +#include "S1AP_LocationReportingFailureIndication.h" +#include "S1AP_LocationReport.h" +#include "S1AP_OverloadStart.h" +#include "S1AP_OverloadStop.h" +#include "S1AP_ENBDirectInformationTransfer.h" +#include "S1AP_MMEDirectInformationTransfer.h" +#include "S1AP_ENBConfigurationTransfer.h" +#include "S1AP_MMEConfigurationTransfer.h" +#include "S1AP_PrivateMessage.h" +#include "S1AP_DownlinkUEAssociatedLPPaTransport.h" +#include "S1AP_UplinkUEAssociatedLPPaTransport.h" +#include "S1AP_DownlinkNonUEAssociatedLPPaTransport.h" +#include "S1AP_UplinkNonUEAssociatedLPPaTransport.h" +#include "S1AP_PWSRestartIndication.h" +#include "S1AP_RerouteNASRequest.h" +#include "S1AP_PWSFailureIndication.h" +#include "S1AP_ConnectionEstablishmentIndication.h" +#include "S1AP_NASDeliveryIndication.h" +#include "S1AP_RetrieveUEInformation.h" +#include "S1AP_UEInformationTransfer.h" +#include "S1AP_ENBCPRelocationIndication.h" +#include "S1AP_MMECPRelocationIndication.h" +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_UnsuccessfulOutcome__value_PR { + UnsuccessfulOutcome__value_PR_NOTHING, /* No components present */ + UnsuccessfulOutcome__value_PR_HandoverPreparationFailure, + UnsuccessfulOutcome__value_PR_HandoverFailure, + UnsuccessfulOutcome__value_PR_PathSwitchRequestFailure, + UnsuccessfulOutcome__value_PR_InitialContextSetupFailure, + UnsuccessfulOutcome__value_PR_S1SetupFailure, + UnsuccessfulOutcome__value_PR_UEContextModificationFailure, + UnsuccessfulOutcome__value_PR_ENBConfigurationUpdateFailure, + UnsuccessfulOutcome__value_PR_MMEConfigurationUpdateFailure, + UnsuccessfulOutcome__value_PR_UEContextResumeFailure +} S1AP_UnsuccessfulOutcome__value_PR; + +/* S1AP_UnsuccessfulOutcome */ +typedef struct S1AP_UnsuccessfulOutcome { + S1AP_ProcedureCode_t procedureCode; + S1AP_Criticality_t criticality; + struct S1AP_UnsuccessfulOutcome__value { + S1AP_UnsuccessfulOutcome__value_PR present; + union S1AP_UnsuccessfulOutcome__S1AP_value_u { + S1AP_HandoverPreparationFailure_t HandoverPreparationFailure; + S1AP_HandoverFailure_t HandoverFailure; + S1AP_PathSwitchRequestFailure_t PathSwitchRequestFailure; + S1AP_InitialContextSetupFailure_t InitialContextSetupFailure; + S1AP_S1SetupFailure_t S1SetupFailure; + S1AP_UEContextModificationFailure_t UEContextModificationFailure; + S1AP_ENBConfigurationUpdateFailure_t ENBConfigurationUpdateFailure; + S1AP_MMEConfigurationUpdateFailure_t MMEConfigurationUpdateFailure; + S1AP_UEContextResumeFailure_t UEContextResumeFailure; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UnsuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UnsuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UnsuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UnsuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UnsuccessfulOutcome_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UplinkNASTransport.c b/lib/s1ap3/asn1c/S1AP_UplinkNASTransport.c new file mode 100644 index 0000000000..40630c5d8c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UplinkNASTransport.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UplinkNASTransport.h" + +asn_TYPE_member_t asn_MBR_S1AP_UplinkNASTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNASTransport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P33, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UplinkNASTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UplinkNASTransport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkNASTransport_specs_1 = { + sizeof(struct S1AP_UplinkNASTransport), + offsetof(struct S1AP_UplinkNASTransport, _asn_ctx), + asn_MAP_S1AP_UplinkNASTransport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkNASTransport = { + "UplinkNASTransport", + "UplinkNASTransport", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UplinkNASTransport_tags_1, + sizeof(asn_DEF_S1AP_UplinkNASTransport_tags_1) + /sizeof(asn_DEF_S1AP_UplinkNASTransport_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UplinkNASTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UplinkNASTransport_tags_1) + /sizeof(asn_DEF_S1AP_UplinkNASTransport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UplinkNASTransport_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UplinkNASTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UplinkNASTransport.h b/lib/s1ap3/asn1c/S1AP_UplinkNASTransport.h new file mode 100644 index 0000000000..980d53c150 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UplinkNASTransport.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UplinkNASTransport_H_ +#define _S1AP_UplinkNASTransport_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UplinkNASTransport */ +typedef struct S1AP_UplinkNASTransport { + S1AP_ProtocolIE_Container_6551P33_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UplinkNASTransport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkNASTransport; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkNASTransport_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UplinkNASTransport_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UplinkNASTransport_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UplinkNonUEAssociatedLPPaTransport.c b/lib/s1ap3/asn1c/S1AP_UplinkNonUEAssociatedLPPaTransport.c new file mode 100644 index 0000000000..8dda16ba68 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UplinkNonUEAssociatedLPPaTransport.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UplinkNonUEAssociatedLPPaTransport.h" + +asn_TYPE_member_t asn_MBR_S1AP_UplinkNonUEAssociatedLPPaTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P76, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UplinkNonUEAssociatedLPPaTransport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkNonUEAssociatedLPPaTransport_specs_1 = { + sizeof(struct S1AP_UplinkNonUEAssociatedLPPaTransport), + offsetof(struct S1AP_UplinkNonUEAssociatedLPPaTransport, _asn_ctx), + asn_MAP_S1AP_UplinkNonUEAssociatedLPPaTransport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport = { + "UplinkNonUEAssociatedLPPaTransport", + "UplinkNonUEAssociatedLPPaTransport", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_tags_1, + sizeof(asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_tags_1) + /sizeof(asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_tags_1) + /sizeof(asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UplinkNonUEAssociatedLPPaTransport_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UplinkNonUEAssociatedLPPaTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UplinkNonUEAssociatedLPPaTransport.h b/lib/s1ap3/asn1c/S1AP_UplinkNonUEAssociatedLPPaTransport.h new file mode 100644 index 0000000000..b3e6da2639 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UplinkNonUEAssociatedLPPaTransport.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UplinkNonUEAssociatedLPPaTransport_H_ +#define _S1AP_UplinkNonUEAssociatedLPPaTransport_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UplinkNonUEAssociatedLPPaTransport */ +typedef struct S1AP_UplinkNonUEAssociatedLPPaTransport { + S1AP_ProtocolIE_Container_6551P76_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UplinkNonUEAssociatedLPPaTransport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkNonUEAssociatedLPPaTransport; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkNonUEAssociatedLPPaTransport_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UplinkNonUEAssociatedLPPaTransport_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UplinkNonUEAssociatedLPPaTransport_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UplinkS1cdma2000tunnelling.c b/lib/s1ap3/asn1c/S1AP_UplinkS1cdma2000tunnelling.c new file mode 100644 index 0000000000..81111f8e9a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UplinkS1cdma2000tunnelling.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UplinkS1cdma2000tunnelling.h" + +asn_TYPE_member_t asn_MBR_S1AP_UplinkS1cdma2000tunnelling_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkS1cdma2000tunnelling, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P50, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UplinkS1cdma2000tunnelling_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UplinkS1cdma2000tunnelling_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkS1cdma2000tunnelling_specs_1 = { + sizeof(struct S1AP_UplinkS1cdma2000tunnelling), + offsetof(struct S1AP_UplinkS1cdma2000tunnelling, _asn_ctx), + asn_MAP_S1AP_UplinkS1cdma2000tunnelling_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkS1cdma2000tunnelling = { + "UplinkS1cdma2000tunnelling", + "UplinkS1cdma2000tunnelling", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UplinkS1cdma2000tunnelling_tags_1, + sizeof(asn_DEF_S1AP_UplinkS1cdma2000tunnelling_tags_1) + /sizeof(asn_DEF_S1AP_UplinkS1cdma2000tunnelling_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UplinkS1cdma2000tunnelling_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UplinkS1cdma2000tunnelling_tags_1) + /sizeof(asn_DEF_S1AP_UplinkS1cdma2000tunnelling_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UplinkS1cdma2000tunnelling_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UplinkS1cdma2000tunnelling_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UplinkS1cdma2000tunnelling.h b/lib/s1ap3/asn1c/S1AP_UplinkS1cdma2000tunnelling.h new file mode 100644 index 0000000000..a81aa6b9cc --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UplinkS1cdma2000tunnelling.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UplinkS1cdma2000tunnelling_H_ +#define _S1AP_UplinkS1cdma2000tunnelling_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UplinkS1cdma2000tunnelling */ +typedef struct S1AP_UplinkS1cdma2000tunnelling { + S1AP_ProtocolIE_Container_6551P50_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UplinkS1cdma2000tunnelling_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkS1cdma2000tunnelling; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkS1cdma2000tunnelling_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UplinkS1cdma2000tunnelling_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UplinkS1cdma2000tunnelling_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UplinkUEAssociatedLPPaTransport.c b/lib/s1ap3/asn1c/S1AP_UplinkUEAssociatedLPPaTransport.c new file mode 100644 index 0000000000..2e464a50f2 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UplinkUEAssociatedLPPaTransport.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UplinkUEAssociatedLPPaTransport.h" + +asn_TYPE_member_t asn_MBR_S1AP_UplinkUEAssociatedLPPaTransport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P74, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UplinkUEAssociatedLPPaTransport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkUEAssociatedLPPaTransport_specs_1 = { + sizeof(struct S1AP_UplinkUEAssociatedLPPaTransport), + offsetof(struct S1AP_UplinkUEAssociatedLPPaTransport, _asn_ctx), + asn_MAP_S1AP_UplinkUEAssociatedLPPaTransport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport = { + "UplinkUEAssociatedLPPaTransport", + "UplinkUEAssociatedLPPaTransport", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_tags_1, + sizeof(asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_tags_1) + /sizeof(asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_tags_1) + /sizeof(asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UplinkUEAssociatedLPPaTransport_1, + 1, /* Elements count */ + &asn_SPC_S1AP_UplinkUEAssociatedLPPaTransport_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UplinkUEAssociatedLPPaTransport.h b/lib/s1ap3/asn1c/S1AP_UplinkUEAssociatedLPPaTransport.h new file mode 100644 index 0000000000..2c6696efbb --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UplinkUEAssociatedLPPaTransport.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UplinkUEAssociatedLPPaTransport_H_ +#define _S1AP_UplinkUEAssociatedLPPaTransport_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_UplinkUEAssociatedLPPaTransport */ +typedef struct S1AP_UplinkUEAssociatedLPPaTransport { + S1AP_ProtocolIE_Container_6551P74_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UplinkUEAssociatedLPPaTransport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UplinkUEAssociatedLPPaTransport; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_UplinkUEAssociatedLPPaTransport_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_UplinkUEAssociatedLPPaTransport_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UplinkUEAssociatedLPPaTransport_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_UserLocationInformation.c b/lib/s1ap3/asn1c/S1AP_UserLocationInformation.c new file mode 100644 index 0000000000..0d0d2365d6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UserLocationInformation.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_UserLocationInformation.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_UserLocationInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UserLocationInformation, eutran_cgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EUTRAN_CGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eutran-cgi" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1AP_UserLocationInformation, tai), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tai" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_UserLocationInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P115, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_UserLocationInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_UserLocationInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_UserLocationInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eutran-cgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tai */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_UserLocationInformation_specs_1 = { + sizeof(struct S1AP_UserLocationInformation), + offsetof(struct S1AP_UserLocationInformation, _asn_ctx), + asn_MAP_S1AP_UserLocationInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_UserLocationInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_UserLocationInformation = { + "UserLocationInformation", + "UserLocationInformation", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_UserLocationInformation_tags_1, + sizeof(asn_DEF_S1AP_UserLocationInformation_tags_1) + /sizeof(asn_DEF_S1AP_UserLocationInformation_tags_1[0]), /* 1 */ + asn_DEF_S1AP_UserLocationInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_UserLocationInformation_tags_1) + /sizeof(asn_DEF_S1AP_UserLocationInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_UserLocationInformation_1, + 3, /* Elements count */ + &asn_SPC_S1AP_UserLocationInformation_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_UserLocationInformation.h b/lib/s1ap3/asn1c/S1AP_UserLocationInformation.h new file mode 100644 index 0000000000..14929e4e18 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_UserLocationInformation.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_UserLocationInformation_H_ +#define _S1AP_UserLocationInformation_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_EUTRAN-CGI.h" +#include "S1AP_TAI.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_UserLocationInformation */ +typedef struct S1AP_UserLocationInformation { + S1AP_EUTRAN_CGI_t eutran_cgi; + S1AP_TAI_t tai; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_UserLocationInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_UserLocationInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_UserLocationInformation_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.c b/lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.c new file mode 100644 index 0000000000..ae858ab6ae --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_V2XServicesAuthorized.h" + +#include "S1AP_ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_S1AP_V2XServicesAuthorized_1[] = { + { ATF_POINTER, 3, offsetof(struct S1AP_V2XServicesAuthorized, vehicleUE), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_VehicleUE, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehicleUE" + }, + { ATF_POINTER, 2, offsetof(struct S1AP_V2XServicesAuthorized, pedestrianUE), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_PedestrianUE, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pedestrianUE" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_V2XServicesAuthorized, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P116, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_V2XServicesAuthorized_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_S1AP_V2XServicesAuthorized_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_V2XServicesAuthorized_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicleUE */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pedestrianUE */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_S1AP_V2XServicesAuthorized_specs_1 = { + sizeof(struct S1AP_V2XServicesAuthorized), + offsetof(struct S1AP_V2XServicesAuthorized, _asn_ctx), + asn_MAP_S1AP_V2XServicesAuthorized_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1AP_V2XServicesAuthorized_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_V2XServicesAuthorized = { + "V2XServicesAuthorized", + "V2XServicesAuthorized", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_V2XServicesAuthorized_tags_1, + sizeof(asn_DEF_S1AP_V2XServicesAuthorized_tags_1) + /sizeof(asn_DEF_S1AP_V2XServicesAuthorized_tags_1[0]), /* 1 */ + asn_DEF_S1AP_V2XServicesAuthorized_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_V2XServicesAuthorized_tags_1) + /sizeof(asn_DEF_S1AP_V2XServicesAuthorized_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_V2XServicesAuthorized_1, + 3, /* Elements count */ + &asn_SPC_S1AP_V2XServicesAuthorized_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.h b/lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.h new file mode 100644 index 0000000000..643434ae9a --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_V2XServicesAuthorized.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_V2XServicesAuthorized_H_ +#define _S1AP_V2XServicesAuthorized_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_VehicleUE.h" +#include "S1AP_PedestrianUE.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_V2XServicesAuthorized */ +typedef struct S1AP_V2XServicesAuthorized { + S1AP_VehicleUE_t *vehicleUE; /* OPTIONAL */ + S1AP_PedestrianUE_t *pedestrianUE; /* OPTIONAL */ + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_V2XServicesAuthorized_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_V2XServicesAuthorized; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_V2XServicesAuthorized_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_VehicleUE.c b/lib/s1ap3/asn1c/S1AP_VehicleUE.c new file mode 100644 index 0000000000..25166db75d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_VehicleUE.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_VehicleUE.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_VehicleUE_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +asn_per_constraints_t asn_PER_type_S1AP_VehicleUE_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_VehicleUE_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_VehicleUE_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_S1AP_VehicleUE_specs_1 = { + asn_MAP_S1AP_VehicleUE_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_VehicleUE_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_VehicleUE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_VehicleUE = { + "VehicleUE", + "VehicleUE", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_VehicleUE_tags_1, + sizeof(asn_DEF_S1AP_VehicleUE_tags_1) + /sizeof(asn_DEF_S1AP_VehicleUE_tags_1[0]), /* 1 */ + asn_DEF_S1AP_VehicleUE_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_VehicleUE_tags_1) + /sizeof(asn_DEF_S1AP_VehicleUE_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_VehicleUE_constr_1, &asn_PER_type_S1AP_VehicleUE_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_VehicleUE_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_VehicleUE.h b/lib/s1ap3/asn1c/S1AP_VehicleUE.h new file mode 100644 index 0000000000..445661ec6d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_VehicleUE.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_VehicleUE_H_ +#define _S1AP_VehicleUE_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_VehicleUE { + S1AP_VehicleUE_authorized = 0, + S1AP_VehicleUE_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_VehicleUE; + +/* S1AP_VehicleUE */ +typedef long S1AP_VehicleUE_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_S1AP_VehicleUE_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_S1AP_VehicleUE; +extern const asn_INTEGER_specifics_t asn_SPC_VehicleUE_specs_1; +asn_struct_free_f VehicleUE_free; +asn_struct_print_f VehicleUE_print; +asn_constr_check_f VehicleUE_constraint; +ber_type_decoder_f VehicleUE_decode_ber; +der_type_encoder_f VehicleUE_encode_der; +xer_type_decoder_f VehicleUE_decode_xer; +xer_type_encoder_f VehicleUE_encode_xer; +oer_type_decoder_f VehicleUE_decode_oer; +oer_type_encoder_f VehicleUE_encode_oer; +per_type_decoder_f VehicleUE_decode_uper; +per_type_encoder_f VehicleUE_encode_uper; +per_type_decoder_f VehicleUE_decode_aper; +per_type_encoder_f VehicleUE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_VehicleUE_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_VoiceSupportMatchIndicator.c b/lib/s1ap3/asn1c/S1AP_VoiceSupportMatchIndicator.c new file mode 100644 index 0000000000..d2119a90e6 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_VoiceSupportMatchIndicator.c @@ -0,0 +1,58 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_VoiceSupportMatchIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_VoiceSupportMatchIndicator_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_VoiceSupportMatchIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_S1AP_VoiceSupportMatchIndicator_value2enum_1[] = { + { 0, 9, "supported" }, + { 1, 13, "not-supported" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_S1AP_VoiceSupportMatchIndicator_enum2value_1[] = { + 1, /* not-supported(1) */ + 0 /* supported(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_S1AP_VoiceSupportMatchIndicator_specs_1 = { + asn_MAP_S1AP_VoiceSupportMatchIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_S1AP_VoiceSupportMatchIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_S1AP_VoiceSupportMatchIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_VoiceSupportMatchIndicator = { + "VoiceSupportMatchIndicator", + "VoiceSupportMatchIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_S1AP_VoiceSupportMatchIndicator_tags_1, + sizeof(asn_DEF_S1AP_VoiceSupportMatchIndicator_tags_1) + /sizeof(asn_DEF_S1AP_VoiceSupportMatchIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1AP_VoiceSupportMatchIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_VoiceSupportMatchIndicator_tags_1) + /sizeof(asn_DEF_S1AP_VoiceSupportMatchIndicator_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_VoiceSupportMatchIndicator_constr_1, &asn_PER_type_S1AP_VoiceSupportMatchIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_S1AP_VoiceSupportMatchIndicator_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_VoiceSupportMatchIndicator.h b/lib/s1ap3/asn1c/S1AP_VoiceSupportMatchIndicator.h new file mode 100644 index 0000000000..b6959f5219 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_VoiceSupportMatchIndicator.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_VoiceSupportMatchIndicator_H_ +#define _S1AP_VoiceSupportMatchIndicator_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_VoiceSupportMatchIndicator { + S1AP_VoiceSupportMatchIndicator_supported = 0, + S1AP_VoiceSupportMatchIndicator_not_supported = 1 + /* + * Enumeration is extensible + */ +} e_S1AP_VoiceSupportMatchIndicator; + +/* S1AP_VoiceSupportMatchIndicator */ +typedef long S1AP_VoiceSupportMatchIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_VoiceSupportMatchIndicator; +asn_struct_free_f S1AP_VoiceSupportMatchIndicator_free; +asn_struct_print_f S1AP_VoiceSupportMatchIndicator_print; +asn_constr_check_f S1AP_VoiceSupportMatchIndicator_constraint; +ber_type_decoder_f S1AP_VoiceSupportMatchIndicator_decode_ber; +der_type_encoder_f S1AP_VoiceSupportMatchIndicator_encode_der; +xer_type_decoder_f S1AP_VoiceSupportMatchIndicator_decode_xer; +xer_type_encoder_f S1AP_VoiceSupportMatchIndicator_encode_xer; +oer_type_decoder_f S1AP_VoiceSupportMatchIndicator_decode_oer; +oer_type_encoder_f S1AP_VoiceSupportMatchIndicator_encode_oer; +per_type_decoder_f S1AP_VoiceSupportMatchIndicator_decode_uper; +per_type_encoder_f S1AP_VoiceSupportMatchIndicator_encode_uper; +per_type_decoder_f S1AP_VoiceSupportMatchIndicator_decode_aper; +per_type_encoder_f S1AP_VoiceSupportMatchIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_VoiceSupportMatchIndicator_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_WarningAreaList.c b/lib/s1ap3/asn1c/S1AP_WarningAreaList.c new file mode 100644 index 0000000000..05ee33b71d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WarningAreaList.c @@ -0,0 +1,78 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_WarningAreaList.h" + +#include "S1AP_ECGIList.h" +#include "S1AP_TAIListforWarning.h" +#include "S1AP_EmergencyAreaIDList.h" +static asn_oer_constraints_t asn_OER_type_S1AP_WarningAreaList_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1}; +static asn_per_constraints_t asn_PER_type_S1AP_WarningAreaList_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_S1AP_WarningAreaList_1[] = { + { ATF_POINTER, 0, offsetof(struct S1AP_WarningAreaList, choice.cellIDList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ECGIList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellIDList" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_WarningAreaList, choice.trackingAreaListforWarning), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_TAIListforWarning, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "trackingAreaListforWarning" + }, + { ATF_POINTER, 0, offsetof(struct S1AP_WarningAreaList, choice.emergencyAreaIDList), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_EmergencyAreaIDList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "emergencyAreaIDList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_WarningAreaList_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIDList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trackingAreaListforWarning */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* emergencyAreaIDList */ +}; +static asn_CHOICE_specifics_t asn_SPC_S1AP_WarningAreaList_specs_1 = { + sizeof(struct S1AP_WarningAreaList), + offsetof(struct S1AP_WarningAreaList, _asn_ctx), + offsetof(struct S1AP_WarningAreaList, present), + sizeof(((struct S1AP_WarningAreaList *)0)->present), + asn_MAP_S1AP_WarningAreaList_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_WarningAreaList = { + "WarningAreaList", + "WarningAreaList", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { &asn_OER_type_S1AP_WarningAreaList_constr_1, &asn_PER_type_S1AP_WarningAreaList_constr_1, CHOICE_constraint }, + asn_MBR_S1AP_WarningAreaList_1, + 3, /* Elements count */ + &asn_SPC_S1AP_WarningAreaList_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_WarningAreaList.h b/lib/s1ap3/asn1c/S1AP_WarningAreaList.h new file mode 100644 index 0000000000..6ea59456aa --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WarningAreaList.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_WarningAreaList_H_ +#define _S1AP_WarningAreaList_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum S1AP_WarningAreaList_PR { + WarningAreaList_PR_NOTHING, /* No components present */ + WarningAreaList_PR_cellIDList, + WarningAreaList_PR_trackingAreaListforWarning, + WarningAreaList_PR_emergencyAreaIDList + /* Extensions may appear below */ + +} S1AP_WarningAreaList_PR; + +/* Forward declarations */ +struct S1AP_ECGIList; +struct S1AP_TAIListforWarning; +struct S1AP_EmergencyAreaIDList; + +/* S1AP_WarningAreaList */ +typedef struct S1AP_WarningAreaList { + S1AP_WarningAreaList_PR present; + union S1AP_WarningAreaList_u { + struct S1AP_ECGIList *cellIDList; + struct S1AP_TAIListforWarning *trackingAreaListforWarning; + struct S1AP_EmergencyAreaIDList *emergencyAreaIDList; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_WarningAreaList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_WarningAreaList; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_WarningAreaList_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_WarningMessageContents.c b/lib/s1ap3/asn1c/S1AP_WarningMessageContents.c new file mode 100644 index 0000000000..12994e5d3b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WarningMessageContents.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_WarningMessageContents.h" + +int +S1AP_WarningMessageContents_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 9600)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_WarningMessageContents_constr_1 CC_NOTUSED = { + { 0, 0 }, + -1 /* (SIZE(1..9600)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_WarningMessageContents_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 9600 } /* (SIZE(1..9600)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_WarningMessageContents_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_WarningMessageContents = { + "WarningMessageContents", + "WarningMessageContents", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_WarningMessageContents_tags_1, + sizeof(asn_DEF_S1AP_WarningMessageContents_tags_1) + /sizeof(asn_DEF_S1AP_WarningMessageContents_tags_1[0]), /* 1 */ + asn_DEF_S1AP_WarningMessageContents_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_WarningMessageContents_tags_1) + /sizeof(asn_DEF_S1AP_WarningMessageContents_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_WarningMessageContents_constr_1, &asn_PER_type_S1AP_WarningMessageContents_constr_1, S1AP_WarningMessageContents_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_WarningMessageContents.h b/lib/s1ap3/asn1c/S1AP_WarningMessageContents.h new file mode 100644 index 0000000000..44a4d2cc9c --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WarningMessageContents.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_WarningMessageContents_H_ +#define _S1AP_WarningMessageContents_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_WarningMessageContents */ +typedef OCTET_STRING_t S1AP_WarningMessageContents_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_WarningMessageContents; +asn_struct_free_f S1AP_WarningMessageContents_free; +asn_struct_print_f S1AP_WarningMessageContents_print; +asn_constr_check_f S1AP_WarningMessageContents_constraint; +ber_type_decoder_f S1AP_WarningMessageContents_decode_ber; +der_type_encoder_f S1AP_WarningMessageContents_encode_der; +xer_type_decoder_f S1AP_WarningMessageContents_decode_xer; +xer_type_encoder_f S1AP_WarningMessageContents_encode_xer; +oer_type_decoder_f S1AP_WarningMessageContents_decode_oer; +oer_type_encoder_f S1AP_WarningMessageContents_encode_oer; +per_type_decoder_f S1AP_WarningMessageContents_decode_uper; +per_type_encoder_f S1AP_WarningMessageContents_encode_uper; +per_type_decoder_f S1AP_WarningMessageContents_decode_aper; +per_type_encoder_f S1AP_WarningMessageContents_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_WarningMessageContents_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.c b/lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.c new file mode 100644 index 0000000000..578be7ab64 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_WarningSecurityInfo.h" + +int +S1AP_WarningSecurityInfo_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 50)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_WarningSecurityInfo_constr_1 CC_NOTUSED = { + { 0, 0 }, + 50 /* (SIZE(50..50)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_WarningSecurityInfo_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 50, 50 } /* (SIZE(50..50)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_WarningSecurityInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_WarningSecurityInfo = { + "WarningSecurityInfo", + "WarningSecurityInfo", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_WarningSecurityInfo_tags_1, + sizeof(asn_DEF_S1AP_WarningSecurityInfo_tags_1) + /sizeof(asn_DEF_S1AP_WarningSecurityInfo_tags_1[0]), /* 1 */ + asn_DEF_S1AP_WarningSecurityInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_WarningSecurityInfo_tags_1) + /sizeof(asn_DEF_S1AP_WarningSecurityInfo_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_WarningSecurityInfo_constr_1, &asn_PER_type_S1AP_WarningSecurityInfo_constr_1, S1AP_WarningSecurityInfo_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.h b/lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.h new file mode 100644 index 0000000000..9b044c1d3e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WarningSecurityInfo.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_WarningSecurityInfo_H_ +#define _S1AP_WarningSecurityInfo_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_WarningSecurityInfo */ +typedef OCTET_STRING_t S1AP_WarningSecurityInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_WarningSecurityInfo; +asn_struct_free_f S1AP_WarningSecurityInfo_free; +asn_struct_print_f S1AP_WarningSecurityInfo_print; +asn_constr_check_f S1AP_WarningSecurityInfo_constraint; +ber_type_decoder_f S1AP_WarningSecurityInfo_decode_ber; +der_type_encoder_f S1AP_WarningSecurityInfo_encode_der; +xer_type_decoder_f S1AP_WarningSecurityInfo_decode_xer; +xer_type_encoder_f S1AP_WarningSecurityInfo_encode_xer; +oer_type_decoder_f S1AP_WarningSecurityInfo_decode_oer; +oer_type_encoder_f S1AP_WarningSecurityInfo_encode_oer; +per_type_decoder_f S1AP_WarningSecurityInfo_decode_uper; +per_type_encoder_f S1AP_WarningSecurityInfo_encode_uper; +per_type_decoder_f S1AP_WarningSecurityInfo_decode_aper; +per_type_encoder_f S1AP_WarningSecurityInfo_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_WarningSecurityInfo_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_WarningType.c b/lib/s1ap3/asn1c/S1AP_WarningType.c new file mode 100644 index 0000000000..2e15a16f98 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WarningType.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_WarningType.h" + +int +S1AP_WarningType_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_oer_constraints_t asn_OER_type_S1AP_WarningType_constr_1 CC_NOTUSED = { + { 0, 0 }, + 2 /* (SIZE(2..2)) */}; +static asn_per_constraints_t asn_PER_type_S1AP_WarningType_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_S1AP_WarningType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_WarningType = { + "WarningType", + "WarningType", + &asn_OP_OCTET_STRING, + asn_DEF_S1AP_WarningType_tags_1, + sizeof(asn_DEF_S1AP_WarningType_tags_1) + /sizeof(asn_DEF_S1AP_WarningType_tags_1[0]), /* 1 */ + asn_DEF_S1AP_WarningType_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_WarningType_tags_1) + /sizeof(asn_DEF_S1AP_WarningType_tags_1[0]), /* 1 */ + { &asn_OER_type_S1AP_WarningType_constr_1, &asn_PER_type_S1AP_WarningType_constr_1, S1AP_WarningType_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_WarningType.h b/lib/s1ap3/asn1c/S1AP_WarningType.h new file mode 100644 index 0000000000..79248f716e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WarningType.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_WarningType_H_ +#define _S1AP_WarningType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_WarningType */ +typedef OCTET_STRING_t S1AP_WarningType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_WarningType; +asn_struct_free_f S1AP_WarningType_free; +asn_struct_print_f S1AP_WarningType_print; +asn_constr_check_f S1AP_WarningType_constraint; +ber_type_decoder_f S1AP_WarningType_decode_ber; +der_type_encoder_f S1AP_WarningType_encode_der; +xer_type_decoder_f S1AP_WarningType_decode_xer; +xer_type_encoder_f S1AP_WarningType_encode_xer; +oer_type_decoder_f S1AP_WarningType_decode_oer; +oer_type_encoder_f S1AP_WarningType_encode_oer; +per_type_decoder_f S1AP_WarningType_decode_uper; +per_type_encoder_f S1AP_WarningType_encode_uper; +per_type_decoder_f S1AP_WarningType_decode_aper; +per_type_encoder_f S1AP_WarningType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_WarningType_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningRequest.c b/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningRequest.c new file mode 100644 index 0000000000..c7668ad20e --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_WriteReplaceWarningRequest.h" + +asn_TYPE_member_t asn_MBR_S1AP_WriteReplaceWarningRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P63, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_WriteReplaceWarningRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_WriteReplaceWarningRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_WriteReplaceWarningRequest_specs_1 = { + sizeof(struct S1AP_WriteReplaceWarningRequest), + offsetof(struct S1AP_WriteReplaceWarningRequest, _asn_ctx), + asn_MAP_S1AP_WriteReplaceWarningRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_WriteReplaceWarningRequest = { + "WriteReplaceWarningRequest", + "WriteReplaceWarningRequest", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_WriteReplaceWarningRequest_tags_1, + sizeof(asn_DEF_S1AP_WriteReplaceWarningRequest_tags_1) + /sizeof(asn_DEF_S1AP_WriteReplaceWarningRequest_tags_1[0]), /* 1 */ + asn_DEF_S1AP_WriteReplaceWarningRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_WriteReplaceWarningRequest_tags_1) + /sizeof(asn_DEF_S1AP_WriteReplaceWarningRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_WriteReplaceWarningRequest_1, + 1, /* Elements count */ + &asn_SPC_S1AP_WriteReplaceWarningRequest_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningRequest.h b/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningRequest.h new file mode 100644 index 0000000000..1c1cd8121b --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_WriteReplaceWarningRequest_H_ +#define _S1AP_WriteReplaceWarningRequest_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_WriteReplaceWarningRequest */ +typedef struct S1AP_WriteReplaceWarningRequest { + S1AP_ProtocolIE_Container_6551P63_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_WriteReplaceWarningRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_WriteReplaceWarningRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_WriteReplaceWarningRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_WriteReplaceWarningRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_WriteReplaceWarningRequest_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningResponse.c b/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningResponse.c new file mode 100644 index 0000000000..b2a21b590d --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_WriteReplaceWarningResponse.h" + +asn_TYPE_member_t asn_MBR_S1AP_WriteReplaceWarningResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_WriteReplaceWarningResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolIE_Container_6551P64, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1AP_WriteReplaceWarningResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_WriteReplaceWarningResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_WriteReplaceWarningResponse_specs_1 = { + sizeof(struct S1AP_WriteReplaceWarningResponse), + offsetof(struct S1AP_WriteReplaceWarningResponse, _asn_ctx), + asn_MAP_S1AP_WriteReplaceWarningResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_WriteReplaceWarningResponse = { + "WriteReplaceWarningResponse", + "WriteReplaceWarningResponse", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_WriteReplaceWarningResponse_tags_1, + sizeof(asn_DEF_S1AP_WriteReplaceWarningResponse_tags_1) + /sizeof(asn_DEF_S1AP_WriteReplaceWarningResponse_tags_1[0]), /* 1 */ + asn_DEF_S1AP_WriteReplaceWarningResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_WriteReplaceWarningResponse_tags_1) + /sizeof(asn_DEF_S1AP_WriteReplaceWarningResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_WriteReplaceWarningResponse_1, + 1, /* Elements count */ + &asn_SPC_S1AP_WriteReplaceWarningResponse_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningResponse.h b/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningResponse.h new file mode 100644 index 0000000000..4469e4e473 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_WriteReplaceWarningResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-PDU-Contents" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_WriteReplaceWarningResponse_H_ +#define _S1AP_WriteReplaceWarningResponse_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* S1AP_WriteReplaceWarningResponse */ +typedef struct S1AP_WriteReplaceWarningResponse { + S1AP_ProtocolIE_Container_6551P64_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_WriteReplaceWarningResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_WriteReplaceWarningResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_WriteReplaceWarningResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_WriteReplaceWarningResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_WriteReplaceWarningResponse_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.c b/lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.c new file mode 100644 index 0000000000..9d929f8847 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#include "S1AP_X2TNLConfigurationInfo.h" + +#include "S1AP_ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1AP_X2TNLConfigurationInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1AP_X2TNLConfigurationInfo, eNBX2TransportLayerAddresses), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ENBX2TLAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNBX2TransportLayerAddresses" + }, + { ATF_POINTER, 1, offsetof(struct S1AP_X2TNLConfigurationInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1AP_ProtocolExtensionContainer_6602P117, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1AP_X2TNLConfigurationInfo_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_S1AP_X2TNLConfigurationInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1AP_X2TNLConfigurationInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eNBX2TransportLayerAddresses */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1AP_X2TNLConfigurationInfo_specs_1 = { + sizeof(struct S1AP_X2TNLConfigurationInfo), + offsetof(struct S1AP_X2TNLConfigurationInfo, _asn_ctx), + asn_MAP_S1AP_X2TNLConfigurationInfo_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_S1AP_X2TNLConfigurationInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1AP_X2TNLConfigurationInfo = { + "X2TNLConfigurationInfo", + "X2TNLConfigurationInfo", + &asn_OP_SEQUENCE, + asn_DEF_S1AP_X2TNLConfigurationInfo_tags_1, + sizeof(asn_DEF_S1AP_X2TNLConfigurationInfo_tags_1) + /sizeof(asn_DEF_S1AP_X2TNLConfigurationInfo_tags_1[0]), /* 1 */ + asn_DEF_S1AP_X2TNLConfigurationInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_S1AP_X2TNLConfigurationInfo_tags_1) + /sizeof(asn_DEF_S1AP_X2TNLConfigurationInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1AP_X2TNLConfigurationInfo_1, + 2, /* Elements count */ + &asn_SPC_S1AP_X2TNLConfigurationInfo_specs_1 /* Additional specs */ +}; + diff --git a/lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.h b/lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.h new file mode 100644 index 0000000000..c37bd905a3 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_X2TNLConfigurationInfo.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "S1AP-IEs" + * found in "../support/r14.4.0/36413-e40.asn" + * `asn1c -pdu=all -fcompound-names -findirect-choice -fno-include-deps` + */ + +#ifndef _S1AP_X2TNLConfigurationInfo_H_ +#define _S1AP_X2TNLConfigurationInfo_H_ + + +#include + +/* Including external dependencies */ +#include "S1AP_ENBX2TLAs.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct S1AP_ProtocolExtensionContainer; + +/* S1AP_X2TNLConfigurationInfo */ +typedef struct S1AP_X2TNLConfigurationInfo { + S1AP_ENBX2TLAs_t eNBX2TransportLayerAddresses; + struct S1AP_ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1AP_X2TNLConfigurationInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1AP_X2TNLConfigurationInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_S1AP_X2TNLConfigurationInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_S1AP_X2TNLConfigurationInfo_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_X2TNLConfigurationInfo_H_ */ +#include diff --git a/lib/s1ap3/asn1c/S1AP_asn_constant.h b/lib/s1ap3/asn1c/S1AP_asn_constant.h new file mode 100644 index 0000000000..135c369658 --- /dev/null +++ b/lib/s1ap3/asn1c/S1AP_asn_constant.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +#ifndef _S1AP_ASN_CONSTANT_H +#define _S1AP_ASN_CONSTANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define S1AP_maxPrivateIEs (65535) +#define S1AP_maxProtocolExtensions (65535) +#define S1AP_maxProtocolIEs (65535) +#define S1AP_maxnoofCSGs (256) +#define S1AP_maxnoofE_RABs (256) +#define S1AP_maxnoofTAIs (256) +#define S1AP_maxnoofTACs (256) +#define S1AP_maxnoofErrors (256) +#define S1AP_maxnoofBPLMNs (6) +#define S1AP_maxnoofPLMNsPerMME (32) +#define S1AP_maxnoofEPLMNs (15) +#define S1AP_maxnoofEPLMNsPlusOne (16) +#define S1AP_maxnoofForbLACs (4096) +#define S1AP_maxnoofForbTACs (4096) +#define S1AP_maxnoofIndividualS1ConnectionsToReset (256) +#define S1AP_maxnoofCells (16) +#define S1AP_maxnoofCellsineNB (256) +#define S1AP_maxnoofTAIforWarning (65535) +#define S1AP_maxnoofCellID (65535) +#define S1AP_maxnoofDCNs (32) +#define S1AP_maxnoofEmergencyAreaID (65535) +#define S1AP_maxnoofCellinTAI (65535) +#define S1AP_maxnoofCellinEAI (65535) +#define S1AP_maxnoofeNBX2TLAs (2) +#define S1AP_maxnoofeNBX2ExtTLAs (16) +#define S1AP_maxnoofeNBX2GTPTLAs (16) +#define S1AP_maxnoofRATs (8) +#define S1AP_maxnoofGroupIDs (65535) +#define S1AP_maxnoofMMECs (256) +#define S1AP_maxnoofCellIDforMDT (32) +#define S1AP_maxnoofTAforMDT (8) +#define S1AP_maxnoofMDTPLMNs (16) +#define S1AP_maxnoofCellsforRestart (256) +#define S1AP_maxnoofRestartTAIs (2048) +#define S1AP_maxnoofRestartEmergencyAreaIDs (256) +#define S1AP_maxEARFCN (262143) +#define S1AP_maxnoofMBSFNAreaMDT (8) +#define S1AP_maxnoofRecommendedCells (16) +#define S1AP_maxnoofRecommendedENBs (16) + + +#ifdef __cplusplus +} +#endif + +#endif /* _S1AP_ASN_CONSTANT_H */ diff --git a/lib/s1ap3/asn1c/asn_SEQUENCE_OF.c b/lib/s1ap3/asn1c/asn_SEQUENCE_OF.c new file mode 100644 index 0000000000..ec952fc999 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_SEQUENCE_OF.c @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +typedef A_SEQUENCE_OF(void) asn_sequence; + +void +asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { + asn_sequence *as = (asn_sequence *)asn_sequence_of_x; + + if(as) { + void *ptr; + int n; + + if(number < 0 || number >= as->count) + return; /* Nothing to delete */ + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + /* + * Shift all elements to the left to hide the gap. + */ + --as->count; + for(n = number; n < as->count; n++) + as->array[n] = as->array[n+1]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + diff --git a/lib/s1ap3/asn1c/asn_SEQUENCE_OF.h b/lib/s1ap3/asn1c/asn_SEQUENCE_OF.h new file mode 100644 index 0000000000..e35bc447a2 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_SEQUENCE_OF.h @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SEQUENCE_OF_H +#define ASN_SEQUENCE_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SEQUENCE OF is the same as SET OF with a tiny difference: + * the delete operation preserves the initial order of elements + * and thus MAY operate in non-constant time. + */ +#define A_SEQUENCE_OF(type) A_SET_OF(type) + +#define ASN_SEQUENCE_ADD(headptr, ptr) \ + asn_sequence_add((headptr), (ptr)) + +/*********************************************** + * Implementation of the SEQUENCE OF structure. + */ + +#define asn_sequence_add asn_set_add +#define asn_sequence_empty asn_set_empty + +/* + * Delete the element from the set by its number (base 0). + * This is NOT a constant-time operation. + * The order of elements is preserved. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; +#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) +#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SEQUENCE_OF_H */ diff --git a/lib/s1ap3/asn1c/asn_SET_OF.c b/lib/s1ap3/asn1c/asn_SET_OF.c new file mode 100644 index 0000000000..944f2cb8ad --- /dev/null +++ b/lib/s1ap3/asn1c/asn_SET_OF.c @@ -0,0 +1,88 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Add another element into the set. + */ +int +asn_set_add(void *asn_set_of_x, void *ptr) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as == 0 || ptr == 0) { + errno = EINVAL; /* Invalid arguments */ + return -1; + } + + /* + * Make sure there's enough space to insert an element. + */ + if(as->count == as->size) { + int _newsize = as->size ? (as->size << 1) : 4; + void *_new_arr; + _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); + if(_new_arr) { + as->array = (void **)_new_arr; + as->size = _newsize; + } else { + /* ENOMEM */ + return -1; + } + } + + as->array[as->count++] = ptr; + + return 0; +} + +void +asn_set_del(void *asn_set_of_x, int number, int _do_free) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + void *ptr; + if(number < 0 || number >= as->count) + return; + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + as->array[number] = as->array[--as->count]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + +/* + * Free the contents of the set, do not free the set itself. + */ +void +asn_set_empty(void *asn_set_of_x) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + if(as->array) { + if(as->free) { + while(as->count--) + as->free(as->array[as->count]); + } + FREEMEM(as->array); + as->array = 0; + } + as->count = 0; + as->size = 0; + } + +} + diff --git a/lib/s1ap3/asn1c/asn_SET_OF.h b/lib/s1ap3/asn1c/asn_SET_OF.h new file mode 100644 index 0000000000..882e1a47d4 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_SET_OF.h @@ -0,0 +1,72 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SET_OF_H +#define ASN_SET_OF_H + +#ifdef __cplusplus +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(decltype(*array)); \ + } +#else /* C */ +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(type *); \ + } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define ASN_SET_ADD(headptr, ptr) \ + asn_set_add((headptr), (ptr)) + +/******************************************* + * Implementation of the SET OF structure. + */ + +/* + * Add another structure into the set by its pointer. + * RETURN VALUES: + * 0 for success and -1/errno for failure. + */ +int asn_set_add(void *asn_set_of_x, void *ptr); + +/* + * Delete the element from the set by its number (base 0). + * This is a constant-time operation. The order of elements before the + * deleted ones is guaranteed, the order of elements after the deleted + * one is NOT guaranteed. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_set_del(void *asn_set_of_x, int number, int _do_free); + +/* + * Empty the contents of the set. Will free the elements, if (*free) is given. + * Will NOT free the set itself. + */ +void asn_set_empty(void *asn_set_of_x); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SET_OF(void) asn_anonymous_set_; +#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) +#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SET_OF_H */ diff --git a/lib/s1ap3/asn1c/asn_application.c b/lib/s1ap3/asn1c/asn_application.c new file mode 100644 index 0000000000..a47b75e5aa --- /dev/null +++ b/lib/s1ap3/asn1c/asn_application.c @@ -0,0 +1,472 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_app_consume_bytes_f *callback, + void *callback_key); + + +struct callback_count_bytes_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + size_t computed_size; +}; + +/* + * Encoder which just counts bytes that come through it. + */ +static int +callback_count_bytes_cb(const void *data, size_t size, void *keyp) { + struct callback_count_bytes_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret >= 0) { + key->computed_size += size; + } + + return ret; +} + +struct overrun_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct dynamic_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct callback_failure_catch_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + int callback_failed; +}; + +/* + * Encoder which doesn't stop counting bytes + * even if it reaches the end of the buffer. + */ +static int +overrun_encoder_cb(const void *data, size_t size, void *keyp) { + struct overrun_encoder_key *key = keyp; + + if(key->computed_size + size > key->buffer_size) { + /* + * Avoid accident on the next call: + * stop adding bytes to the buffer. + */ + key->buffer_size = 0; + } else { + memcpy((char *)key->buffer + key->computed_size, data, size); + } + key->computed_size += size; + + return 0; +} + +/* + * Encoder which dynamically allocates output, and continues + * to count even if allocation failed. + */ +static int +dynamic_encoder_cb(const void *data, size_t size, void *keyp) { + struct dynamic_encoder_key *key = keyp; + + if(key->buffer) { + if(key->computed_size + size >= key->buffer_size) { + void *p; + size_t new_size = key->buffer_size; + + do { + new_size *= 2; + } while(new_size <= key->computed_size + size); + + p = REALLOC(key->buffer, new_size); + if(p) { + key->buffer = p; + key->buffer_size = new_size; + } else { + FREEMEM(key->buffer); + key->buffer = 0; + key->buffer_size = 0; + key->computed_size += size; + return 0; + } + } + memcpy((char *)key->buffer + key->computed_size, data, size); + } + + key->computed_size += size; + + return 0; +} + +/* + * Encoder which help convert the application level encoder failure into EIO. + */ +static int +callback_failure_catch_cb(const void *data, size_t size, void *keyp) { + struct callback_failure_catch_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret < 0) { + key->callback_failed = 1; + } + + return ret; +} + +asn_enc_rval_t +asn_encode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { + struct callback_failure_catch_key cb_key; + asn_enc_rval_t er; + + if(!callback) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.callback_failed = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + callback_failure_catch_cb, &cb_key); + if(cb_key.callback_failed) { + assert(er.encoded == -1); + assert(errno == EBADF); + errno = EIO; + } + + return er; +} + +asn_enc_rval_t +asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + void *buffer, size_t buffer_size) { + struct overrun_encoder_key buf_key; + asn_enc_rval_t er; + + if(buffer_size > 0 && !buffer) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + buf_key.buffer = buffer; + buf_key.buffer_size = buffer_size; + buf_key.computed_size = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + overrun_encoder_cb, &buf_key); + + if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + er.encoded, buf_key.computed_size); + assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); + } + + return er; +} + +asn_encode_to_new_buffer_result_t +asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr) { + struct dynamic_encoder_key buf_key; + asn_encode_to_new_buffer_result_t res; + + buf_key.buffer_size = 16; + buf_key.buffer = MALLOC(buf_key.buffer_size); + buf_key.computed_size = 0; + + res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + dynamic_encoder_cb, &buf_key); + + if(res.result.encoded >= 0 + && (size_t)res.result.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + res.result.encoded, buf_key.computed_size); + assert(res.result.encoded < 0 + || (size_t)res.result.encoded == buf_key.computed_size); + } + + res.buffer = buf_key.buffer; + + /* 0-terminate just in case. */ + if(res.buffer) { + assert(buf_key.computed_size < buf_key.buffer_size); + ((char *)res.buffer)[buf_key.computed_size] = '\0'; + } + + return res; +} + +static asn_enc_rval_t +asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *callback, void *callback_key) { + asn_enc_rval_t er; + enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; + + (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ + + if(!td || !sptr) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + switch(syntax) { + case ATS_NONSTANDARD_PLAINTEXT: + if(td->op->print_struct) { + struct callback_count_bytes_key cb_key; + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.computed_size = 0; + if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, + &cb_key) + < 0 + || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { + errno = EBADF; /* Structure has incorrect form. */ + er.encoded = -1; + er.failed_type = td; + er.structure_ptr = sptr; + } else { + er.encoded = cb_key.computed_size; + er.failed_type = 0; + er.structure_ptr = 0; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + case ATS_RANDOM: + errno = ENOENT; /* Randomization doesn't make sense on output. */ + ASN__ENCODE_FAILED; + + case ATS_BER: + /* BER is a superset of DER. */ + /* Fall through. */ + case ATS_DER: + if(td->op->der_encoder) { + er = der_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->der_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* DER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_CER: + errno = ENOENT; /* Transfer syntax is not defined for any type. */ + ASN__ENCODE_FAILED; + +#ifdef ASN_DISABLE_OER_SUPPORT + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_OER_SUPPORT */ + case ATS_BASIC_OER: + /* CANONICAL-OER is a superset of BASIC-OER. */ + /* Fall through. */ + case ATS_CANONICAL_OER: + if(td->op->oer_encoder) { + er = oer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->oer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* OER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifdef ASN_DISABLE_PER_SUPPORT + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_PER_SUPPORT */ + case ATS_UNALIGNED_BASIC_PER: + /* CANONICAL-UPER is a superset of BASIC-UPER. */ + /* Fall through. */ + case ATS_UNALIGNED_CANONICAL_PER: + if(td->op->uper_encoder) { + er = uper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->uper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* UPER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_ALIGNED_BASIC_PER: + /* CANONICAL-APER is a superset of BASIC-APER. */ + /* Fall through. */ + case ATS_ALIGNED_CANONICAL_PER: + if(td->op->aper_encoder) { + er = aper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->aper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* APER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_PER_SUPPORT */ + + case ATS_BASIC_XER: + /* CANONICAL-XER is a superset of BASIC-XER. */ + xer_flags &= ~XER_F_CANONICAL; + xer_flags |= XER_F_BASIC; + /* Fall through. */ + case ATS_CANONICAL_XER: + if(td->op->xer_encoder) { + er = xer_encode(td, sptr, xer_flags, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->xer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* XER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + default: + errno = ENOENT; + ASN__ENCODE_FAILED; + } + + return er; +} + +asn_dec_rval_t +asn_decode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + void **sptr, const void *buffer, size_t size) { + if(!td || !td->op || !sptr || (size && !buffer)) { + ASN__DECODE_FAILED; + } + + switch(syntax) { + case ATS_CER: + case ATS_NONSTANDARD_PLAINTEXT: + default: + errno = ENOENT; + ASN__DECODE_FAILED; + + case ATS_RANDOM: + if(!td->op->random_fill) { + ASN__DECODE_FAILED; + } else { + if(asn_random_fill(td, sptr, 16000) == 0) { + asn_dec_rval_t ret = {RC_OK, 0}; + return ret; + } else { + ASN__DECODE_FAILED; + } + } + break; + + case ATS_DER: + case ATS_BER: + return ber_decode(opt_codec_ctx, td, sptr, buffer, size); + + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: +#ifdef ASN_DISABLE_OER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return oer_decode(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + return xer_decode(opt_codec_ctx, td, sptr, buffer, size); + } +} + diff --git a/lib/s1ap3/asn1c/asn_application.h b/lib/s1ap3/asn1c/asn_application.h new file mode 100644 index 0000000000..449318df15 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_application.h @@ -0,0 +1,171 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Application-level ASN.1 callbacks. + */ +#ifndef ASN_APPLICATION_H +#define ASN_APPLICATION_H + +#include "asn_system.h" /* for platform-dependent types */ +#include "asn_codecs.h" /* for ASN.1 codecs specifics */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A selection of ASN.1 Transfer Syntaxes to use with generalized + * encoders and decoders declared further in this .h file. + */ +enum asn_transfer_syntax { + /* Avoid appearance of a default transfer syntax. */ + ATS_INVALID = 0, + /* Plaintext output (not conforming to any standard), for debugging. */ + ATS_NONSTANDARD_PLAINTEXT, + /* Returns a randomly generatede structure. */ + ATS_RANDOM, + /* + * X.690: + * BER: Basic Encoding Rules. + * DER: Distinguished Encoding Rules. + * CER: Canonical Encoding Rules. + * DER and CER are more strict variants of BER. + */ + ATS_BER, + ATS_DER, + ATS_CER, /* Only decoding is supported */ + /* + * X.696: + * OER: Octet Encoding Rules. + * CANONICAL-OER is a more strict variant of BASIC-OER. + */ + ATS_BASIC_OER, + ATS_CANONICAL_OER, + /* + * X.691: + * PER: Packed Encoding Rules. + * CANONICAL-PER is a more strict variant of BASIC-PER. + * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). + */ + ATS_UNALIGNED_BASIC_PER, + ATS_UNALIGNED_CANONICAL_PER, + ATS_ALIGNED_BASIC_PER, + ATS_ALIGNED_CANONICAL_PER, + /* + * X.693: + * XER: XML Encoding Rules. + * CANONICAL-XER is a more strict variant of BASIC-XER. + */ + ATS_BASIC_XER, + ATS_CANONICAL_XER +}; + +/* + * A generic encoder for any supported transfer syntax. + * RETURN VALUES: + * The (.encoded) field of the return value is REDEFINED to mean the following: + * >=0: The computed size of the encoded data. Can exceed the (buffer_size). + * -1: Error encoding the structure. See the error code in (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate + * values at the place of failure, if at all possible. + * WARNING: The (.encoded) field of the return value can exceed the buffer_size. + * This is similar to snprintf(3) contract which might return values + * greater than the buffer size. + */ +asn_enc_rval_t asn_encode_to_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, void *buffer, size_t buffer_size); + +/* + * A variant of asn_encode_to_buffer() with automatically allocated buffer. + * RETURN VALUES: + * On success, returns a newly allocated (.buffer) containing the whole message. + * The message size is returned in (.result.encoded). + * On failure: + * (.buffer) is NULL, + * (.result.encoded) as in asn_encode_to_buffer(), + * The errno codes as in asn_encode_to_buffer(), plus the following: + * ENOMEM: Memory allocation failed due to system or internal limits. + * The user is responsible for freeing the (.buffer). + */ +typedef struct asn_encode_to_new_buffer_result_s { + void *buffer; /* NULL if failed to encode. */ + asn_enc_rval_t result; +} asn_encode_to_new_buffer_result_t; +asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode); + + +/* + * Generic type of an application-defined callback to return various + * types of data to the application. + * EXPECTED RETURN VALUES: + * -1: Failed to consume bytes. Abort the mission. + * Non-negative return values indicate success, and ignored. + */ +typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, + void *application_specific_key); + + +/* + * A generic encoder for any supported transfer syntax. + * Returns the comprehensive encoding result descriptor (see asn_codecs.h). + * RETURN VALUES: + * The negative (.encoded) field of the return values is accompanied with the + * following error codes (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * EIO: The (callback) has returned negative value during encoding. + */ +asn_enc_rval_t asn_encode( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, + asn_app_consume_bytes_f *callback, void *callback_key); + + +/* + * A generic decoder for any supported transfer syntax. + */ +asn_dec_rval_t asn_decode( + const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_decode, + void **structure_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + + +/* + * A callback of this type is called whenever constraint validation fails + * on some ASN.1 type. See "constraints.h" for more details on constraint + * validation. + * This callback specifies a descriptor of the ASN.1 type which failed + * the constraint check, as well as human readable message on what + * particular constraint has failed. + */ +typedef void (asn_app_constraint_failed_f)(void *application_specific_key, + const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, + const void *structure_which_failed_ptr, + const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); + + +#ifdef __cplusplus +} +#endif + +#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ + +#endif /* ASN_APPLICATION_H */ diff --git a/lib/s1ap3/asn1c/asn_bit_data.c b/lib/s1ap3/asn1c/asn_bit_data.c new file mode 100644 index 0000000000..fe4b89ba70 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_bit_data.c @@ -0,0 +1,333 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t * +asn_bit_data_new_contiguous(const void *data, size_t size_bits) { + size_t size_bytes = (size_bits + 7) / 8; + asn_bit_data_t *pd; + uint8_t *bytes; + + /* Get the extensions map */ + pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); + if(!pd) { + return NULL; + } + bytes = (void *)(((char *)pd) + sizeof(*pd)); + memcpy(bytes, data, size_bytes); + bytes[size_bytes] = 0; + pd->buffer = bytes; + pd->nboff = 0; + pd->nbits = size_bits; + + return pd; +} + + +char * +asn_bit_data_string(asn_bit_data_t *pd) { + static char buf[2][32]; + static int n; + n = (n+1) % 2; + snprintf(buf[n], sizeof(buf[n]), + "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE + "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", + pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, + pd->nbits - pd->nboff); + return buf[n]; +} + +void +asn_get_undo(asn_bit_data_t *pd, int nbits) { + if((ssize_t)pd->nboff < nbits) { + assert((ssize_t)pd->nboff < nbits); + } else { + pd->nboff -= nbits; + pd->moved -= nbits; + } +} + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + */ +int32_t +asn_get_few_bits(asn_bit_data_t *pd, int nbits) { + size_t off; /* Next after last bit offset */ + ssize_t nleft; /* Number of bits left in this stream */ + uint32_t accum; + const uint8_t *buf; + + if(nbits < 0) + return -1; + + nleft = pd->nbits - pd->nboff; + if(nbits > nleft) { + int32_t tailv, vhead; + if(!pd->refill || nbits > 31) return -1; + /* Accumulate unused bytes before refill */ + ASN_DEBUG("Obtain the rest %d bits (want %d)", + (int)nleft, (int)nbits); + tailv = asn_get_few_bits(pd, nleft); + if(tailv < 0) return -1; + /* Refill (replace pd contents with new data) */ + if(pd->refill(pd)) + return -1; + nbits -= nleft; + vhead = asn_get_few_bits(pd, nbits); + /* Combine the rest of previous pd with the head of new one */ + tailv = (tailv << nbits) | vhead; /* Could == -1 */ + return tailv; + } + + /* + * Normalize position indicator. + */ + if(pd->nboff >= 8) { + pd->buffer += (pd->nboff >> 3); + pd->nbits -= (pd->nboff & ~0x07); + pd->nboff &= 0x07; + } + pd->moved += nbits; + pd->nboff += nbits; + off = pd->nboff; + buf = pd->buffer; + + /* + * Extract specified number of bits. + */ + if(off <= 8) + accum = nbits ? (buf[0]) >> (8 - off) : 0; + else if(off <= 16) + accum = ((buf[0] << 8) + buf[1]) >> (16 - off); + else if(off <= 24) + accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); + else if(off <= 31) + accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) + + (buf[2] << 8) + (buf[3])) >> (32 - off); + else if(nbits <= 31) { + asn_bit_data_t tpd = *pd; + /* Here are we with our 31-bits limit plus 1..7 bits offset. */ + asn_get_undo(&tpd, nbits); + /* The number of available bits in the stream allow + * for the following operations to take place without + * invoking the ->refill() function */ + accum = asn_get_few_bits(&tpd, nbits - 24) << 24; + accum |= asn_get_few_bits(&tpd, 24); + } else { + asn_get_undo(pd, nbits); + return -1; + } + + accum &= (((uint32_t)1 << nbits) - 1); + + ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", + (int)nbits, (int)nleft, + (int)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + ((pd->buffer != NULL)?pd->buffer[0]:0), + (int)(pd->nbits - pd->nboff), + (int)accum); + + return accum; +} + +/* + * Extract a large number of bits from the specified PER data pointer. + */ +int +asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { + int32_t value; + + if(alright && (nbits & 7)) { + /* Perform right alignment of a first few bits */ + value = asn_get_few_bits(pd, nbits & 0x07); + if(value < 0) return -1; + *dst++ = value; /* value is already right-aligned */ + nbits &= ~7; + } + + while(nbits) { + if(nbits >= 24) { + value = asn_get_few_bits(pd, 24); + if(value < 0) return -1; + *(dst++) = value >> 16; + *(dst++) = value >> 8; + *(dst++) = value; + nbits -= 24; + } else { + value = asn_get_few_bits(pd, nbits); + if(value < 0) return -1; + if(nbits & 7) { /* implies left alignment */ + value <<= 8 - (nbits & 7), + nbits += 8 - (nbits & 7); + if(nbits > 24) + *dst++ = value >> 24; + } + if(nbits > 16) + *dst++ = value >> 16; + if(nbits > 8) + *dst++ = value >> 8; + *dst++ = value; + break; + } + } + + return 0; +} + +/* + * Put a small number of bits (<= 31). + */ +int +asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { + size_t off; /* Next after last bit offset */ + size_t omsk; /* Existing last byte meaningful bits mask */ + uint8_t *buf; + + if(obits <= 0 || obits >= 32) return obits ? -1 : 0; + + ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", + obits, (int)bits, (void *)po->buffer, (int)po->nboff); + + /* + * Normalize position indicator. + */ + if(po->nboff >= 8) { + po->buffer += (po->nboff >> 3); + po->nbits -= (po->nboff & ~0x07); + po->nboff &= 0x07; + } + + /* + * Flush whole-bytes output, if necessary. + */ + if(po->nboff + obits > po->nbits) { + size_t complete_bytes; + if(!po->buffer) po->buffer = po->tmpspace; + complete_bytes = (po->buffer - po->tmpspace); + ASN_DEBUG("[PER output %ld complete + %ld]", + (long)complete_bytes, (long)po->flushed_bytes); + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) + return -1; + if(po->nboff) + po->tmpspace[0] = po->buffer[0]; + po->buffer = po->tmpspace; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + } + + /* + * Now, due to sizeof(tmpspace), we are guaranteed large enough space. + */ + buf = po->buffer; + omsk = ~((1 << (8 - po->nboff)) - 1); + off = (po->nboff + obits); + + /* Clear data of debris before meaningful bits */ + bits &= (((uint32_t)1 << obits) - 1); + + ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, + (int)bits, (int)bits, + (int)po->nboff, (int)off, + buf[0], (int)(omsk&0xff), + (int)(buf[0] & omsk)); + + if(off <= 8) /* Completely within 1 byte */ + po->nboff = off, + bits <<= (8 - off), + buf[0] = (buf[0] & omsk) | bits; + else if(off <= 16) + po->nboff = off, + bits <<= (16 - off), + buf[0] = (buf[0] & omsk) | (bits >> 8), + buf[1] = bits; + else if(off <= 24) + po->nboff = off, + bits <<= (24 - off), + buf[0] = (buf[0] & omsk) | (bits >> 16), + buf[1] = bits >> 8, + buf[2] = bits; + else if(off <= 31) + po->nboff = off, + bits <<= (32 - off), + buf[0] = (buf[0] & omsk) | (bits >> 24), + buf[1] = bits >> 16, + buf[2] = bits >> 8, + buf[3] = bits; + else { + if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; + if(asn_put_few_bits(po, bits, obits - 24)) return -1; + } + + ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", + (int)bits, (int)bits, buf[0], + (long)(po->buffer - po->tmpspace)); + + return 0; +} + + +/* + * Output a large number of bits. + */ +int +asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { + + while(nbits) { + uint32_t value; + + if(nbits >= 24) { + value = (src[0] << 16) | (src[1] << 8) | src[2]; + src += 3; + nbits -= 24; + if(asn_put_few_bits(po, value, 24)) + return -1; + } else { + value = src[0]; + if(nbits > 8) + value = (value << 8) | src[1]; + if(nbits > 16) + value = (value << 8) | src[2]; + if(nbits & 0x07) + value >>= (8 - (nbits & 0x07)); + if(asn_put_few_bits(po, value, nbits)) + return -1; + break; + } + } + + return 0; +} + + +int +asn_put_aligned_flush(asn_bit_outp_t *po) { + uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); + size_t complete_bytes = + (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); + + if(unused_bits) { + po->buffer[po->nboff >> 3] &= ~0u << unused_bits; + } + + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { + return -1; + } else { + po->buffer = po->tmpspace; + po->nboff = 0; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + return 0; + } +} + diff --git a/lib/s1ap3/asn1c/asn_bit_data.h b/lib/s1ap3/asn1c/asn_bit_data.h new file mode 100644 index 0000000000..59de7af5f9 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_bit_data.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_BIT_DATA +#define ASN_BIT_DATA + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This structure describes a position inside an incoming PER bit stream. + */ +typedef struct asn_bit_data_s { + const uint8_t *buffer; /* Pointer to the octet stream */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits in the stream */ + size_t moved; /* Number of bits moved through this bit stream */ + int (*refill)(struct asn_bit_data_s *); + void *refill_key; +} asn_bit_data_t; + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); + +/* Undo the immediately preceeding "get_few_bits" operation */ +void asn_get_undo(asn_bit_data_t *, int get_nbits); + +/* + * Extract a large number of bits from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, + int get_nbits); + +/* Non-thread-safe debugging function, don't use it */ +char *asn_bit_data_string(asn_bit_data_t *); + +/* + * This structure supports forming bit output. + */ +typedef struct asn_bit_outp_s { + uint8_t *buffer; /* Pointer into the (tmpspace) */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits left in (tmpspace) */ + uint8_t tmpspace[32]; /* Preliminary storage to hold data */ + int (*output)(const void *data, size_t size, void *op_key); + void *op_key; /* Key for (output) data callback */ + size_t flushed_bytes; /* Bytes already flushed through (output) */ +} asn_bit_outp_t; + +/* Output a small number of bits (<= 31) */ +int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); + +/* Output a large number of bits */ +int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); + +/* + * Flush whole bytes (0 or more) through (outper) member. + * The least significant bits which are not used are guaranteed to be set to 0. + * Returns -1 if callback returns -1. Otherwise, 0. + */ +int asn_put_aligned_flush(asn_bit_outp_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_BIT_DATA */ diff --git a/lib/s1ap3/asn1c/asn_codecs.h b/lib/s1ap3/asn1c/asn_codecs.h new file mode 100644 index 0000000000..e75c2709cd --- /dev/null +++ b/lib/s1ap3/asn1c/asn_codecs.h @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_H +#define ASN_CODECS_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * This structure defines a set of parameters that may be passed + * to every ASN.1 encoder or decoder function. + * WARNING: if max_stack_size member is set, and you are calling the + * function pointers of the asn_TYPE_descriptor_t directly, + * this structure must be ALLOCATED ON THE STACK! + * If you can't always satisfy this requirement, use ber_decode(), + * xer_decode() and uper_decode() functions instead. + */ +typedef struct asn_codec_ctx_s { + /* + * Limit the decoder routines to use no (much) more stack than a given + * number of bytes. Most of decoders are stack-based, and this + * would protect against stack overflows if the number of nested + * encodings is high. + * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, + * and are safe from this kind of overflow. + * A value from getrlimit(RLIMIT_STACK) may be used to initialize + * this variable. Be careful in multithreaded environments, as the + * stack size is rather limited. + */ + size_t max_stack_size; /* 0 disables stack bounds checking */ +} asn_codec_ctx_t; + +/* + * Type of the return value of the encoding functions (der_encode, xer_encode). + */ +typedef struct asn_enc_rval_s { + /* + * Number of bytes encoded. + * -1 indicates failure to encode the structure. + * In this case, the members below this one are meaningful. + */ + ssize_t encoded; + + /* + * Members meaningful when (encoded == -1), for post mortem analysis. + */ + + /* Type which cannot be encoded */ + const struct asn_TYPE_descriptor_s *failed_type; + + /* Pointer to the structure of that type */ + const void *structure_ptr; +} asn_enc_rval_t; +#define ASN__ENCODE_FAILED do { \ + asn_enc_rval_t tmp_error; \ + tmp_error.encoded = -1; \ + tmp_error.failed_type = td; \ + tmp_error.structure_ptr = sptr; \ + ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__ENCODED_OK(rval) do { \ + rval.structure_ptr = 0; \ + rval.failed_type = 0; \ + return rval; \ +} while(0) + +/* + * Type of the return value of the decoding functions (ber_decode, xer_decode) + * + * Please note that the number of consumed bytes is ALWAYS meaningful, + * even if code==RC_FAIL. This is to indicate the number of successfully + * decoded bytes, hence providing a possibility to fail with more diagnostics + * (i.e., print the offending remainder of the buffer). + */ +enum asn_dec_rval_code_e { + RC_OK, /* Decoded successfully */ + RC_WMORE, /* More data expected, call again */ + RC_FAIL /* Failure to decode data */ +}; +typedef struct asn_dec_rval_s { + enum asn_dec_rval_code_e code; /* Result code */ + size_t consumed; /* Number of bytes consumed */ +} asn_dec_rval_t; +#define ASN__DECODE_FAILED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_FAIL; \ + tmp_error.consumed = 0; \ + ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__DECODE_STARVED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_WMORE; \ + tmp_error.consumed = 0; \ + return tmp_error; \ +} while(0) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_H */ diff --git a/lib/s1ap3/asn1c/asn_codecs_prim.c b/lib/s1ap3/asn1c/asn_codecs_prim.c new file mode 100644 index 0000000000..78448a8ecb --- /dev/null +++ b/lib/s1ap3/asn1c/asn_codecs_prim.c @@ -0,0 +1,317 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode an always-primitive type. + */ +asn_dec_rval_t +ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval; + ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ + + /* + * If the structure is not there, allocate it. + */ + if(st == NULL) { + st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) ASN__DECODE_FAILED; + *sptr = (void *)st; + } + + ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", + td->name, tag_mode); + + /* + * Check tags and extract value length. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + st->size = (int)length; + /* The following better be optimized away. */ + if(sizeof(st->size) != sizeof(length) + && (ber_tlv_len_t)st->size != length) { + st->size = 0; + ASN__DECODE_FAILED; + } + + st->buf = (uint8_t *)MALLOC(length + 1); + if(!st->buf) { + st->size = 0; + ASN__DECODE_FAILED; + } + + memcpy(st->buf, buf_ptr, length); + st->buf[length] = '\0'; /* Just in case */ + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s", + (long)rval.consumed, + (long)length, td->name); + + return rval; +} + +/* + * Encode an always-primitive type using DER. + */ +asn_enc_rval_t +der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval; + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + + ASN_DEBUG("%s %s as a primitive type (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, + cb, app_key); + ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb && st->buf) { + if(cb(st->buf, st->size, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } else { + assert(st->buf || st->size == 0); + } + + erval.encoded += st->size; + ASN__ENCODED_OK(erval); +} + +void +ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as a primitive type", td->name); + + if(st->buf) + FREEMEM(st->buf); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); + break; + } +} + + +/* + * Local internal type passed around as an argument. + */ +struct xdp_arg_s { + const asn_TYPE_descriptor_t *type_descriptor; + void *struct_key; + xer_primitive_body_decoder_f *prim_body_decoder; + int decoded_something; + int want_more; +}; + +/* + * Since some kinds of primitive values can be encoded using value-specific + * tags (, , etc), the primitive decoder must + * be supplied with such tags to parse them as needed. + */ +static int +xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + + /* + * The chunk_buf is guaranteed to start at '<'. + */ + assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); + + /* + * Decoding was performed once already. Prohibit doing it again. + */ + if(arg->decoded_something) + return -1; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return 0; + } + + return -1; +} + +static ssize_t +xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + size_t lead_wsp_size; + + if(arg->decoded_something) { + if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { + /* + * Example: + * "123 " + * ^- chunk_buf position. + */ + return chunk_size; + } + /* + * Decoding was done once already. Prohibit doing it again. + */ + return -1; + } + + if(!have_more) { + /* + * If we've received something like "1", we can't really + * tell whether it is really `1` or `123`, until we know + * that there is no more data coming. + * The have_more argument will be set to 1 once something + * like this is available to the caller of this callback: + * "1want_more = 1; + return -1; + } + + lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); + chunk_buf = (const char *)chunk_buf + lead_wsp_size; + chunk_size -= lead_wsp_size; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return lead_wsp_size + chunk_size; + } + + return -1; +} + + +asn_dec_rval_t +xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + size_t struct_size, const char *opt_mname, + const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder) { + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t s_ctx; + struct xdp_arg_s s_arg; + asn_dec_rval_t rc; + + /* + * Create the structure if does not exist. + */ + if(!*sptr) { + *sptr = CALLOC(1, struct_size); + if(!*sptr) ASN__DECODE_FAILED; + } + + memset(&s_ctx, 0, sizeof(s_ctx)); + s_arg.type_descriptor = td; + s_arg.struct_key = *sptr; + s_arg.prim_body_decoder = prim_body_decoder; + s_arg.decoded_something = 0; + s_arg.want_more = 0; + + rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, + xml_tag, buf_ptr, size, + xer_decode__unexpected_tag, xer_decode__primitive_body); + switch(rc.code) { + case RC_OK: + if(!s_arg.decoded_something) { + char ch; + ASN_DEBUG("Primitive body is not recognized, " + "supplying empty one"); + /* + * Decoding opportunity has come and gone. + * Where's the result? + * Try to feed with empty body, see if it eats it. + */ + if(prim_body_decoder(s_arg.type_descriptor, + s_arg.struct_key, &ch, 0) + != XPBD_BODY_CONSUMED) { + /* + * This decoder does not like empty stuff. + */ + ASN__DECODE_FAILED; + } + } + break; + case RC_WMORE: + /* + * Redo the whole thing later. + * We don't have a context to save intermediate parsing state. + */ + rc.consumed = 0; + break; + case RC_FAIL: + rc.consumed = 0; + if(s_arg.want_more) + rc.code = RC_WMORE; + else + ASN__DECODE_FAILED; + break; + } + return rc; +} + diff --git a/lib/s1ap3/asn1c/asn_codecs_prim.h b/lib/s1ap3/asn1c/asn_codecs_prim.h new file mode 100644 index 0000000000..fbc557648d --- /dev/null +++ b/lib/s1ap3/asn1c/asn_codecs_prim.h @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_PRIM_H +#define ASN_CODECS_PRIM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ASN__PRIMITIVE_TYPE_s { + uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ + size_t size; /* Size of the buffer */ +} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ + +asn_struct_free_f ASN__PRIMITIVE_TYPE_free; +ber_type_decoder_f ber_decode_primitive; +der_type_encoder_f der_encode_primitive; + +/* + * A callback specification for the xer_decode_primitive() function below. + */ +enum xer_pbd_rval { + XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ + XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ + XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ + XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ + XPBD_BODY_CONSUMED /* Body is recognized and consumed */ +}; +typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( + const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, + size_t chunk_size); + +/* + * Specific function to decode simple primitive types. + * Also see xer_decode_general() in xer_decoder.h + */ +asn_dec_rval_t xer_decode_primitive( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_PRIM_H */ diff --git a/lib/s1ap3/asn1c/asn_internal.c b/lib/s1ap3/asn1c/asn_internal.c new file mode 100644 index 0000000000..91e537c488 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_internal.c @@ -0,0 +1,47 @@ +#include + +ssize_t +asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, + const char *fmt, ...) { + char scratch[64]; + char *buf = scratch; + size_t buf_size = sizeof(scratch); + int wrote; + int cb_ret; + + do { + va_list args; + va_start(args, fmt); + + wrote = vsnprintf(buf, buf_size, fmt, args); + if(wrote < (ssize_t)buf_size) { + if(wrote < 0) { + if(buf != scratch) FREEMEM(buf); + return -1; + } + break; + } + + buf_size <<= 1; + if(buf == scratch) { + buf = MALLOC(buf_size); + if(!buf) return -1; + } else { + void *p = REALLOC(buf, buf_size); + if(!p) { + FREEMEM(buf); + return -1; + } + buf = p; + } + } while(1); + + cb_ret = cb(buf, wrote, key); + if(buf != scratch) FREEMEM(buf); + if(cb_ret < 0) { + return -1; + } + + return wrote; +} + diff --git a/lib/s1ap3/asn1c/asn_internal.h b/lib/s1ap3/asn1c/asn_internal.h new file mode 100644 index 0000000000..cfb8fa94bb --- /dev/null +++ b/lib/s1ap3/asn1c/asn_internal.h @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Declarations internally useful for the ASN.1 support code. + */ +#ifndef ASN_INTERNAL_H +#define ASN_INTERNAL_H +#define __EXTENSIONS__ /* for Sun */ + +#include "asn_application.h" /* Application-visible API */ + +#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ +#include /* for assert() macro */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Environment version might be used to avoid running with the old library */ +#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ +int get_asn1c_environment_version(void); /* Run-time version */ + +#if 0 /* modified by acetcom */ +#define CALLOC(nmemb, size) calloc(nmemb, size) +#define MALLOC(size) malloc(size) +#define REALLOC(oldptr, size) realloc(oldptr, size) +#define FREEMEM(ptr) free(ptr) +#else +#include "core_pkbuf.h" +#define CALLOC(nmemb, size) core_calloc(nmemb, size) +#define MALLOC(size) core_malloc(size) +#define REALLOC(oldptr, size) core_realloc(oldptr, size) +#define FREEMEM(ptr) CORE_FREE(ptr) +#endif + +#define asn_debug_indent 0 +#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) + +#ifdef EMIT_ASN_DEBUG +#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" +#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG +#endif + +/* + * A macro for debugging the ASN.1 internals. + * You may enable or override it. + */ +#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ +#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ +#if __STDC_VERSION__ >= 199901L +#ifdef ASN_THREAD_SAFE +/* Thread safety requires sacrifice in output indentation: + * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ +#else /* !ASN_THREAD_SAFE */ +#undef ASN_DEBUG_INDENT_ADD +#undef asn_debug_indent +int asn_debug_indent; +#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) +#endif /* ASN_THREAD_SAFE */ +#define ASN_DEBUG(fmt, args...) do { \ + int adi = asn_debug_indent; \ + while(adi--) fprintf(stderr, " "); \ + fprintf(stderr, fmt, ##args); \ + fprintf(stderr, " (%s:%d)\n", \ + __FILE__, __LINE__); \ + } while(0) +#else /* !C99 */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +#define ASN_DEBUG ASN_DEBUG_f +#endif /* C99 */ +#else /* ASN_EMIT_DEBUG != 1 */ +#if __STDC_VERSION__ >= 199901L +#define ASN_DEBUG(...) do{}while(0) +#else /* not C99 */ +static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } +#endif /* C99 or better */ +#endif /* ASN_EMIT_DEBUG */ +#endif /* ASN_DEBUG */ + +/* + * Print to a callback. + * The callback is expected to return negative values on error. + * 0 and positive values are treated as success. + * RETURN VALUES: + * -1: Failed to format or invoke the callback. + * >0: Size of the data that got delivered to the callback. + */ +ssize_t CC_PRINTFLIKE(3, 4) +asn__format_to_callback( + int (*callback)(const void *, size_t, void *key), void *key, + const char *fmt, ...); + +/* + * Invoke the application-supplied callback and fail, if something is wrong. + */ +#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) +#define ASN__E_CALLBACK(size, foo) \ + do { \ + if(foo) goto cb_failed; \ + er.encoded += (size); \ + } while(0) +#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) +#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ + ASN__E_CALLBACK((size1) + (size2), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) +#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ + ASN__E_CALLBACK((size1) + (size2) + (size3), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ + || ASN__E_cbc(buf3, size3)) + +#define ASN__TEXT_INDENT(nl, level) \ + do { \ + int tmp_level = (level); \ + int tmp_nl = ((nl) != 0); \ + int tmp_i; \ + if(tmp_nl) ASN__CALLBACK("\n", 1); \ + if(tmp_level < 0) tmp_level = 0; \ + for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ + } while(0) + +#define _i_INDENT(nl) do { \ + int tmp_i; \ + if((nl) && cb("\n", 1, app_key) < 0) \ + return -1; \ + for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ + if(cb(" ", 4, app_key) < 0) \ + return -1; \ + } while(0) + +/* + * Check stack against overflow, if limit is set. + */ +#define ASN__DEFAULT_STACK_MAX (30000) +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + if(ctx && ctx->max_stack_size) { + + /* ctx MUST be allocated on the stack */ + ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); + if(usedstack > 0) usedstack = -usedstack; /* grows up! */ + + /* double negative required to avoid int wrap-around */ + if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { + ASN_DEBUG("Stack limit %ld reached", + (long)ctx->max_stack_size); + return -1; + } + } + return 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_INTERNAL_H */ diff --git a/lib/s1ap3/asn1c/asn_ioc.h b/lib/s1ap3/asn1c/asn_ioc.h new file mode 100644 index 0000000000..7de210ee00 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_ioc.h @@ -0,0 +1,51 @@ +/* + * Run-time support for Information Object Classes. + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_IOC_H +#define ASN_IOC_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; +struct asn_ioc_cell_s; + +/* + * X.681, #13 + */ +typedef struct asn_ioc_set_s { + size_t rows_count; + size_t columns_count; + const struct asn_ioc_cell_s *rows; +} asn_ioc_set_t; + + +typedef struct asn_ioc_cell_s { + const char *field_name; /* Is equal to corresponding column_name */ + enum { + aioc__undefined = 0, + aioc__value, + aioc__type, + aioc__open_type, + } cell_kind; + struct asn_TYPE_descriptor_s *type_descriptor; + const void *value_sptr; + struct { + size_t types_count; + struct { + unsigned choice_position; + } *types; + } open_type; +} asn_ioc_cell_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_IOC_H */ diff --git a/lib/s1ap3/asn1c/asn_random_fill.c b/lib/s1ap3/asn1c/asn_random_fill.c new file mode 100644 index 0000000000..819cf700ec --- /dev/null +++ b/lib/s1ap3/asn1c/asn_random_fill.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int +asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t length) { + + if(td && td->op->random_fill) { + asn_random_fill_result_t res = + td->op->random_fill(td, struct_ptr, 0, length); + return (res.code == ARFILL_OK) ? 0 : -1; + } else { + return -1; + } +} + +static uintmax_t +asn__intmax_range(intmax_t lb, intmax_t ub) { + assert(lb <= ub); + if((ub < 0) == (lb < 0)) { + return ub - lb; + } else if(lb < 0) { + return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return 0; + } +} + +intmax_t +asn_random_between(intmax_t lb, intmax_t rb) { + if(lb == rb) { + return lb; + } else { + const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); + uintmax_t range = asn__intmax_range(lb, rb); + uintmax_t value = 0; + uintmax_t got_entropy = 0; + + assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */ + assert(range < intmax_max); + + for(; got_entropy < range;) { + got_entropy = (got_entropy << 24) | 0xffffff; + value = (value << 24) | (random() % 0xffffff); + } + + return lb + (intmax_t)(value % (range + 1)); + } +} diff --git a/lib/s1ap3/asn1c/asn_random_fill.h b/lib/s1ap3/asn1c/asn_random_fill.h new file mode 100644 index 0000000000..47f9b8af01 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_random_fill.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_RANDOM_FILL +#define ASN_RANDOM_FILL + +/* Forward declarations */ +struct asn_TYPE_descriptor_s; +struct asn_encoding_constraints_s; + +/* + * Initialize a structure with random data according to the type specification + * and optional member constraints. + * ARGUMENTS: + * (max_length) - See (approx_max_length_limit). + * (memb_constraints) - Member constraints, if exist. + * The type can be constrained differently according + * to PER and OER specifications, so we find a value + * at the intersection of these constraints. + * In case the return differs from ARFILL_OK, the (struct_ptr) contents + * and (current_length) value remain in their original state. + */ +typedef struct asn_random_fill_result_s { + enum { + ARFILL_FAILED = -1, /* System error (memory?) */ + ARFILL_OK = 0, /* Initialization succeeded */ + ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ + } code; + size_t length; /* Approximate number of bytes created. */ +} asn_random_fill_result_t; +typedef asn_random_fill_result_t(asn_random_fill_f)( + const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + const struct asn_encoding_constraints_s *memb_constraints, + size_t max_length); + +/* + * Returns 0 if the structure was properly initialized, -1 otherwise. + * The (approx_max_length_limit) specifies the approximate limit of the + * resulting structure in units closely resembling bytes. The actual result + * might be several times larger or smaller than the length limit. + */ +int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t approx_max_length_limit); + +/* + * Returns a random number between min and max. + */ +intmax_t asn_random_between(intmax_t min, intmax_t max); + +#endif /* ASN_RANDOM_FILL */ diff --git a/lib/s1ap3/asn1c/asn_system.h b/lib/s1ap3/asn1c/asn_system.h new file mode 100644 index 0000000000..fa8cf11657 --- /dev/null +++ b/lib/s1ap3/asn1c/asn_system.h @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Miscellaneous system-dependent types. + */ +#ifndef ASN_SYSTEM_H +#define ASN_SYSTEM_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE 1 +#endif + +#ifndef _BSD_SOURCE +#define _BSD_SOURCE /* for snprintf() on some linux systems */ +#endif + +#include /* For snprintf(3) */ +#include /* For *alloc(3) */ +#include /* For memcpy(3) */ +#include /* For size_t */ +#include /* For LONG_MAX */ +#include /* For va_start */ +#include /* for offsetof and ptrdiff_t */ + +#ifdef _WIN32 + +#include +#define snprintf _snprintf +#define vsnprintf _vsnprintf + +/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ +#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ + | (((l) << 8) & 0xff0000) \ + | (((l) >> 8) & 0xff00) \ + | ((l >> 24) & 0xff)) + +#ifdef _MSC_VER /* MSVS.Net */ +#ifndef __cplusplus +#define inline __inline +#endif +#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ +#define ssize_t SSIZE_T +#if _MSC_VER < 1600 +typedef char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +#else /* _MSC_VER >= 1600 */ +#include +#endif /* _MSC_VER < 1600 */ +#endif /* ASSUMESTDTYPES */ +#define WIN32_LEAN_AND_MEAN +#include +#include +#define isnan _isnan +#define finite _finite +#define copysign _copysign +#define ilogb _logb +#else /* !_MSC_VER */ +#include +#endif /* _MSC_VER */ + +#else /* !_WIN32 */ + +#if defined(__vxworks) +#include +#else /* !defined(__vxworks) */ + +#include /* C99 specifies this file */ +#include /* for ntohl() */ +#define sys_ntohl(foo) ntohl(foo) +#endif /* defined(__vxworks) */ + +#endif /* _WIN32 */ + +#if __GNUC__ >= 3 || defined(__clang__) +#define CC_ATTRIBUTE(attr) __attribute__((attr)) +#else +#define CC_ATTRIBUTE(attr) +#endif +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) +#define CC_NOTUSED CC_ATTRIBUTE(unused) +#ifndef CC_ATTR_NO_SANITIZE +#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) +#endif + +/* Figure out if thread safety is requested */ +#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) +#define ASN_THREAD_SAFE +#endif /* Thread safety */ + +#ifndef offsetof /* If not defined by */ +#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) +#endif /* offsetof */ + +#ifndef MIN /* Suitable for comparing primitive types (integers) */ +#if defined(__GNUC__) +#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ + ((_a)<(_b)?(_a):(_b)); }) +#else /* !__GNUC__ */ +#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ +#endif /* __GNUC__ */ +#endif /* MIN */ + +#if __STDC_VERSION__ >= 199901L +#ifndef SIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#endif + +#ifndef RSIZE_MAX /* C11, Annex K */ +#define RSIZE_MAX (SIZE_MAX >> 1) +#endif +#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif +#else /* Old compiler */ +#undef SIZE_MAX +#undef RSIZE_MAX +#undef RSSIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#define RSIZE_MAX (SIZE_MAX >> 1) +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif + +#if __STDC_VERSION__ >= 199901L +#define ASN_PRI_SIZE "zu" +#define ASN_PRI_SSIZE "zd" +#define ASN_PRIuMAX PRIuMAX +#define ASN_PRIdMAX PRIdMAX +#else +#define ASN_PRI_SIZE "lu" +#define ASN_PRI_SSIZE "ld" +#if LLONG_MAX > LONG_MAX +#define ASN_PRIuMAX "llu" +#define ASN_PRIdMAX "lld" +#else +#define ASN_PRIuMAX "lu" +#define ASN_PRIdMAX "ld" +#endif +#endif + +#endif /* ASN_SYSTEM_H */ diff --git a/lib/s1ap3/asn1c/ber_decoder.c b/lib/s1ap3/asn1c/ber_decoder.c new file mode 100644 index 0000000000..75d6016950 --- /dev/null +++ b/lib/s1ap3/asn1c/ber_decoder.c @@ -0,0 +1,283 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + if(opt_ctx) opt_ctx->step = step; /* Save context */ \ + if(_code == RC_OK || opt_ctx) \ + rval.consumed = consumed_myself; \ + else \ + rval.consumed = 0; /* Context-free */ \ + return rval; \ + } while(0) + +/* + * The BER decoder of any type. + */ +asn_dec_rval_t +ber_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + ptr, size, /* Buffer and its size */ + 0 /* Default tag mode is 0 */ + ); +} + +/* + * Check the set of >> tags matches the definition. + */ +asn_dec_rval_t +ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, + const void *ptr, size_t size, int tag_mode, int last_tag_form, + ber_tlv_len_t *last_length, int *opt_tlv_form) { + ssize_t consumed_myself = 0; + ssize_t tag_len; + ssize_t len_len; + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_len_t limit_len = -1; + int expect_00_terminators = 0; + int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ + int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ + int tagno; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + RETURN(RC_FAIL); + + /* + * So what does all this implicit skip stuff mean? + * Imagine two types, + * A ::= [5] IMPLICIT T + * B ::= [2] EXPLICIT T + * Where T is defined as + * T ::= [4] IMPLICIT SEQUENCE { ... } + * + * Let's say, we are starting to decode type A, given the + * following TLV stream: <5> <0>. What does this mean? + * It means that the type A contains type T which is, + * in turn, empty. + * Remember though, that we are still in A. We cannot + * just pass control to the type T decoder. Why? Because + * the type T decoder expects <4> <0>, not <5> <0>. + * So, we must make sure we are going to receive <5> while + * still in A, then pass control to the T decoder, indicating + * that the tag <4> was implicitly skipped. The decoder of T + * hence will be prepared to treat <4> as valid tag, and decode + * it appropriately. + */ + + tagno = step /* Continuing where left previously */ + + (tag_mode==1?-1:0) + ; + ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", + td->name, (long)size, tag_mode, step, tagno); + /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ + + if(tag_mode == 0 && tagno == (int)td->tags_count) { + /* + * This must be the _untagged_ ANY type, + * which outermost tag isn't known in advance. + * Fetch the tag and length separately. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + ASN_DEBUG("Advancing %ld in ANY case", + (long)(tag_len + len_len)); + ADVANCE(tag_len + len_len); + } else { + assert(tagno < (int)td->tags_count); /* At least one loop */ + } + for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { + + /* + * Fetch and process T from TLV. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + ASN_DEBUG("Fetching tag from {%p,%ld}: " + "len %ld, step %d, tagno %d got %s", + ptr, (long)size, + (long)tag_len, step, tagno, + ber_tlv_tag_string(tlv_tag)); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + + /* + * If {I}, don't check anything. + * If {I,B,C}, check B and C unless we're at I. + */ + if(tag_mode != 0 && step == 0) { + /* + * We don't expect tag to match here. + * It's just because we don't know how the tag + * is supposed to look like. + */ + } else { + assert(tagno >= 0); /* Guaranteed by the code above */ + if(tlv_tag != td->tags[tagno]) { + /* + * Unexpected tag. Too bad. + */ + ASN_DEBUG("Expected: %s, " + "expectation failed (tn=%d, tm=%d)", + ber_tlv_tag_string(td->tags[tagno]), + tagno, tag_mode + ); + RETURN(RC_FAIL); + } + } + + /* + * Attention: if there are more tags expected, + * ensure that the current tag is presented + * in constructed form (it contains other tags!). + * If this one is the last one, check that the tag form + * matches the one given in descriptor. + */ + if(tagno < ((int)td->tags_count - 1)) { + if(tlv_constr == 0) { + ASN_DEBUG("tlv_constr = %d, expfail", + tlv_constr); + RETURN(RC_FAIL); + } + } else { + if(last_tag_form != tlv_constr + && last_tag_form != -1) { + ASN_DEBUG("last_tag_form %d != %d", + last_tag_form, tlv_constr); + RETURN(RC_FAIL); + } + } + + /* + * Fetch and process L from TLV. + */ + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + ASN_DEBUG("Fetching len = %ld", (long)len_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + /* + * FIXME + * As of today, the chain of tags + * must either contain several indefinite length TLVs, + * or several definite length ones. + * No mixing is allowed. + */ + if(tlv_len == -1) { + /* + * Indefinite length. + */ + if(limit_len == -1) { + expect_00_terminators++; + } else { + ASN_DEBUG("Unexpected indefinite length " + "in a chain of definite lengths"); + RETURN(RC_FAIL); + } + ADVANCE(tag_len + len_len); + continue; + } else { + if(expect_00_terminators) { + ASN_DEBUG("Unexpected definite length " + "in a chain of indefinite lengths"); + RETURN(RC_FAIL); + } + } + + /* + * Check that multiple TLVs specify ever decreasing length, + * which is consistent. + */ + if(limit_len == -1) { + limit_len = tlv_len + tag_len + len_len; + if(limit_len < 0) { + /* Too great tlv_len value? */ + RETURN(RC_FAIL); + } + } else if(limit_len != tlv_len + tag_len + len_len) { + /* + * Inner TLV specifies length which is inconsistent + * with the outer TLV's length value. + */ + ASN_DEBUG("Outer TLV is %ld and inner is %ld", + (long)limit_len, (long)tlv_len); + RETURN(RC_FAIL); + } + + ADVANCE(tag_len + len_len); + + limit_len -= (tag_len + len_len); + if((ssize_t)size > limit_len) { + /* + * Make sure that we won't consume more bytes + * from the parent frame than the inferred limit. + */ + size = limit_len; + } + } + + if(opt_tlv_form) + *opt_tlv_form = tlv_constr; + if(expect_00_terminators) + *last_length = -expect_00_terminators; + else + *last_length = tlv_len; + + RETURN(RC_OK); +} diff --git a/lib/s1ap3/asn1c/ber_decoder.h b/lib/s1ap3/asn1c/ber_decoder.h new file mode 100644 index 0000000000..1ac2a5ef0d --- /dev/null +++ b/lib/s1ap3/asn1c/ber_decoder.h @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_DECODER_H_ +#define _BER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The BER decoder of any type. + * This function may be invoked directly from the application. + * Decodes BER, DER and CER data (DER and CER are different subsets of BER). + * + * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding + * which is compliant with ber_decode(). + */ +asn_dec_rval_t ber_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(ber_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const void *buf_ptr, size_t size, int tag_mode); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Check that all tags correspond to the type definition (as given in head). + * On return, last_length would contain either a non-negative length of the + * value part of the last TLV, or the negative number of expected + * "end of content" sequences. The number may only be negative if the + * head->last_tag_form is non-zero. + */ +asn_dec_rval_t ber_check_tags( + const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ + const struct asn_TYPE_descriptor_s *type_descriptor, + asn_struct_ctx_t *opt_ctx, /* saved decoding context */ + const void *ptr, size_t size, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {-1,0:1}: any, primitive, constr */ + ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_DECODER_H_ */ diff --git a/lib/s1ap3/asn1c/ber_tlv_length.c b/lib/s1ap3/asn1c/ber_tlv_length.c new file mode 100644 index 0000000000..0a0deec1ae --- /dev/null +++ b/lib/s1ap3/asn1c/ber_tlv_length.c @@ -0,0 +1,168 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r) { + const uint8_t *buf = (const uint8_t *)bufptr; + unsigned oct; + + if(size == 0) + return 0; /* Want more */ + + oct = *(const uint8_t *)buf; + if((oct & 0x80) == 0) { + /* + * Short definite length. + */ + *len_r = oct; /* & 0x7F */ + return 1; + } else { + ber_tlv_len_t len; + size_t skipped; + + if(_is_constructed && oct == 0x80) { + *len_r = -1; /* Indefinite length */ + return 1; + } + + if(oct == 0xff) { + /* Reserved in standard for future use. */ + return -1; + } + + oct &= 0x7F; /* Leave only the 7 LS bits */ + for(len = 0, buf++, skipped = 1; + oct && (++skipped <= size); buf++, oct--) { + + /* Verify that we won't overflow. */ + if(!(len >> ((8 * sizeof(len)) - (8+1)))) { + len = (len << 8) | *buf; + } else { + /* Too large length value. */ + return -1; + } + } + + if(oct == 0) { + if(len < 0 || len > RSSIZE_MAX) { + /* Length value out of sane range. */ + return -1; + } + + *len_r = len; + return skipped; + } + + return 0; /* Want more */ + } + +} + +ssize_t +ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, + int _is_constructed, const void *ptr, size_t size) { + ber_tlv_len_t vlen; /* Length of V in TLV */ + ssize_t tl; /* Length of L in TLV */ + ssize_t ll; /* Length of L in TLV */ + size_t skip; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + return -1; + + /* + * Determine the size of L in TLV. + */ + ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); + if(ll <= 0) return ll; + + /* + * Definite length. + */ + if(vlen >= 0) { + skip = ll + vlen; + if(skip > size) + return 0; /* Want more */ + return skip; + } + + /* + * Indefinite length! + */ + ASN_DEBUG("Skipping indefinite length"); + for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { + ber_tlv_tag_t tag; + + /* Fetch the tag */ + tl = ber_fetch_tag(ptr, size, &tag); + if(tl <= 0) return tl; + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + ((const char *)ptr) + tl, size - tl); + if(ll <= 0) return ll; + + skip += tl + ll; + + /* + * This may be the end of the indefinite length structure, + * two consecutive 0 octets. + * Check if it is true. + */ + if(((const uint8_t *)ptr)[0] == 0 + && ((const uint8_t *)ptr)[1] == 0) + return skip; + + ptr = ((const char *)ptr) + tl + ll; + size -= tl + ll; + } + + /* UNREACHABLE */ +} + +size_t +der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { + size_t required_size; /* Size of len encoding */ + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + int i; + + if(len <= 127) { + /* Encoded in 1 octet */ + if(size) *buf = (uint8_t)len; + return 1; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { + if(len >> i) + required_size++; + else + break; + } + + if(size <= required_size) + return required_size + 1; + + *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ + + /* + * Produce the len encoding, space permitting. + */ + end = buf + required_size; + for(i -= 8; buf < end; i -= 8, buf++) + *buf = (uint8_t)(len >> i); + + return required_size + 1; +} + diff --git a/lib/s1ap3/asn1c/ber_tlv_length.h b/lib/s1ap3/asn1c/ber_tlv_length.h new file mode 100644 index 0000000000..d1e4d48dd7 --- /dev/null +++ b/lib/s1ap3/asn1c/ber_tlv_length.h @@ -0,0 +1,50 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_LENGTH_H_ +#define _BER_TLV_LENGTH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ssize_t ber_tlv_len_t; + +/* + * This function tries to fetch the length of the BER TLV value and place it + * in *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + * On return with >0, len_r is constrained as -1..MAX, where -1 mean + * that the value is of indefinite length. + */ +ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r); + +/* + * This function expects bufptr to be positioned over L in TLV. + * It returns number of bytes occupied by L and V together, suitable + * for skipping. The function properly handles indefinite length. + * RETURN VALUES: + * Standard {-1,0,>0} convention. + */ +ssize_t ber_skip_length( + const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ + int _is_constructed, const void *bufptr, size_t size); + +/* + * This function serializes the length (L from TLV) in DER format. + * It always returns number of bytes necessary to represent the length, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/lib/s1ap3/asn1c/ber_tlv_tag.c b/lib/s1ap3/asn1c/ber_tlv_tag.c new file mode 100644 index 0000000000..4a7d732f8b --- /dev/null +++ b/lib/s1ap3/asn1c/ber_tlv_tag.c @@ -0,0 +1,144 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val &= 0x1F) != 0x1F) { + /* + * Simple form: everything encoded in a single octet. + * Tag Class is encoded using two least significant bits. + */ + *tag_r = (val << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; + skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accomodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + + +ssize_t +ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { + char buf[sizeof("[APPLICATION ]") + 32]; + ssize_t ret; + + ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + if(ret >= (ssize_t)sizeof(buf) || ret < 2) { + errno = EPERM; + return -1; + } + + return fwrite(buf, 1, ret, f); +} + +ssize_t +ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { + const char *type = 0; + int ret; + + switch(tag & 0x3) { + case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; + case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; + case ASN_TAG_CLASS_CONTEXT: type = ""; break; + case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; + } + + ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); + if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ + + return ret; +} + +char * +ber_tlv_tag_string(ber_tlv_tag_t tag) { + static char buf[sizeof("[APPLICATION ]") + 32]; + + (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + + return buf; +} + + +size_t +ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { + int tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + size_t required_size; + size_t i; + + if(tval <= 30) { + /* Encoded in 1 octet */ + if(size) buf[0] = (tclass << 6) | tval; + return 1; + } else if(size) { + *buf++ = (tclass << 6) | 0x1F; + size--; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { + if(tval >> i) + required_size++; + else + break; + } + + if(size < required_size) + return required_size + 1; + + /* + * Fill in the buffer, space permitting. + */ + end = buf + required_size - 1; + for(i -= 7; buf < end; i -= 7, buf++) + *buf = 0x80 | ((tval >> i) & 0x7F); + *buf = (tval & 0x7F); /* Last octet without high bit */ + + return required_size + 1; +} + diff --git a/lib/s1ap3/asn1c/ber_tlv_tag.h b/lib/s1ap3/asn1c/ber_tlv_tag.h new file mode 100644 index 0000000000..ce227add6d --- /dev/null +++ b/lib/s1ap3/asn1c/ber_tlv_tag.h @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_TAG_H_ +#define _BER_TLV_TAG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum asn_tag_class { + ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ + ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ + ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ + ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ +}; +typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ + +/* + * Tag class is encoded together with tag value for optimization purposes. + */ +#define BER_TAG_CLASS(tag) ((tag) & 0x3) +#define BER_TAG_VALUE(tag) ((tag) >> 2) +#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) + +#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) + +/* + * Several functions for printing the TAG in the canonical form + * (i.e. "[PRIVATE 0]"). + * Return values correspond to their libc counterparts (if any). + */ +ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); +ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); +char *ber_tlv_tag_string(ber_tlv_tag_t tag); + + +/* + * This function tries to fetch the tag from the input stream. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering tag. + * >0: Number of bytes used from bufptr. tag_r will contain the tag. + */ +ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); + +/* + * This function serializes the tag (T from TLV) in BER format. + * It always returns number of bytes necessary to represent the tag, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_TAG_H_ */ diff --git a/lib/s1ap3/asn1c/constr_CHOICE.c b/lib/s1ap3/asn1c/constr_CHOICE.c new file mode 100644 index 0000000000..402b6be9ae --- /dev/null +++ b/lib/s1ap3/asn1c/constr_CHOICE.c @@ -0,0 +1,1509 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * See the definitions. + */ +static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, + unsigned size); +static void _set_present_idx(void *sptr, unsigned offset, unsigned size, + unsigned pres); +static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, + const void *sptr, asn_TYPE_member_t **elm, + unsigned *present); + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the CHOICE type. + */ +asn_dec_rval_t +CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + if(tag_mode || td->tags_count) { + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, -1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) { + /* ?Substracted below! */ + ctx->left += rval.consumed; + } + ADVANCE(rval.consumed); + } else { + ctx->left = -1; + } + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key; + + key.el_tag = tlv_tag; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG("Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + + ASN_DEBUG("Skipping unknown tag %s", + ber_tlv_tag_string(tlv_tag)); + + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + RETURN(RC_OK); + } + } while(0); + + case 2: + /* + * PHASE 2. + * Read in the element. + */ + do { + asn_TYPE_member_t *elm;/* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &elements[ctx->step]; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + /* Set presence to be able to free it properly at any time */ + _set_present_idx(st, specs->pres_offset, + specs->pres_size, ctx->step + 1); + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, + memb_ptr2, ptr, LEFT, elm->tag_mode); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + RETURN(RC_FAIL); + case RC_FAIL: /* Fatal error */ + RETURN(rval.code); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } while(0); + + NEXT_PHASE(ctx); + + /* Fall through */ + case 3: + ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", + td->name, (long)ctx->left, (long)size, + tag_mode, td->tags_count); + + if(ctx->left > 0) { + /* + * The type must be fully decoded + * by the CHOICE member-specific decoder. + */ + RETURN(RC_FAIL); + } + + if(ctx->left == -1 + && !(tag_mode || td->tags_count)) { + /* + * This is an untagged CHOICE. + * It doesn't contain nothing + * except for the member itself, including all its tags. + * The decoding is completed. + */ + NEXT_PHASE(ctx); + break; + } + + /* + * Read in the "end of data chunks"'s. + */ + while(ctx->left < 0) { + ssize_t tl; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * Expected <0><0>... + */ + if(((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + continue; + } + } else { + ASN_DEBUG("Unexpected continuation in %s", + td->name); + RETURN(RC_FAIL); + } + + /* UNREACHABLE */ + } + + NEXT_PHASE(ctx); + case 4: + /* No meaningful work here */ + break; + } + + RETURN(RC_OK); +} + +asn_enc_rval_t +CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval; + const void *memb_ptr; + size_t computed_size = 0; + unsigned present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("%s %s as CHOICE", + cb?"Encoding":"Estimating", td->name); + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) { + if(present == 0 && td->elements_count == 0) { + /* The CHOICE is empty?! */ + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + ASN__ENCODE_FAILED; + } + + /* + * Seek over the present member of the structure. + */ + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + if(elm->optional) { + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* + * If the CHOICE itself is tagged EXPLICIT: + * T ::= [2] EXPLICIT CHOICE { ... } + * Then emit the appropriate tags. + */ + if(tag_mode == 1 || td->tags_count) { + /* + * For this, we need to pre-compute the member. + */ + ssize_t ret; + + /* Encode member with its tag */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + + /* Encode CHOICE with parent or my own tag */ + ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, + cb, app_key); + if(ret == -1) + ASN__ENCODE_FAILED; + computed_size += ret; + } + + /* + * Encode the single underlying member. + */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, cb, app_key); + if(erval.encoded == -1) + return erval; + + ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", + (long)erval.encoded, (long)computed_size); + + erval.encoded += computed_size; + + return erval; +} + +ber_tlv_tag_t +CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + assert(tag_mode == 0); (void)tag_mode; + assert(tag == 0); (void)tag; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + if(present > 0 && present <= td->elements_count) { + const asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *) + ((const char *)ptr + elm->memb_offset); + } else { + memb_ptr = (const void *) + ((const char *)ptr + elm->memb_offset); + } + + return asn_TYPE_outmost_tag(elm->type, memb_ptr, + elm->tag_mode, elm->tag); + } else { + return (ber_tlv_tag_t)-1; + } +} + +int +CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + return 0; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory CHOICE element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: no CHOICE element given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value of a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + if(ctx->phase == 0 && !*xml_tag) + ctx->phase = 1; /* Skip the outer tag checking phase */ + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Only waiting for closing tag. + * Phase 4: Skipping unknown extensions. + * Phase 5: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 4;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the member. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + unsigned old_present; + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Start/Continue decoding the inner member */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + buf_ptr, size); + XER_ADVANCE(tmprval.consumed); + ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", + elm->type->name, tmprval.code); + old_present = _fetch_present_idx(st, + specs->pres_offset, specs->pres_size); + assert(old_present == 0 || old_present == edx + 1); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, specs->pres_size, edx + 1); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 3; + /* Fall through */ + } + + /* No need to wait for closing tag; special mode. */ + if(ctx->phase == 3 && !*xml_tag) { + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + xml_tag, tcv); + + /* Skip the extensions section */ + if(ctx->phase == 4) { + ASN_DEBUG("skip_unknown(%d, %ld)", + tcv, (long)ctx->left); + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 5; + RETURN(RC_FAIL); + case 1: + ctx->phase = 3; + /* Fall through */ + case 0: + XER_ADVANCE(ch_size); + continue; + case 2: + ctx->phase = 3; + break; + } + } + + switch(tcv) { + case XCT_BOTH: + break; /* No CHOICE? */ + case XCT_CLOSING: + if(ctx->phase != 3) + break; + XER_ADVANCE(ch_size); + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + if(ctx->phase != 1) + break; /* Really unexpected */ + + /* + * Search which inner member corresponds to this tag. + */ + for(edx = 0; edx < td->elements_count; edx++) { + elm = &td->elements[edx]; + tcv = xer_check_tag(buf_ptr,ch_size,elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + edx = td->elements_count; + break; /* Phase out */ + } + break; + } + if(edx != td->elements_count) + continue; + + /* It is expected extension */ + if(specs->ext_start != -1) { + ASN_DEBUG("Got anticipated extension"); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + ctx->phase = 3; /* Terminating */ + } else { + ctx->left = 1; + ctx->phase = 4; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" + " (ph=%d, tag=%s)", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + td->name, ctx->phase, xml_tag); + break; + } + + ctx->phase = 5; /* Phase out, just in case */ + RETURN(RC_FAIL); +} + + +asn_enc_rval_t +CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er; + unsigned present; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_dec_rval_t +CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) { + ASN_DEBUG("CHOICE presence from wire %d", value); + value = specs->from_canonical_order[value]; + ASN_DEBUG("CHOICE presence index effective %d", value); + } + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + if(ct && ct->range_bits >= 0) { + if(present_enc < ct->lower_bound + || present_enc > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG( + "CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + + elm = &td->elements[present]; + ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, + present_enc); + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); + } else { + asn_enc_rval_t rval; + if(specs->ext_start == -1) ASN__ENCODE_FAILED; + if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +asn_dec_rval_t +CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) + value = specs->from_canonical_order[value]; + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + int present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present <= 0 || (unsigned)present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present = specs->to_canonical_order[present]; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + if(ct && ct->range_bits >= 0) { + if(present < ct->lower_bound + || present > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po); + } else { + asn_enc_rval_t rval; + if(specs->ext_start == -1) + ASN__ENCODE_FAILED; + if(aper_put_nsnnwn(po, ct->range_bits, present - specs->ext_start)) + ASN__ENCODE_FAILED; + if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +int +CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + /* + * Print that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Print member's name and stuff */ + if(0) { + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + } + + return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, + cb, app_key); + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as CHOICE", td->name); + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + /* + * Free that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)ptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)ptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } +} + + +/* + * The following functions functions offer protection against -fshort-enums, + * compatible with little- and big-endian machines. + * If assertion is triggered, either disable -fshort-enums, or add an entry + * here with the ->pres_size of your target stracture. + * Unless the target structure is packed, the ".present" member + * is guaranteed to be aligned properly. ASN.1 compiler itself does not + * produce packed code. + */ +static unsigned +_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, + unsigned pres_size) { + const void *present_ptr; + unsigned present; + + present_ptr = ((const char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): present = *(const unsigned int *)present_ptr; break; + case sizeof(short): present = *(const unsigned short *)present_ptr; break; + case sizeof(char): present = *(const unsigned char *)present_ptr; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + return 0; /* If not aborted, pass back safe value */ + } + + return present; +} + +static void +_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, + unsigned present) { + void *present_ptr; + present_ptr = ((char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): *(unsigned int *)present_ptr = present; break; + case sizeof(short): *(unsigned short *)present_ptr = present; break; + case sizeof(char): *(unsigned char *)present_ptr = present; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + } +} + +static const void * +_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_TYPE_member_t **elm_ptr, unsigned *present_out) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + *elm_ptr = NULL; + *present_out = 0; + return NULL; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + *present_out = present; + + /* + * The presence index is intentionally 1-based to avoid + * treating zeroed structure as a valid one. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *const elm = &td->elements[present - 1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + *elm_ptr = elm; + return memb_ptr; + } else { + *elm_ptr = NULL; + return NULL; + } + +} + +int +CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + asn_TYPE_member_t *aelm; + asn_TYPE_member_t *belm; + unsigned apresent = 0; + unsigned bpresent = 0; + const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); + const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); + + if(amember && bmember) { + if(apresent == bpresent) { + assert(aelm == belm); + return aelm->type->op->compare_struct(aelm->type, amember, bmember); + } else if(apresent < bpresent) { + return -1; + } else { + return 1; + } + } else if(!amember) { + return -1; + } else { + return 1; + } +} + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned +CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); +} + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int +CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, + unsigned present) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned old_present; + + if(!sptr) { + return -1; + } + + if(present > td->elements_count) + return -1; + + old_present = + _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + if(present == old_present) + return 0; + + if(old_present != 0) { + assert(old_present <= td->elements_count); + ASN_STRUCT_RESET(*td, sptr); + } + + _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); + + return 0; +} + + +asn_random_fill_result_t +CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_random_fill_result_t res; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm; + unsigned present; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *st = *sptr; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + present = asn_random_between(1, td->elements_count); + elm = &td->elements[present - 1]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + res = elm->type->op->random_fill(elm->type, memb_ptr2, + &elm->encoding_constraints, max_length); + _set_present_idx(st, specs->pres_offset, specs->pres_size, present); + if(res.code == ARFILL_OK) { + *sptr = st; + } else { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + } + + return res; +} + + +asn_TYPE_operation_t asn_OP_CHOICE = { + CHOICE_free, + CHOICE_print, + CHOICE_compare, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + CHOICE_decode_oer, + CHOICE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + CHOICE_random_fill, + CHOICE_outmost_tag +}; diff --git a/lib/s1ap3/asn1c/constr_CHOICE.h b/lib/s1ap3/asn1c/constr_CHOICE.h new file mode 100644 index 0000000000..a1999edc42 --- /dev/null +++ b/lib/s1ap3/asn1c/constr_CHOICE.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_CHOICE_H_ +#define _CONSTR_CHOICE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_CHOICE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ + unsigned pres_offset; /* Identifier of the present member */ + unsigned pres_size; /* Size of the identifier (enum) */ + + /* + * Tags to members mapping table. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* Canonical ordering of CHOICE elements, for PER */ + const unsigned *to_canonical_order; + const unsigned *from_canonical_order; + + /* + * Extensions-related stuff. + */ + signed ext_start; /* First member of extensions, or -1 */ +} asn_CHOICE_specifics_t; + +/* + * A set specialized functions dealing with the CHOICE type. + */ +asn_struct_free_f CHOICE_free; +asn_struct_print_f CHOICE_print; +asn_struct_compare_f CHOICE_compare; +asn_constr_check_f CHOICE_constraint; +ber_type_decoder_f CHOICE_decode_ber; +der_type_encoder_f CHOICE_encode_der; +xer_type_decoder_f CHOICE_decode_xer; +xer_type_encoder_f CHOICE_encode_xer; +oer_type_decoder_f CHOICE_decode_oer; +oer_type_encoder_f CHOICE_encode_oer; +per_type_decoder_f CHOICE_decode_uper; +per_type_encoder_f CHOICE_encode_uper; +per_type_decoder_f CHOICE_decode_aper; +per_type_encoder_f CHOICE_encode_aper; +asn_outmost_tag_f CHOICE_outmost_tag; +asn_random_fill_f CHOICE_random_fill; +extern asn_TYPE_operation_t asn_OP_CHOICE; + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, + const void *structure_ptr); + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, + void *structure_ptr, unsigned present); + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_CHOICE_H_ */ diff --git a/lib/s1ap3/asn1c/constr_CHOICE_oer.c b/lib/s1ap3/asn1c/constr_CHOICE_oer.c new file mode 100644 index 0000000000..6480a9610c --- /dev/null +++ b/lib/s1ap3/asn1c/constr_CHOICE_oer.c @@ -0,0 +1,380 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_DISABLE_OER_SUPPORT + +#include +#include +#include + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef SET_PHASE +#define SET_PHASE(ctx, value) \ + do { \ + ctx->phase = value; \ + ctx->step = 0; \ + } while(0) + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * X.696 (08/2015) #8.7 Encoding of tags + */ +static ssize_t +oer_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val & 0x3F) != 0x3F) { + /* #8.7.1 */ + *tag_r = ((val & 0x3F) << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accomodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + +asn_dec_rval_t +CHOICE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + (void)constraints; + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + switch(ctx->phase) { + case 0: { + /* + * Discover the tag. + */ + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + + tag_len = oer_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case 0: + ASN__DECODE_STARVED; + case -1: + ASN__DECODE_FAILED; + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + + t2m = (const asn_TYPE_tag2member_t *)bsearch( + &key, specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG( + "Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip open type extension */ + ASN_DEBUG( + "Not implemented skipping open type extension for tag %s", + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + } while(0); + + + ADVANCE(tag_len); + } + /* Fall through */ + case 1: { + asn_TYPE_member_t *elm = &elements[ctx->step]; /* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_dec_rval_t rval; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Set presence to be able to free it properly at any time */ + (void)CHOICE_variant_set_presence(td, st, ctx->step + 1); + + if(specs->ext_start >= 0 && specs->ext_start <= ctx->step) { + ssize_t got = + oer_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, + memb_ptr2, ptr, size); + if(got < 0) ASN__DECODE_FAILED; + if(got == 0) ASN__DECODE_STARVED; + rval.code = RC_OK; + rval.consumed = got; + } else { + rval = elm->type->op->oer_decoder( + opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, + size); + } + rval.consumed += consumed_myself; + switch(rval.code) { + case RC_OK: + NEXT_PHASE(ctx); + case RC_WMORE: + break; + case RC_FAIL: + SET_PHASE(ctx, 3); /* => 3 */ + } + return rval; + } + case 2: + /* Already decoded everything */ + RETURN(RC_OK); + case 3: + /* Failed to decode, after all */ + RETURN(RC_FAIL); + } + + RETURN(RC_FAIL); +} + +/* + * X.696 (08/2015) #8.7 Encoding of tags + */ +static ssize_t +oer_put_tag(ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + uint8_t tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + + if(tval < 0x3F) { + uint8_t b = (uint8_t)((tclass << 6) | tval); + if(cb(&b, 1, app_key) < 0) { + return -1; + } + return 1; + } else { + uint8_t buf[1 + 2 * sizeof(tval)]; + uint8_t *b = &buf[sizeof(buf)-1]; /* Last addressable */ + size_t encoded; + for(; ; tval >>= 7) { + if(tval >> 7) { + *b-- = 0x80 | (tval & 0x7f); + } else { + *b-- = tval & 0x7f; + break; + } + } + *b = (uint8_t)((tclass << 6) | 0x3F); + encoded = sizeof(buf) - (b - buf); + if(cb(b, encoded, app_key) < 0) { + return -1; + } + return encoded; + } + +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +CHOICE_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + unsigned present; + const void *memb_ptr; + ber_tlv_tag_t tag; + ssize_t tag_len; + asn_enc_rval_t er = {0, 0, 0}; + + (void)constraints; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("OER %s encoding as CHOICE", td->name); + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN_DEBUG("CHOICE %s member is not selected", td->name); + ASN__ENCODE_FAILED; + } + + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + tag = asn_TYPE_outmost_tag(elm->type, memb_ptr, elm->tag_mode, elm->tag); + if(tag == 0) { + ASN__ENCODE_FAILED; + } + + tag_len = oer_put_tag(tag, cb, app_key); + if(tag_len < 0) { + ASN__ENCODE_FAILED; + } + + if(specs->ext_start >= 0 && (unsigned)specs->ext_start <= (present-1)) { + ssize_t encoded = oer_open_type_put(elm->type, + elm->encoding_constraints.oer_constraints, + memb_ptr, cb, app_key); + if(encoded < 0) ASN__ENCODE_FAILED; + er.encoded = tag_len + encoded; + } else { + er = elm->type->op->oer_encoder( + elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, + app_key); + if(er.encoded >= 0) er.encoded += tag_len; + } + + return er; +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/lib/s1ap3/asn1c/constr_SEQUENCE.c b/lib/s1ap3/asn1c/constr_SEQUENCE.c new file mode 100644 index 0000000000..e0290057a9 --- /dev/null +++ b/lib/s1ap3/asn1c/constr_SEQUENCE.c @@ -0,0 +1,2059 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +/* + * Tags are canonically sorted in the tag2element map. + */ +static int +_t2e_cmp(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) { + if(a->el_no > b->el_no) + return 1; + /* + * Important: we do not check + * for a->el_no <= b->el_no! + */ + return 0; + } else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + + +/* + * The decoder of the SEQUENCE type. + */ +asn_dec_rval_t +SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* SEQUENCE element's index */ + + ASN_DEBUG("Decoding %s as SEQUENCE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next member from the list of + * this structure's elements. + * (ctx->step) stores the member being processed + * between invocations and the microphase {0,1} of parsing + * that member: + * step = ( * 2 + ). + */ + for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; + edx++, ctx->step = (ctx->step & ~1) + 2) { + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + ssize_t tag_len; /* Length of TLV's T */ + size_t opt_edx_end; /* Next non-optional element */ + size_t n; + int use_bsearch; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" + " opt=%d ec=%d", + td->name, (int)ctx->left, edx, + elements[edx].flags, elements[edx].optional, + td->elements_count); + + if(ctx->left == 0 /* No more stuff is expected */ + && ( + /* Explicit OPTIONAL specification reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx))) { + ASN_DEBUG("End of SEQUENCE %s", td->name); + /* + * Found the legitimate end of the structure. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " + "(%s) is %s encoded in %d bytes, of frame %ld", + td->name, edx, elements[edx].name, + ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } else if(((const uint8_t *)ptr)[1] == 0) { + ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, + elements[edx].optional, td->elements_count); + if((edx + elements[edx].optional == td->elements_count) + || IN_EXTENSION_GROUP(specs, edx)) { + /* + * Yeah, baby! Found the terminator + * of the indefinite length structure. + */ + /* + * Proceed to the canonical + * finalization function. + * No advancing is necessary. + */ + goto phase3; + } + } + } + + /* + * Find the next available type with this tag. + */ + use_bsearch = 0; + opt_edx_end = edx + elements[edx].optional + 1; + if(opt_edx_end > td->elements_count) + opt_edx_end = td->elements_count; /* Cap */ + else if(opt_edx_end - edx > 8) { + /* Limit the scope of linear search... */ + opt_edx_end = edx + 8; + use_bsearch = 1; + /* ... and resort to bsearch() */ + } + for(n = edx; n < opt_edx_end; n++) { + if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { + /* + * Found element corresponding to the tag + * being looked at. + * Reposition over the right element. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].flags & ATF_ANY_TYPE) { + /* + * This is the ANY type, which may bear + * any flag whatsoever. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].tag == (ber_tlv_tag_t)-1) { + use_bsearch = 1; + break; + } + } + if(use_bsearch) { + /* + * Resort to a binary search over + * sorted array of tags. + */ + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + key.el_no = edx; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _t2e_cmp); + if(t2m) { + const asn_TYPE_tag2member_t *best = 0; + const asn_TYPE_tag2member_t *t2m_f, *t2m_l; + size_t edx_max = edx + elements[edx].optional; + /* + * Rewind to the first element with that tag, + * `cause bsearch() does not guarantee order. + */ + t2m_f = t2m + t2m->toff_first; + t2m_l = t2m + t2m->toff_last; + for(t2m = t2m_f; t2m <= t2m_l; t2m++) { + if(t2m->el_no > edx_max) break; + if(t2m->el_no < edx) continue; + best = t2m; + } + if(best) { + edx = best->el_no; + ctx->step = 1 + 2 * edx; + goto microphase2; + } + } + n = opt_edx_end; + } + if(n == opt_edx_end) { + /* + * If tag is unknown, it may be either + * an unknown (thus, incorrect) tag, + * or an extension (...), + * or an end of the indefinite-length structure. + */ + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { + ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + ASN_DEBUG("Expected tag %s (%s)%s", + ber_tlv_tag_string(elements[edx].tag), + elements[edx].name, + elements[edx].optional + ?" or alternatives":""); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + edx += elements[edx].optional; + + ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + ASN_DEBUG("Skip length %d in %s", + (int)skip, td->name); + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + ctx->step -= 2; + edx--; + continue; /* Try again with the next tag */ + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elements[edx].flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elements[edx].memb_offset; + memb_ptr2 = &memb_ptr; + } + /* + * Invoke the member fetch routine according to member's type + */ + if(elements[edx].flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); + } else { + rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + } + ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " + "in %d bytes rval.code %d, size=%d", + td->name, edx, elements[edx].type->name, + (int)LEFT, (int)rval.consumed, rval.code, (int)size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", + (long)ctx->left, (long)size); + /* Fall through */ + case RC_FAIL: /* Fatal error */ + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all structure members) */ + + phase3: + ctx->phase = 3; + /* Fall through */ + case 3: /* 00 and other tags expected */ + case 4: /* only 00's expected */ + + ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", + td->name, (long)ctx->left, (long)size); + + /* + * Skip everything until the end of the SEQUENCE. + */ + while(ctx->left) { + ssize_t tl, ll; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * If expected <0><0>... + */ + if(ctx->left < 0 + && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + ctx->phase = 4; + continue; + } + } + + if(!IN_EXTENSION_GROUP(specs, td->elements_count) + || ctx->phase == 4) { + ASN_DEBUG("Unexpected continuation " + "of a non-extensible type " + "%s (SEQUENCE): %s", + td->name, + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tl, LEFT - tl); + switch(ll) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(tl + ll); + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + + +/* + * The DER encoder of the SEQUENCE type. + */ +asn_enc_rval_t +SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t computed_size = 0; + asn_enc_rval_t erval; + ssize_t ret; + size_t edx; + + ASN_DEBUG("%s %s as SEQUENCE", + cb?"Encoding":"Estimating", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", + edx, elm->name, (long)erval.encoded); + } + + /* + * Encode the TLV for the sequence itself. + */ + ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); + if(ret == -1) + ASN__ENCODE_FAILED; + erval.encoded = computed_size + ret; + + if(!cb) ASN__ENCODED_OK(erval); + + /* + * Encode all members. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t tmperval; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) continue; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", + edx, elm->name, td->name, (long)tmperval.encoded); + } + + if(computed_size != 0) + /* + * Encoded size is not equal to the computed size. + */ + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(erval); +} + + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = (num_bytes); \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Skipping unknown extensions. + * Phase 4: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 3;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr_dontuse; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr_dontuse = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ + } + + if(elm->flags & ATF_OPEN_TYPE) { + tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + ptr, size); + } + XER_ADVANCE(tmprval.consumed); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 1; /* Back to body processing */ + ctx->step = ++edx; + ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", + ctx->phase, ctx->step); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", + tcv, ctx->phase, xml_tag); + + /* Skip the extensions section */ + if(ctx->phase == 3) { + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 4; + RETURN(RC_FAIL); + case 0: + XER_ADVANCE(ch_size); + continue; + case 1: + XER_ADVANCE(ch_size); + ctx->phase = 1; + continue; + case 2: + ctx->phase = 1; + break; + } + } + + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + if(edx >= td->elements_count || + /* Explicit OPTIONAL specs reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx)) { + XER_ADVANCE(ch_size); + ctx->phase = 4; /* Phase out */ + RETURN(RC_OK); + } else { + ASN_DEBUG("Premature end of XER SEQUENCE"); + RETURN(RC_FAIL); + } + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + size_t n; + size_t edx_end = edx + elements[edx].optional + 1; + if(edx_end > td->elements_count) + edx_end = td->elements_count; + for(n = edx; n < edx_end; n++) { + elm = &td->elements[n]; + tcv = xer_check_tag(ptr, ch_size, elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx = n; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + n = edx_end; + break; /* Phase out */ + } + break; + } + if(n != edx_end) + continue; + } else { + ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", + edx, td->elements_count); + } + + /* It is expected extension */ + if(IN_EXTENSION_GROUP(specs, + edx + (edx < td->elements_count + ? elements[edx].optional : 0))) { + ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", + edx); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + } else { + ctx->left = 1; + ctx->phase = 3; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", + size>0?((const char *)ptr)[0]:'.', + size>1?((const char *)ptr)[1]:'.', + size>2?((const char *)ptr)[2]:'.', + size>3?((const char *)ptr)[3]:'.', + size>4?((const char *)ptr)[4]:'.', + size>5?((const char *)ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er; + int xcan = (flags & XER_F_CANONICAL); + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + /* Print the member itself */ + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} + +int +SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t edx; + int ret; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) continue; + /* Print line */ + /* Fall through */ + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Indentation */ + _i_INDENT(1); + + /* Print the member's name and stuff */ + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + + /* Print the member itself */ + ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, + cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + size_t edx; + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_struct_ctx_t *ctx; /* Decoder context */ + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as SEQUENCE", td->name); + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + /* Clean parsing context */ + ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); + FREEMEM(ctx->ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset( + sptr, 0, + ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); + break; + } +} + +int +SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t edx; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Iterate over structure members and check their validity. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + continue; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + if(ret) return ret; + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; + edx < (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, (long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, + *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: break; + case 0: continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + ASN_DEBUG("Skipped overflow extension"); + continue; + } + break; + } + + FREEMEM(epres); + } + + if(specs->first_extension >= 0) { + unsigned i; + /* Fill DEFAULT members in extensions */ + for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; + i++) { + asn_TYPE_member_t *elm; + void **memb_ptr2; /* Pointer to member pointer */ + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) { + return -1; + } + /* Encode as open type field */ + if(po2 && present + && uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, + po); + if(er.encoded == -1) return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of extensions %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(uper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ +#if 0 + int padding; +#endif + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } +#if 0 + /* Get Padding */ + padding = (8 - (pd->moved % 8)) % 8; + if(padding > 0) + ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); +#if 0 /* old way of removing padding */ + per_get_few_bits(pd, padding); +#else /* Experimental fix proposed by @mhanna123 */ + if(edx != (td->elements_count-1)) + per_get_few_bits(pd, padding); + else { + if(specs->roms_count && (padding > 0)) + ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); + else + per_get_few_bits(pd, padding); + } +#endif /* dealing with padding */ +#endif + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %ld present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) + ASN__DECODE_STARVED; + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%ld is not extension", edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: + break; + case 0: + continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + } + break; + } + + FREEMEM(epres); + } + + /* Fill DEFAULT members in extensions */ + for(edx = specs->roms_count; edx < specs->roms_count + + specs->aoms_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void **memb_ptr2; /* Pointer to member pointer */ + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s (@%ld) present => %d", + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) + return -1; + /* Encode as open type field */ + if(po2 && present && aper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr2) == 1) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %ld not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + *memb_ptr2, po); + if(er.encoded == -1) + return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(aper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + size_t edx; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *amemb; + const void *bmemb; + int ret; + + if(elm->flags & ATF_POINTER) { + amemb = + *(const void *const *)((const char *)aptr + elm->memb_offset); + bmemb = + *(const void *const *)((const char *)bptr + elm->memb_offset); + if(!amemb) { + if(!bmemb) continue; + if(elm->default_value_cmp + && elm->default_value_cmp(bmemb) == 0) { + /* A is absent, but B is present and equal to DEFAULT */ + continue; + } + return -1; + } else if(!bmemb) { + if(elm->default_value_cmp + && elm->default_value_cmp(amemb) == 0) { + /* B is absent, but A is present and equal to DEFAULT */ + continue; + } + return 1; + } + } else { + amemb = (const void *)((const char *)aptr + elm->memb_offset); + bmemb = (const void *)((const char *)bptr + elm->memb_offset); + } + + ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); + if(ret != 0) return ret; + } + + return 0; +} + +asn_TYPE_operation_t asn_OP_SEQUENCE = { + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_compare, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_decode_oer, + SEQUENCE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + void *st = *sptr; + size_t edx; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + for(edx = 0; edx < td->elements_count; edx++) { + const asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_random_fill_result_t tmpres; + + if(elm->optional && asn_random_between(0, 4) == 2) { + /* Sometimes decide not to fill the optional value */ + continue; + } + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + tmpres = elm->type->op->random_fill( + elm->type, memb_ptr2, &elm->encoding_constraints, + max_length > result_ok.length ? max_length - result_ok.length : 0); + switch(tmpres.code) { + case ARFILL_OK: + result_ok.length += tmpres.length; + continue; + case ARFILL_SKIPPED: + assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); + continue; + case ARFILL_FAILED: + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return tmpres; + } + } + + *sptr = st; + + return result_ok; +} + diff --git a/lib/s1ap3/asn1c/constr_SEQUENCE.h b/lib/s1ap3/asn1c/constr_SEQUENCE.h new file mode 100644 index 0000000000..a22ed3a272 --- /dev/null +++ b/lib/s1ap3/asn1c/constr_SEQUENCE.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_H_ +#define _CONSTR_SEQUENCE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SEQUENCE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* + * Tags to members mapping table (sorted). + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Optional members of the extensions root (roms) or additions (aoms). + * Meaningful for PER. + */ + const int *oms; /* Optional MemberS */ + unsigned roms_count; /* Root optional members count */ + unsigned aoms_count; /* Additions optional members count */ + + /* + * Description of an extensions group. + * Root components are clustered at the beginning of the structure, + * whereas extensions are clustered at the end. -1 means not extensible. + */ + signed first_extension; /* First extension addition */ +} asn_SEQUENCE_specifics_t; + + +/* + * A set specialized functions dealing with the SEQUENCE type. + */ +asn_struct_free_f SEQUENCE_free; +asn_struct_print_f SEQUENCE_print; +asn_struct_compare_f SEQUENCE_compare; +asn_constr_check_f SEQUENCE_constraint; +ber_type_decoder_f SEQUENCE_decode_ber; +der_type_encoder_f SEQUENCE_encode_der; +xer_type_decoder_f SEQUENCE_decode_xer; +xer_type_encoder_f SEQUENCE_encode_xer; +oer_type_decoder_f SEQUENCE_decode_oer; +oer_type_encoder_f SEQUENCE_encode_oer; +per_type_decoder_f SEQUENCE_decode_uper; +per_type_encoder_f SEQUENCE_encode_uper; +per_type_decoder_f SEQUENCE_decode_aper; +per_type_encoder_f SEQUENCE_encode_aper; +asn_random_fill_f SEQUENCE_random_fill; +extern asn_TYPE_operation_t asn_OP_SEQUENCE; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/lib/s1ap3/asn1c/constr_SEQUENCE_OF.c b/lib/s1ap3/asn1c/constr_SEQUENCE_OF.c new file mode 100644 index 0000000000..2a500c3674 --- /dev/null +++ b/lib/s1ap3/asn1c/constr_SEQUENCE_OF.c @@ -0,0 +1,358 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The DER encoder of the SEQUENCE OF type. + */ +asn_enc_rval_t +SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + asn_enc_rval_t erval; + int edx; + + ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, + cb, app_key); + if(encoding_size == -1) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + computed_size += encoding_size; + if(!cb) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + encoding_size += erval.encoded; + } + + if(computed_size != (size_t)encoding_size) { + /* + * Encoded size is not equal to the computed size. + */ + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + } else { + erval.encoded = computed_size; + erval.structure_ptr = 0; + erval.failed_type = 0; + } + + return erval; +} + +asn_enc_rval_t +SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er; + const asn_TYPE_member_t *elm = td->elements; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, + po); + if(er.encoded == -1) ASN__ENCODE_FAILED; + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + ASN__ENCODED_OK(er); +} + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er; + asn_TYPE_member_t *elm = td->elements; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = (list->count < ct->lower_bound + || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", + ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) + ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) + ASN__ENCODE_FAILED; + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ +/* if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; +*/ + if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) + ASN__ENCODE_FAILED; + } + + for(seq = -1; seq < list->count;) { + ssize_t mayEncode; + if(seq < 0) seq = 0; + if(ct && ct->effective_bits >= 0) { + mayEncode = list->count; + } else { + mayEncode = aper_put_length(po, -1, list->count - seq); + if(mayEncode < 0) ASN__ENCODE_FAILED; + } + + while(mayEncode--) { + void *memb_ptr = list->array[seq++]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + } + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); + const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); + ssize_t idx; + + if(a && b) { + ssize_t common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, a->array[idx], b->array[idx]); + if(ret) return ret; + } + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_compare, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ + SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + diff --git a/lib/s1ap3/asn1c/constr_SEQUENCE_OF.h b/lib/s1ap3/asn1c/constr_SEQUENCE_OF.h new file mode 100644 index 0000000000..6857f0f0c9 --- /dev/null +++ b/lib/s1ap3/asn1c/constr_SEQUENCE_OF.h @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_OF_H_ +#define _CONSTR_SEQUENCE_OF_H_ + +#include +#include /* Implemented using SET OF */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A set specialized functions dealing with the SEQUENCE OF type. + * Generally implemented using SET OF. + */ +asn_struct_compare_f SEQUENCE_OF_compare; +der_type_encoder_f SEQUENCE_OF_encode_der; +xer_type_encoder_f SEQUENCE_OF_encode_xer; +per_type_encoder_f SEQUENCE_OF_encode_uper; +per_type_encoder_f SEQUENCE_OF_encode_aper; +extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; + +#define SEQUENCE_OF_free SET_OF_free +#define SEQUENCE_OF_print SET_OF_print +#define SEQUENCE_OF_constraint SET_OF_constraint +#define SEQUENCE_OF_decode_ber SET_OF_decode_ber +#define SEQUENCE_OF_decode_xer SET_OF_decode_xer +#define SEQUENCE_OF_decode_oer SET_OF_decode_oer +#define SEQUENCE_OF_encode_oer SET_OF_encode_oer +#define SEQUENCE_OF_decode_uper SET_OF_decode_uper +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +#define SEQUENCE_OF_random_fill SET_OF_random_fill + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/lib/s1ap3/asn1c/constr_SEQUENCE_oer.c b/lib/s1ap3/asn1c/constr_SEQUENCE_oer.c new file mode 100644 index 0000000000..4f290a12c7 --- /dev/null +++ b/lib/s1ap3/asn1c/constr_SEQUENCE_oer.c @@ -0,0 +1,561 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_DISABLE_OER_SUPPORT + +#include +#include +#include +#include + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +#define IN_ROOT_GROUP_PRED(edx) \ + edx < (specs->first_extension < 0 ? td->elements_count \ + : (size_t)specs->first_extension) + +#define FOR_IN_ROOT_GROUP(edx) for(edx = 0; IN_ROOT_GROUP_PRED(edx); edx++) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * Return pointer to a member. + */ +static void ** +element_ptrptr(void *struct_ptr, asn_TYPE_member_t *elm, void **tmp_save_ptr) { + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + return (void **)((char *)struct_ptr + elm->memb_offset); + } else { + assert(tmp_save_ptr); + *tmp_save_ptr = (void *)((char *)struct_ptr + elm->memb_offset); + return tmp_save_ptr; + } +} + +static const void * +element_ptr(const void *struct_ptr, const asn_TYPE_member_t *elm) { + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + return *(const void *const *)((const char *)struct_ptr + + elm->memb_offset); + } else { + return (const void *)((const char *)struct_ptr + elm->memb_offset); + } +} + +asn_dec_rval_t +SEQUENCE_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *ptr, size_t size) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + void *st = *struct_ptr; /* Target structure */ + asn_struct_ctx_t *ctx; /* Decoder context */ + size_t consumed_myself = 0; /* Consumed bytes from ptr. */ + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously. + */ + switch(ctx->phase) { + case 0: { + /* + * Fetch preamble. + */ + asn_bit_data_t *preamble; + int has_extensions_bit = (specs->first_extension >= 0); + size_t preamble_bits = (has_extensions_bit + specs->roms_count); + size_t preamble_bytes = ((7 + preamble_bits) >> 3); + + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 0", td->name); + + ASN_DEBUG( + "Expecting preamble bits %" ASN_PRI_SIZE " for %s (including %d extension bits)", + preamble_bits, td->name, has_extensions_bit); + + if(preamble_bytes > size) { + ASN__DECODE_STARVED; + } + + preamble = asn_bit_data_new_contiguous(ptr, preamble_bits); + if(!preamble) { + RETURN(RC_FAIL); + } + preamble->nboff = has_extensions_bit; + ctx->ptr = preamble; + ADVANCE(preamble_bytes); + } + NEXT_PHASE(ctx); + /* FALL THROUGH */ + case 1: { + /* Decode components of the extension root */ + asn_bit_data_t *preamble = ctx->ptr; + size_t edx; + + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 1 (Root)", td->name); + + assert(preamble); + + for(edx = (ctx->step >> 1); IN_ROOT_GROUP_PRED(edx); + edx++, ctx->step = (ctx->step & ~1) + 2) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + ASN_DEBUG("Decoding %s->%s", td->name, elm->name); + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + if(ctx->step & 1) { + goto microphase2_decode_continues; + } + + + if(elm->optional) { + int32_t present = asn_get_few_bits(preamble, 1); + if(present < 0) { + ASN_DEBUG("Presence map ended prematurely: %d", present); + RETURN(RC_FAIL); + } else if(present == 0) { + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + void *tmp; + if(elm->default_value_set( + element_ptrptr(st, elm, &tmp))) { + RETURN(RC_FAIL); + } + } + /* The member is not present. */ + continue; + } + /* Present OPTIONAL or DEFAULT component. */ + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2_decode_continues: + if(elm->flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_oer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + void *save_memb_ptr; /* Temporary reference. */ + void **memb_ptr2; /* Pointer to a pointer to a memmber */ + + memb_ptr2 = element_ptrptr(st, elm, &save_memb_ptr); + + rval = elm->type->op->oer_decoder( + opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, memb_ptr2, ptr, + size); + } + switch(rval.code) { + case RC_OK: + ADVANCE(rval.consumed); + break; + case RC_WMORE: + ASN_DEBUG("More bytes needed at element %s \"%s\"", td->name, + elm->name); + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + case RC_FAIL: + ASN_DEBUG("Decoding failed at element %s \"%s\"", td->name, + elm->name); + RETURN(RC_FAIL); + } + } /* for(all root members) */ + + } + NEXT_PHASE(ctx); + /* FALL THROUGH */ + case 2: + assert(ctx->ptr); + { + /* Cleanup preamble. */ + asn_bit_data_t *preamble = ctx->ptr; + asn_bit_data_t *extadds; + int has_extensions_bit = (specs->first_extension >= 0); + int extensions_present = + has_extensions_bit + && (preamble->buffer == NULL + || (((const uint8_t *)preamble->buffer)[0] & 0x80)); + uint8_t unused_bits; + size_t len = 0; + ssize_t len_len; + + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 2", td->name); + + preamble->buffer = 0; /* Will do extensions_present==1 next time. */ + + if(!extensions_present) { + ctx->phase = 10; + RETURN(RC_OK); + } + + /* + * X.696 (08/2015) #16.1 (c), #16.4 + * Read in the extension addition presence bitmap. + */ + + len_len = oer_fetch_length(ptr, size, &len); + if(len_len > 0) { + ADVANCE(len_len); + } else if(len_len < 0) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + + if(len == 0) { + /* 16.4.1-2 */ + RETURN(RC_FAIL); + } else if(len > size) { + RETURN(RC_WMORE); + } + + /* Account for unused bits */ + unused_bits = 0x7 & *(const uint8_t *)ptr; + ADVANCE(1); + len--; + if(unused_bits && len == 0) { + RETURN(RC_FAIL); + } + + /* Get the extensions map */ + extadds = asn_bit_data_new_contiguous(ptr, len * 8 - unused_bits); + if(!extadds) { + RETURN(RC_FAIL); + } + FREEMEM(preamble); + ctx->ptr = extadds; + ADVANCE(len); + } + NEXT_PHASE(ctx); + ctx->step = + (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + /* Fall through */ + case 3: + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 3 (Extensions)", td->name); + for(; ctx->step < (signed)td->elements_count; ctx->step++) { + asn_bit_data_t *extadds = ctx->ptr; + size_t edx = ctx->step; + asn_TYPE_member_t *elm = &td->elements[edx]; + void *tmp_memb_ptr; + void **memb_ptr2 = element_ptrptr(st, elm, &tmp_memb_ptr); + + switch(asn_get_few_bits(extadds, 1)) { + case -1: + /* + * Not every one of our extensions is known to the remote side. + * Continue filling in their defaults though. + */ + /* Fall through */ + case 0: + /* Fill-in DEFAULT */ + if(elm->default_value_set + && elm->default_value_set(memb_ptr2)) { + RETURN(RC_FAIL); + } + continue; + case 1: { + /* Read OER open type */ + ssize_t ot_size = + oer_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, + memb_ptr2, ptr, size); + assert(ot_size <= (ssize_t)size); + if(ot_size > 0) { + ADVANCE(ot_size); + } else if(ot_size < 0) { + RETURN(RC_FAIL); + } else { + /* Roll back open type parsing */ + asn_get_undo(extadds, 1); + RETURN(RC_WMORE); + } + break; + } + default: + RETURN(RC_FAIL); + } + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 4: + ASN_DEBUG("OER SEQUENCE %s Decoding PHASE 4", td->name); + /* Read in the rest of Open Types while ignoring them */ + for(;;) { + asn_bit_data_t *extadds = ctx->ptr; + switch(asn_get_few_bits(extadds, 1)) { + case 0: + continue; + case 1: { + ssize_t skipped = oer_open_type_skip(ptr, size); + if(skipped > 0) { + ADVANCE(skipped); + } else if(skipped < 0) { + RETURN(RC_FAIL); + } else { + asn_get_undo(extadds, 1); + RETURN(RC_WMORE); + } + continue; + } + case -1: + /* No more Open Type encoded components */ + break; + default: + RETURN(RC_FAIL); + } + break; + } + } + + RETURN(RC_OK); +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +SEQUENCE_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + size_t computed_size = 0; + int has_extensions_bit = (specs->first_extension >= 0); + size_t preamble_bits = (has_extensions_bit + specs->roms_count); + uint32_t has_extensions = 0; + size_t edx; + int ret; + + (void)constraints; + + if(preamble_bits) { + asn_bit_outp_t preamble; + + memset(&preamble, 0, sizeof(preamble)); + preamble.output = cb; + preamble.op_key = app_key; + + if(has_extensions_bit) { + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr = element_ptr(sptr, elm); + if(memb_ptr) { + if(elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + /* Do not encode default values in extensions */ + } else { + has_extensions = 1; + break; + } + } + } + ret = asn_put_few_bits(&preamble, has_extensions, 1); + assert(ret == 0); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + } + + /* + * Encode optional components bitmap. + */ + if(specs->roms_count) { + FOR_IN_ROOT_GROUP(edx) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + if(IN_EXTENSION_GROUP(specs, edx)) break; + + if(elm->optional) { + const void *memb_ptr = element_ptr(sptr, elm); + uint32_t has_component = memb_ptr != NULL; + if(has_component && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + has_component = 0; + } + ret = asn_put_few_bits(&preamble, has_component, 1); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + } + } + } + + asn_put_aligned_flush(&preamble); + computed_size += preamble.flushed_bytes; + } /* if(preamble_bits) */ + + /* + * Put root components and extensions root. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t er; + const void *memb_ptr; + + if(IN_EXTENSION_GROUP(specs, edx)) break; + + memb_ptr = element_ptr(sptr, elm); + if(memb_ptr) { + if(elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + /* Skip default values in encoding */ + continue; + } + } else { + if(elm->optional) continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + if(!elm->type->op->oer_encoder) { + ASN_DEBUG("OER encoder is not defined for type %s", elm->type->name); + ASN__ENCODE_FAILED; + } + er = elm->type->op->oer_encoder( + elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, + app_key); + if(er.encoded == -1) { + ASN_DEBUG("... while encoding %s member \"%s\"\n", td->name, + elm->name); + return er; + } + computed_size += er.encoded; + } + + /* + * Before encode extensions, encode extensions additions presense bitmap + # X.696 (08/2015) #16.4. + */ + if(has_extensions) { + asn_bit_outp_t extadds; + + /* Special case allowing us to use exactly one byte for #8.6 */ + size_t aoms_length_bits = specs->aoms_count; + size_t aoms_length_bytes = (7 + aoms_length_bits) >> 3; + uint8_t unused_bits = 0x07 & (8 - (aoms_length_bits & 0x07)); + + assert(1 + aoms_length_bytes <= 127); + + memset(&extadds, 0, sizeof(extadds)); + extadds.output = cb; + extadds.op_key = app_key; + + /* #8.6 length determinant */ + ret = asn_put_few_bits(&extadds, (1 + aoms_length_bytes), 8); + if(ret < 0) ASN__ENCODE_FAILED; + + /* Number of unused bytes, #16.4.2 */ + ret = asn_put_few_bits(&extadds, unused_bits, 8); + if(ret < 0) ASN__ENCODE_FAILED; + + /* Encode presence bitmap #16.4.3 */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr = element_ptr(sptr, elm); + if(memb_ptr && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + memb_ptr = 0; /* Do not encode default value. */ + } + ret |= asn_put_few_bits(&extadds, memb_ptr ? 1 : 0, 1); + } + if(ret < 0) ASN__ENCODE_FAILED; + + asn_put_aligned_flush(&extadds); + computed_size += extadds.flushed_bytes; + + /* Now, encode extensions */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr = element_ptr(sptr, elm); + + if(memb_ptr) { + if(elm->default_value_cmp + && elm->default_value_cmp(memb_ptr) == 0) { + /* Do not encode default value. */ + } else { + ssize_t wrote = oer_open_type_put( + elm->type, elm->encoding_constraints.oer_constraints, + memb_ptr, cb, app_key); + if(wrote == -1) { + ASN__ENCODE_FAILED; + } + computed_size += wrote; + } + } else if(!elm->optional) { + ASN__ENCODE_FAILED; + } + } + } /* if(has_extensions) */ + + + { + asn_enc_rval_t er = {0, 0, 0}; + er.encoded = computed_size; + ASN__ENCODED_OK(er); + } +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/lib/s1ap3/asn1c/constr_SET_OF.c b/lib/s1ap3/asn1c/constr_SET_OF.c new file mode 100644 index 0000000000..89e070ea1c --- /dev/null +++ b/lib/s1ap3/asn1c/constr_SET_OF.c @@ -0,0 +1,1441 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * The decoder of the SET OF type. + */ +asn_dec_rval_t +SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as SET OF", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + ASN_DEBUG("Structure consumes %ld bytes, " + "buffer %ld", (long)ctx->left, (long)size); + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next item. + */ + for(;; ctx->step = 0) { + ssize_t tag_len; /* Length of TLV's T */ + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + + if(ctx->left == 0) { + ASN_DEBUG("End of SET OF %s", td->name); + /* + * No more things to decode. + * Exit out of here. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Found the terminator of the + * indefinite length structure. + */ + break; + } + } + + /* Outmost tag may be unknown and cannot be fetched/compared */ + if(elm->tag != (ber_tlv_tag_t)-1) { + if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { + /* + * The new list member of expected type has arrived. + */ + } else { + ASN_DEBUG("Unexpected tag %s fixed SET OF %s", + ber_tlv_tag_string(tlv_tag), td->name); + ASN_DEBUG("%s SET OF has tag %s", + td->name, ber_tlv_tag_string(elm->tag)); + RETURN(RC_FAIL); + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, + elm->type, &ctx->ptr, ptr, LEFT, 0); + ASN_DEBUG("In %s SET OF %s code %d consumed %d", + td->name, elm->type->name, + rval.code, (int)rval.consumed); + switch(rval.code) { + case RC_OK: + { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + else + ctx->ptr = 0; + } + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + /* Fall through */ + case RC_FAIL: /* Fatal error */ + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all list members) */ + + NEXT_PHASE(ctx); + case 2: + /* + * Read in all "end of content" TLVs. + */ + while(ctx->left < 0) { + if(LEFT < 2) { + if(LEFT > 0 && ((const char *)ptr)[0] != 0) { + /* Unexpected tag */ + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } + if(((const char *)ptr)[0] == 0 + && ((const char *)ptr)[1] == 0) { + ADVANCE(2); + ctx->left++; + } else { + RETURN(RC_FAIL); + } + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + +/* + * Internally visible buffer holding a single encoded element. + */ +struct _el_buffer { + uint8_t *buf; + size_t length; + size_t allocated_size; + unsigned bits_unused; +}; +/* Append bytes to the above structure */ +static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { + struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; + + if(el_buf->length + size > el_buf->allocated_size) { + size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; + void *p; + + do { + new_size <<= 2; + } while(el_buf->length + size > new_size); + + p = REALLOC(el_buf->buf, new_size); + if(p) { + el_buf->buf = p; + el_buf->allocated_size = new_size; + } else { + return -1; + } + } + + memcpy(el_buf->buf + el_buf->length, buffer, size); + + el_buf->length += size; + return 0; +} + +static void assert_unused_bits(const struct _el_buffer* p) { + if(p->length) { + assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); + } else { + assert(p->bits_unused == 0); + } +} + +static int _el_buf_cmp(const void *ap, const void *bp) { + const struct _el_buffer *a = (const struct _el_buffer *)ap; + const struct _el_buffer *b = (const struct _el_buffer *)bp; + size_t common_len; + int ret = 0; + + if(a->length < b->length) + common_len = a->length; + else + common_len = b->length; + + if (a->buf && b->buf) { + ret = memcmp(a->buf, b->buf, common_len); + } + if(ret == 0) { + if(a->length < b->length) + ret = -1; + else if(a->length > b->length) + ret = 1; + /* Ignore unused bits. */ + assert_unused_bits(a); + assert_unused_bits(b); + } + + return ret; +} + +static void +SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { + size_t i; + + for(i = 0; i < count; i++) { + FREEMEM(el_buf[i].buf); + } + + FREEMEM(el_buf); +} + +enum SET_OF__encode_method { + SOES_DER, /* Distinguished Encoding Rules */ + SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ +}; + +static struct _el_buffer * +SET_OF__encode_sorted(const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method) { + static struct _el_buffer *encoded_els; + int edx; + + encoded_els = + (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); + if(encoded_els == NULL) { + return NULL; + } + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + const void *memb_ptr = list->array[edx]; + struct _el_buffer *encoding_el = &encoded_els[edx]; + asn_enc_rval_t erval; + + if(!memb_ptr) break; + + /* + * Encode the member into the prepared space. + */ + switch(method) { + case SOES_DER: + erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, + _el_addbytes, encoding_el); + break; + case SOES_CUPER: + erval = uper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; + default: + assert(!"Unreachable"); + break; + } + if(erval.encoded < 0) break; + } + + if(edx == list->count) { + /* + * Sort the encoded elements according to their encoding. + */ + qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); + + return encoded_els; + } else { + SET_OF__encode_sorted_free(encoded_els, edx); + return NULL; + } +} + + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + int edx; + + ASN_DEBUG("Estimating size for SET OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + asn_enc_rval_t erval; + + if(!memb_ptr) ASN__ENCODE_FAILED; + + erval = + elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) return erval; + computed_size += erval.encoded; + } + + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = + der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + if(encoding_size < 0) { + ASN__ENCODE_FAILED; + } + computed_size += encoding_size; + + if(!cb || list->count == 0) { + asn_enc_rval_t erval; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + for(edx = 0; edx < list->count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { + break; + } else { + encoding_size += encoded_el->length; + } + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if(edx == list->count) { + asn_enc_rval_t erval; + assert(computed_size == (size_t)encoding_size); + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } else { + ASN__ENCODE_FAILED; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = ((const char *)buf_ptr) + num;\ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *element = td->elements; + const char *elm_tag; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* Which tag is expected for the downstream */ + if(specs->as_XMLValueList) { + elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; + } else { + elm_tag = (*element->name) + ? element->name : element->type->xml_tag; + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + */ + for(; ctx->phase <= 2;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Go inside the inner member of a set. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + + /* Invoke the inner type decoder, m.b. multiple times */ + ASN_DEBUG("XER/SET OF element [%s]", elm_tag); + tmprval = element->type->op->xer_decoder(opt_codec_ctx, + element->type, &ctx->ptr, elm_tag, + buf_ptr, size); + if(tmprval.code == RC_OK) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + ctx->ptr = 0; + XER_ADVANCE(tmprval.consumed); + } else { + XER_ADVANCE(tmprval.consumed); + RETURN(tmprval.code); + } + ctx->phase = 1; /* Back to body processing */ + ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, + buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", + tcv, ctx->phase, xml_tag); + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + /* No more things to decode */ + XER_ADVANCE(ch_size); + ctx->phase = 3; /* Phase out */ + RETURN(RC_OK); + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); + if(ctx->phase == 1) { + /* + * Process a single possible member. + */ + ctx->phase = 2; + continue; + } + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SET OF"); + break; + } + + ctx->phase = 3; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + + + +typedef struct xer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} xer_tmp_enc_t; +static int +SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { + xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} +static int +SET_OF_xer_order(const void *aptr, const void *bptr) { + const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; + const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + + +asn_enc_rval_t +SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + xer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_xer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + xer_tmp_enc_t *enc = encs; + xer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} + +int +SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int ret; + int i; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + _i_INDENT(1); + + ret = elm->type->op->print_struct(elm->type, memb_ptr, + ilevel + 1, cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + const asn_SET_OF_specifics_t *specs; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); + asn_struct_ctx_t *ctx; /* Decoder context */ + int i; + + /* + * Could not use set_of_empty() because of (*free) + * incompatibility. + */ + for(i = 0; i < list->count; i++) { + void *memb_ptr = list->array[i]; + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } + list->count = 0; /* No meaningful elements left */ + + asn_set_empty(list); /* Remove (list->array) */ + + specs = (const asn_SET_OF_specifics_t *)td->specifics; + ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); + if(ctx->ptr) { + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } + } +} + +int +SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + asn_constr_check_f *constr; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int i; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) constr = elm->type->encoding_constraints.general_constraints; + + /* + * Iterate over the members of an array. + * Validate each in turn, until one fails. + */ + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + int ret; + + if(!memb_ptr) continue; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = per_get_few_bits(pd, ct->effective_bits); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = uper_get_length(pd, -1, 0, &repeat); + ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", + nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) { + if(rv.consumed == 0 && nelems > 200) { + /* Protect from SET OF NULL compression bombs. */ + ASN__DECODE_FAILED; + } + continue; + } + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + + /* + * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + const struct _el_buffer *el = &encoded_els[edx]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if((ssize_t)encoded_edx == list->count) { + ASN__ENCODED_OK(er); + } else { + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, + ct ? ct->effective_bits : -1, &repeat); + ASN_DEBUG("Got to decode %d elements (eff %d)", + (int)nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) + continue; + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +struct comparable_ptr { + const asn_TYPE_descriptor_t *td; + const void *sptr; +}; + +static int +SET_OF__compare_cb(const void *aptr, const void *bptr) { + const struct comparable_ptr *a = aptr; + const struct comparable_ptr *b = bptr; + assert(a->td == b->td); + return a->td->op->compare_struct(a->td, a->sptr, b->sptr); +} + +int +SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); + const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); + + if(a && b) { + struct comparable_ptr *asorted; + struct comparable_ptr *bsorted; + ssize_t common_length; + ssize_t idx; + + if(a->count == 0) { + if(b->count) return -1; + return 0; + } else if(b->count == 0) { + return 1; + } + + asorted = MALLOC(a->count * sizeof(asorted[0])); + bsorted = MALLOC(b->count * sizeof(bsorted[0])); + if(!asorted || !bsorted) { + FREEMEM(asorted); + FREEMEM(bsorted); + return -1; + } + + for(idx = 0; idx < a->count; idx++) { + asorted[idx].td = td->elements->type; + asorted[idx].sptr = a->array[idx]; + } + + for(idx = 0; idx < b->count; idx++) { + bsorted[idx].td = td->elements->type; + bsorted[idx].sptr = b->array[idx]; + } + + qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); + qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); + + common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); + if(ret) { + FREEMEM(asorted); + FREEMEM(bsorted); + return ret; + } + } + + FREEMEM(asorted); + FREEMEM(bsorted); + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SET_OF = { + SET_OF_free, + SET_OF_print, + SET_OF_compare, + SET_OF_decode_ber, + SET_OF_encode_der, + SET_OF_decode_xer, + SET_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SET_OF_decode_oer, + SET_OF_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SET_OF_decode_uper, + SET_OF_encode_uper, + SET_OF_decode_aper, + 0, /* SET_OF_encode_aper */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + SET_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_SET_OF_specifics_t *specs = + (const asn_SET_OF_specifics_t *)td->specifics; + asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm = td->elements; + void *st = *sptr; + long max_elements = 5; + long slb = 0; /* Lower size bound */ + long sub = 0; /* Upper size bound */ + size_t rnd_len; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) { + return result_failed; + } + } + + switch(asn_random_between(0, 6)) { + case 0: max_elements = 0; break; + case 1: max_elements = 1; break; + case 2: max_elements = 5; break; + case 3: max_elements = max_length; break; + case 4: max_elements = max_length / 2; break; + case 5: max_elements = max_length / 4; break; + default: break; + } + sub = slb + max_elements; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_SEMI_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->lower_bound + max_elements; + } else if(pc->flags & APC_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->upper_bound; + if(sub - slb > max_elements) sub = slb + max_elements; + } + } + + /* Bias towards edges of allowed space */ + switch(asn_random_between(-1, 4)) { + default: + case -1: + /* Prepare lengths somewhat outside of constrained range. */ + if(constraints->per_constraints + && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { + switch(asn_random_between(0, 5)) { + default: + case 0: + rnd_len = 0; + break; + case 1: + if(slb > 0) { + rnd_len = slb - 1; + } else { + rnd_len = 0; + } + break; + case 2: + rnd_len = asn_random_between(0, slb); + break; + case 3: + if(sub < (ssize_t)max_length) { + rnd_len = sub + 1; + } else { + rnd_len = max_length; + } + break; + case 4: + if(sub < (ssize_t)max_length) { + rnd_len = asn_random_between(sub + 1, max_length); + } else { + rnd_len = max_length; + } + break; + case 5: + rnd_len = max_length; + break; + } + break; + } + /* Fall through */ + case 0: + rnd_len = asn_random_between(slb, sub); + break; + case 1: + if(slb < sub) { + rnd_len = asn_random_between(slb + 1, sub); + break; + } + /* Fall through */ + case 2: + rnd_len = asn_random_between(slb, slb); + break; + case 3: + if(slb < sub) { + rnd_len = asn_random_between(slb, sub - 1); + break; + } + /* Fall through */ + case 4: + rnd_len = asn_random_between(sub, sub); + break; + } + + for(; rnd_len > 0; rnd_len--) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + void *ptr = 0; + asn_random_fill_result_t tmpres = elm->type->op->random_fill( + elm->type, &ptr, &elm->encoding_constraints, + (max_length > res_ok.length ? max_length - res_ok.length : 0) + / rnd_len); + switch(tmpres.code) { + case ARFILL_OK: + ASN_SET_ADD(list, ptr); + res_ok.length += tmpres.length; + break; + case ARFILL_SKIPPED: + break; + case ARFILL_FAILED: + assert(ptr == 0); + return tmpres; + } + } + + return res_ok; +} + diff --git a/lib/s1ap3/asn1c/constr_SET_OF.h b/lib/s1ap3/asn1c/constr_SET_OF.h new file mode 100644 index 0000000000..768106271a --- /dev/null +++ b/lib/s1ap3/asn1c/constr_SET_OF.h @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef CONSTR_SET_OF_H +#define CONSTR_SET_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SET_OF_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* XER-specific stuff */ + int as_XMLValueList; /* The member type must be encoded like this */ +} asn_SET_OF_specifics_t; + +/* + * A set specialized functions dealing with the SET OF type. + */ +asn_struct_free_f SET_OF_free; +asn_struct_print_f SET_OF_print; +asn_struct_compare_f SET_OF_compare; +asn_constr_check_f SET_OF_constraint; +ber_type_decoder_f SET_OF_decode_ber; +der_type_encoder_f SET_OF_encode_der; +xer_type_decoder_f SET_OF_decode_xer; +xer_type_encoder_f SET_OF_encode_xer; +oer_type_decoder_f SET_OF_decode_oer; +oer_type_encoder_f SET_OF_encode_oer; +per_type_decoder_f SET_OF_decode_uper; +per_type_encoder_f SET_OF_encode_uper; +per_type_decoder_f SET_OF_decode_aper; +per_type_encoder_f SET_OF_encode_aper; +asn_random_fill_f SET_OF_random_fill; +extern asn_TYPE_operation_t asn_OP_SET_OF; + +#ifdef __cplusplus +} +#endif + +#endif /* CONSTR_SET_OF_H */ diff --git a/lib/s1ap3/asn1c/constr_SET_OF_oer.c b/lib/s1ap3/asn1c/constr_SET_OF_oer.c new file mode 100644 index 0000000000..88d7a2a1b4 --- /dev/null +++ b/lib/s1ap3/asn1c/constr_SET_OF_oer.c @@ -0,0 +1,285 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_DISABLE_OER_SUPPORT + +#include +#include +#include +#include + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) \ + do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#undef SET_PHASE +#define SET_PHASE(ctx, value) \ + do { \ + ctx->phase = value; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + return rval; \ + } while(0) + +/* + * The SEQUENCE OF and SET OF values utilize a "quantity field". + * It is is a pointless combination of #8.6 (length determinant, capable + * of encoding tiny and huge numbers in the shortest possible number of octets) + * and the variable sized integer. What could have been encoded by #8.6 alone + * is required to be encoded by #8.6 followed by that number of unsigned octets. + * This doesn't make too much sense. It seems that the original version of OER + * standard have been using the unconstrained unsigned integer as a quantity + * field, and this legacy have gone through ISO/ITU-T standardization process. + */ +static ssize_t +oer_fetch_quantity(const void *ptr, size_t size, size_t *qty_r) { + const uint8_t *b; + const uint8_t *bend; + size_t len = 0; + size_t qty; + + ssize_t len_len = oer_fetch_length(ptr, size, &len); + if(len_len <= 0) { + *qty_r = 0; + return len_len; + } + + if((len_len + len) > size) { + *qty_r = 0; + return 0; + } + + b = (const uint8_t *)ptr + len_len; + bend = b + len; + + /* Skip the leading 0-bytes */ + for(; b < bend && *b == 0; b++) { + } + + if((bend - b) > (ssize_t)sizeof(size_t)) { + /* Length is not representable by the native size_t type */ + *qty_r = 0; + return -1; + } + + for(qty = 0; b < bend; b++) { + qty = (qty << 8) + *b; + } + + if(qty > RSIZE_MAX) { /* A bit of C11 validation */ + *qty_r = 0; + return -1; + } + + *qty_r = qty; + assert((size_t)len_len + len == (size_t)(bend - (const uint8_t *)ptr)); + return len_len + len; +} + +asn_dec_rval_t +SET_OF_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *ptr, size_t size) { + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + asn_dec_rval_t rval = {RC_OK, 0}; + void *st = *struct_ptr; /* Target structure */ + asn_struct_ctx_t *ctx; /* Decoder context */ + size_t consumed_myself = 0; /* Consumed bytes from ptr. */ + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously. + */ + switch(ctx->phase) { + case 0: { + /* + * Fetch number of elements to decode. + */ + size_t length = 0; + size_t len_size = oer_fetch_quantity(ptr, size, &length); + switch(len_size) { + case 0: + RETURN(RC_WMORE); + case -1: + RETURN(RC_FAIL); + default: + ADVANCE(len_size); + ctx->left = length; + } + } + NEXT_PHASE(ctx); + /* FALL THROUGH */ + case 1: { + /* Decode components of the extension root */ + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + const void *base_ptr = ptr; + ber_tlv_len_t base_ctx_left = ctx->left; + + assert(td->elements_count == 1); + + ASN_DEBUG("OER SET OF %s Decoding PHASE 1", td->name); + + for(; ctx->left > 0; ctx->left--) { + asn_dec_rval_t rv = elm->type->op->oer_decoder( + opt_codec_ctx, elm->type, + elm->encoding_constraints.oer_constraints, &ctx->ptr, ptr, + size); + ADVANCE(rv.consumed); + switch(rv.code) { + case RC_OK: + if(ASN_SET_ADD(list, ctx->ptr) != 0) { + RETURN(RC_FAIL); + } else { + ctx->ptr = 0; + /* + * This check is to avoid compression bomb with + * specs like SEQUENCE/SET OF NULL which don't + * consume data at all. + */ + if(rv.consumed == 0 && base_ptr == ptr + && (base_ctx_left - ctx->left) > 200) { + ASN__DECODE_FAILED; + } + break; + } + case RC_WMORE: + RETURN(RC_WMORE); + case RC_FAIL: + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + SET_PHASE(ctx, 3); + RETURN(RC_FAIL); + } + } + /* Decoded decently. */ + NEXT_PHASE(ctx); + } + /* Fall through */ + case 2: + /* Ignore fully decoded */ + assert(ctx->left == 0); + RETURN(RC_OK); + case 3: + /* Failed to decode. */ + RETURN(RC_FAIL); + } + + return rval; +} + +static ssize_t +oer_put_quantity(size_t qty, asn_app_consume_bytes_f *cb, void *app_key) { + uint8_t buf[1 + sizeof(size_t)]; + uint8_t *b = &buf[sizeof(size_t)]; /* Last addressable */ + size_t encoded; + + do { + *b-- = qty; + qty >>= 8; + } while(qty); + + *b = sizeof(buf) - (b-buf) - 1; + encoded = sizeof(buf) - (b-buf); + if(cb(b, encoded, app_key) < 0) + return -1; + return encoded; +} + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +SET_OF_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_TYPE_member_t *elm; + const asn_anonymous_set_ *list; + size_t computed_size = 0; + ssize_t qty_len; + int n; + + (void)constraints; + + if(!sptr) ASN__ENCODE_FAILED; + + elm = td->elements; + list = _A_CSET_FROM_VOID(sptr); + + qty_len = oer_put_quantity(list->count, cb, app_key); + if(qty_len < 0) { + ASN__ENCODE_FAILED; + } + computed_size += qty_len; + + for(n = 0; n < list->count; n++) { + void *memb_ptr = list->array[n]; + asn_enc_rval_t er; + er = elm->type->op->oer_encoder( + elm->type, elm->encoding_constraints.oer_constraints, memb_ptr, cb, + app_key); + if(er.encoded < 0) { + return er; + } else { + computed_size += er.encoded; + } + } + + { + asn_enc_rval_t erval; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ diff --git a/lib/s1ap3/asn1c/constr_TYPE.c b/lib/s1ap3/asn1c/constr_TYPE.c new file mode 100644 index 0000000000..aefaefdb71 --- /dev/null +++ b/lib/s1ap3/asn1c/constr_TYPE.c @@ -0,0 +1,80 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Version of the ASN.1 infrastructure shipped with compiler. + */ +int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } + +static asn_app_consume_bytes_f _print2fp; + +/* + * Return the outmost tag of the type. + */ +ber_tlv_tag_t +asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { + + if(tag_mode) + return tag; + + if(type_descriptor->tags_count) + return type_descriptor->tags[0]; + + return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); +} + +/* + * Print the target language's structure in human readable form. + */ +int +asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, + const void *struct_ptr) { + if(!stream) stream = stdout; + if(!td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + /* Invoke type-specific printer */ + if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { + return -1; + } + + /* Terminate the output */ + if(_print2fp("\n", 1, stream)) { + return -1; + } + + return fflush(stream); +} + +/* Dump the data into the specified stdio stream */ +static int +_print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + + +/* + * Some compilers do not support variable args macros. + * This function is a replacement of ASN_DEBUG() macro. + */ +void ASN_DEBUG_f(const char *fmt, ...); +void ASN_DEBUG_f(const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} diff --git a/lib/s1ap3/asn1c/constr_TYPE.h b/lib/s1ap3/asn1c/constr_TYPE.h new file mode 100644 index 0000000000..d52cf6b0bd --- /dev/null +++ b/lib/s1ap3/asn1c/constr_TYPE.h @@ -0,0 +1,262 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This file contains the declaration structure called "ASN.1 Type Definition", + * which holds all information necessary for encoding and decoding routines. + * This structure even contains pointer to these encoding and decoding routines + * for each defined ASN.1 type. + */ +#ifndef _CONSTR_TYPE_H_ +#define _CONSTR_TYPE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_TYPE_member_s; /* Forward declaration */ + +/* + * This type provides the context information for various ASN.1 routines, + * primarily ones doing decoding. A member _asn_ctx of this type must be + * included into certain target language's structures, such as compound types. + */ +typedef struct asn_struct_ctx_s { + short phase; /* Decoding phase */ + short step; /* Elementary step of a phase */ + int context; /* Other context information */ + void *ptr; /* Decoder-specific stuff (stack elements) */ + ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ +} asn_struct_ctx_t; + +#include /* Basic Encoding Rules decoder */ +#include /* Distinguished Encoding Rules encoder */ +#include /* Decoder of XER (XML, text) */ +#include /* Encoder into XER (XML, text) */ +#include /* Packet Encoding Rules decoder */ +#include /* Packet Encoding Rules encoder */ +#include /* Subtype constraints support */ +#include /* Random structures support */ + +#ifdef ASN_DISABLE_OER_SUPPORT +typedef void (oer_type_decoder_f)(); +typedef void (oer_type_encoder_f)(); +typedef void asn_oer_constraints_t; +#else +#include /* Octet Encoding Rules encoder */ +#include /* Octet Encoding Rules encoder */ +#endif + +/* + * Free the structure according to its specification. + * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. + * Do not use directly. + */ +enum asn_struct_free_method { + ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ + ASFM_FREE_UNDERLYING, /* free underlying members */ + ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ +}; +typedef void (asn_struct_free_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + void *struct_ptr, enum asn_struct_free_method); + +/* + * Free the structure including freeing the memory pointed to by ptr itself. + */ +#define ASN_STRUCT_FREE(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) + +/* + * Free the memory used by the members of the structure without freeing the + * the structure pointer itself. + * ZERO-OUT the structure to the safe clean state. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + */ +#define ASN_STRUCT_RESET(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) + +/* + * Free memory used by the members of the structure without freeing + * the structure pointer itself. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + * AVOID using it in the application code; + * Use a safer ASN_STRUCT_RESET() instead. + */ +#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) + +/* + * Print the structure according to its specification. + */ +typedef int(asn_struct_print_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, + int level, /* Indentation level */ + asn_app_consume_bytes_f *callback, void *app_key); + +/* + * Compare two structs between each other. + * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", + * and =0 if "equal to", for some type-specific, stable definition of + * "smaller", "greater" and "equal to". + */ +typedef int (asn_struct_compare_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_A, + const void *struct_B); + +/* + * Return the outmost tag of the type. + * If the type is untagged CHOICE, the dynamic operation is performed. + * NOTE: This function pointer type is only useful internally. + * Do not use it in your application. + */ +typedef ber_tlv_tag_t (asn_outmost_tag_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); +/* The instance of the above function type; used internally. */ +asn_outmost_tag_f asn_TYPE_outmost_tag; + +/* + * Fetch the desired type of the Open Type based on the + * Information Object Set driven constraints. + */ +typedef struct asn_type_selector_result_s { + const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ + unsigned presence_index; /* Associated choice variant. */ +} asn_type_selector_result_t; +typedef asn_type_selector_result_t(asn_type_selector_f)( + const struct asn_TYPE_descriptor_s *parent_type_descriptor, + const void *parent_structure_ptr); + +/* + * Generalized functions for dealing with the speciic type. + * May be directly invoked by applications. + */ +typedef struct asn_TYPE_operation_s { + asn_struct_free_f *free_struct; /* Free the structure */ + asn_struct_print_f *print_struct; /* Human readable output */ + asn_struct_compare_f *compare_struct; /* Compare two structures */ + ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ + der_type_encoder_f *der_encoder; /* Canonical DER encoder */ + xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ + xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ + oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ + oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ + per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ + per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ + per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ + per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ + asn_random_fill_f *random_fill; /* Initialize with a random value */ + asn_outmost_tag_f *outmost_tag; /* */ +} asn_TYPE_operation_t; + +/* + * A constraints tuple specifying both the OER and PER constraints. + */ +typedef struct asn_encoding_constraints_s { + const struct asn_oer_constraints_s *oer_constraints; + const struct asn_per_constraints_s *per_constraints; + asn_constr_check_f *general_constraints; +} asn_encoding_constraints_t; + +/* + * The definitive description of the destination language's structure. + */ +typedef struct asn_TYPE_descriptor_s { + const char *name; /* A name of the ASN.1 type. "" in some cases. */ + const char *xml_tag; /* Name used in XML tag */ + + /* + * Generalized functions for dealing with the specific type. + * May be directly invoked by applications. + */ + asn_TYPE_operation_t *op; + + /*********************************************************************** + * Internally useful members. Not to be used by applications directly. * + **********************************************************************/ + + /* + * Tags that are expected to occur. + */ + const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ + unsigned tags_count; /* Number of tags which are expected */ + const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ + unsigned all_tags_count; /* Number of tags */ + + /* OER, PER, and general constraints */ + asn_encoding_constraints_t encoding_constraints; + + /* + * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). + */ + struct asn_TYPE_member_s *elements; + unsigned elements_count; + + /* + * Additional information describing the type, used by appropriate + * functions above. + */ + const void *specifics; +} asn_TYPE_descriptor_t; + +/* + * This type describes an element of the constructed type, + * i.e. SEQUENCE, SET, CHOICE, etc. + */ + enum asn_TYPE_flags_e { + ATF_NOFLAGS, + ATF_POINTER = 0x01, /* Represented by the pointer */ + ATF_OPEN_TYPE = 0x02, /* Open Type */ + ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ + }; +typedef struct asn_TYPE_member_s { + enum asn_TYPE_flags_e flags; /* Element's presentation flags */ + unsigned optional; /* Following optional members, including current */ + unsigned memb_offset; /* Offset of the element */ + ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ + int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ + asn_TYPE_descriptor_t *type; /* Member type descriptor */ + asn_type_selector_f *type_selector; /* IoS runtime type selector */ + asn_encoding_constraints_t encoding_constraints; + int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ + int (*default_value_set)(void **sptr); /* Set DEFAULT */ + const char *name; /* ASN.1 identifier of the element */ +} asn_TYPE_member_t; + +/* + * BER tag to element number mapping. + */ +typedef struct asn_TYPE_tag2member_s { + ber_tlv_tag_t el_tag; /* Outmost tag of the member */ + unsigned el_no; /* Index of the associated member, base 0 */ + int toff_first; /* First occurence of the el_tag, relative */ + int toff_last; /* Last occurence of the el_tag, relative */ +} asn_TYPE_tag2member_t; + +/* + * This function prints out the contents of the target language's structure + * (struct_ptr) into the file pointer (stream) in human readable form. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem dumping the structure. + * (See also xer_fprint() in xer_encoder.h) + */ +int asn_fprint(FILE *stream, /* Destination stream descriptor */ + const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ + const void *struct_ptr); /* Structure to be printed */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_TYPE_H_ */ diff --git a/lib/s1ap3/asn1c/constraints.c b/lib/s1ap3/asn1c/constraints.c new file mode 100644 index 0000000000..df3c6c1948 --- /dev/null +++ b/lib/s1ap3/asn1c/constraints.c @@ -0,0 +1,93 @@ +#include +#include + +int +asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Nothing to check */ + return 0; +} + +int +asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Unknown how to check */ + return 0; +} + +struct errbufDesc { + const asn_TYPE_descriptor_t *failed_type; + const void *failed_struct_ptr; + char *errbuf; + size_t errlen; +}; + +static void +_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, + const char *fmt, ...) { + struct errbufDesc *arg = key; + va_list ap; + ssize_t vlen; + ssize_t maxlen; + + arg->failed_type = td; + arg->failed_struct_ptr = sptr; + + maxlen = arg->errlen; + if(maxlen <= 0) + return; + + va_start(ap, fmt); + vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); + va_end(ap); + if(vlen >= maxlen) { + arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ + arg->errlen = maxlen - 1; /* Not counting termination */ + return; + } else if(vlen >= 0) { + arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ + arg->errlen = vlen; /* Not counting termination */ + } else { + /* + * The libc on this system is broken. + */ + vlen = sizeof("") - 1; + maxlen--; + arg->errlen = vlen < maxlen ? vlen : maxlen; + memcpy(arg->errbuf, "", arg->errlen); + arg->errbuf[arg->errlen] = 0; + } + + return; +} + +int +asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, char *errbuf, size_t *errlen) { + struct errbufDesc arg; + int ret; + + arg.failed_type = 0; + arg.failed_struct_ptr = 0; + arg.errbuf = errbuf; + arg.errlen = errlen ? *errlen : 0; + + ret = type_descriptor->encoding_constraints.general_constraints( + type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) *errlen = arg.errlen; + + return ret; +} + diff --git a/lib/s1ap3/asn1c/constraints.h b/lib/s1ap3/asn1c/constraints.h new file mode 100644 index 0000000000..0bd86a96bf --- /dev/null +++ b/lib/s1ap3/asn1c/constraints.h @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN1_CONSTRAINTS_VALIDATOR_H +#define ASN1_CONSTRAINTS_VALIDATOR_H + +#include /* Platform-dependent types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Validate the structure according to the ASN.1 constraints. + * If errbuf and errlen are given, they shall be pointing to the appropriate + * buffer space and its length before calling this function. Alternatively, + * they could be passed as NULL's. If constraints validation fails, + * errlen will contain the actual number of bytes taken from the errbuf + * to encode an error message (properly 0-terminated). + * + * RETURN VALUES: + * This function returns 0 in case all ASN.1 constraints are met + * and -1 if one or more constraints were failed. + */ +int asn_check_constraints( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Target language's structure */ + char *errbuf, /* Returned error description */ + size_t *errlen /* Length of the error description */ +); + + +/* + * Generic type for constraint checking callback, + * associated with every type descriptor. + */ +typedef int(asn_constr_check_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, + asn_app_constraint_failed_f *optional_callback, /* Log the error */ + void *optional_app_key /* Opaque key passed to a callback */ +); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ +asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ + +/* + * Invoke the callback with a complete error message. + */ +#define ASN__CTFAIL if(ctfailcb) ctfailcb + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/lib/s1ap3/asn1c/der_encoder.c b/lib/s1ap3/asn1c/der_encoder.c new file mode 100644 index 0000000000..2c6a6f769b --- /dev/null +++ b/lib/s1ap3/asn1c/der_encoder.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, int constructed); + +/* + * The DER encoder of any type. + */ +asn_enc_rval_t +der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("DER encoder invoked for %s", + type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->der_encoder( + type_descriptor, struct_ptr, /* Pointer to the destination structure */ + 0, 0, consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for der_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the der_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + ec = type_descriptor->op->der_encoder(type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + 0, 0, encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + return ec; +} + + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t +der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, + int tag_mode, int last_tag_form, + ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ + asn_app_consume_bytes_f *cb, void *app_key) { +#define ASN1_DER_MAX_TAGS_COUNT 4 + ber_tlv_tag_t + tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; + ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; + const ber_tlv_tag_t *tags; /* Copy of tags stream */ + int tags_count; /* Number of tags */ + size_t overall_length; + int i; + + ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", + sd->name, tag_mode, sd->tags_count, + ber_tlv_tag_string(tag), + tag_mode + ?(sd->tags_count+1 + -((tag_mode == -1) && sd->tags_count)) + :sd->tags_count + ); + + if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { + ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); + return -1; + } + + if(tag_mode) { + /* + * Instead of doing shaman dance like we do in ber_check_tags(), + * allocate a small array on the stack + * and initialize it appropriately. + */ + int stag_offset; + ber_tlv_tag_t *tags_buf = tags_buf_scratch; + tags_count = sd->tags_count + + 1 /* EXPLICIT or IMPLICIT tag is given */ + - ((tag_mode == -1) && sd->tags_count); + /* Copy tags over */ + tags_buf[0] = tag; + stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); + for(i = 1; i < tags_count; i++) + tags_buf[i] = sd->tags[i + stag_offset]; + tags = tags_buf; + } else { + tags = sd->tags; + tags_count = sd->tags_count; + } + + /* No tags to write */ + if(tags_count == 0) + return 0; + + /* + * Array of tags is initialized. + * Now, compute the size of the TLV pairs, from right to left. + */ + overall_length = struct_length; + for(i = tags_count - 1; i >= 0; --i) { + lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); + if(lens[i] == -1) return -1; + overall_length += lens[i]; + lens[i] = overall_length - lens[i]; + } + + if(!cb) return overall_length - struct_length; + + ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, + tags_count); + + /* + * Encode the TL sequence for real. + */ + for(i = 0; i < tags_count; i++) { + ssize_t len; + int _constr; + + /* Check if this tag happens to be constructed */ + _constr = (last_tag_form || i < (tags_count - 1)); + + len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); + if(len == -1) return -1; + } + + return overall_length - struct_length; +} + +static ssize_t +der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, + int constructed) { + uint8_t buf[32]; + size_t size = 0; + int buf_size = cb?sizeof(buf):0; + ssize_t tmp; + + /* Serialize tag (T from TLV) into possibly zero-length buffer */ + tmp = ber_tlv_tag_serialize(tag, buf, buf_size); + if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; + size += tmp; + + /* Serialize length (L from TLV) into possibly zero-length buffer */ + tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); + if(tmp == -1) return -1; + size += tmp; + + if(size > sizeof(buf)) + return -1; + + /* + * If callback is specified, invoke it, and check its return value. + */ + if(cb) { + if(constructed) *buf |= 0x20; + if(cb(buf, size, app_key) < 0) + return -1; + } + + return size; +} diff --git a/lib/s1ap3/asn1c/der_encoder.h b/lib/s1ap3/asn1c/der_encoder.h new file mode 100644 index 0000000000..e93944edc2 --- /dev/null +++ b/lib/s1ap3/asn1c/der_encoder.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _DER_ENCODER_H_ +#define _DER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The DER encoder of any type. May be invoked by the application. + * Produces DER- and BER-compliant encoding. (DER is a subset of BER). + * + * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data + * produced by der_encode(). + */ +asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of der_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t der_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic DER encoder. + */ +typedef asn_enc_rval_t(der_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, + size_t struct_length, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {0,!0}: prim, constructed */ + ber_tlv_tag_t tag, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _DER_ENCODER_H_ */ diff --git a/lib/s1ap3/asn1c/oer_decoder.c b/lib/s1ap3/asn1c/oer_decoder.c new file mode 100644 index 0000000000..070173826d --- /dev/null +++ b/lib/s1ap3/asn1c/oer_decoder.c @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * The OER decoder of any type. + */ +asn_dec_rval_t +oer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->oer_decoder(opt_codec_ctx, type_descriptor, 0, + struct_ptr, /* Pointer to the destination structure */ + ptr, size /* Buffer and its size */ + ); +} + +/* + * Open Type is encoded as a length (#8.6) followed by that number of bytes. + * Since we're just skipping, reading the length would be enough. + */ +ssize_t +oer_open_type_skip(const void *bufptr, size_t size) { + size_t len = 0; + return oer_fetch_length(bufptr, size, &len); +} + +/* + * Read the Open Type (X.696 (08/2015), #30). + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t +oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *td, + const asn_oer_constraints_t *constraints, void **struct_ptr, + const void *bufptr, size_t size) { + asn_dec_rval_t dr; + size_t container_len = 0; + ssize_t len_len; + enum asn_struct_free_method dispose_method = + (*struct_ptr) ? ASFM_FREE_UNDERLYING_AND_RESET : ASFM_FREE_EVERYTHING; + + /* Get the size of a length determinant */ + len_len = oer_fetch_length(bufptr, size, &container_len); + if(len_len <= 0) { + return len_len; /* Error or more data expected */ + } + + /* + * len_len can't be bigger than size, but size without len_len + * should be bigger or equal to container length + */ + if(size - len_len < container_len) { + /* More data is expected */ + return 0; + } + + dr = td->op->oer_decoder(opt_codec_ctx, td, constraints, struct_ptr, + (const uint8_t *)bufptr + len_len, container_len); + if(dr.code == RC_OK) { + return len_len + container_len; + } else { + /* Even if RC_WMORE, we can't get more data into a closed container. */ + td->op->free_struct(td, *struct_ptr, dispose_method); + *struct_ptr = NULL; + return -1; + } +} + + +asn_dec_rval_t +oer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval = {RC_OK, 0}; + size_t expected_length = 0; + ssize_t len_len; + + (void)td; + (void)opt_codec_ctx; + (void)constraints; + + if(!st) { + st = (ASN__PRIMITIVE_TYPE_t *)(*sptr = CALLOC( + 1, sizeof(ASN__PRIMITIVE_TYPE_t))); + if(!st) ASN__DECODE_FAILED; + } + + + /* + * X.696 (08/2015) #27.2 + * Encode length determinant as _number of octets_, but only + * if upper bound is not equal to lower bound. + */ + len_len = oer_fetch_length(ptr, size, &expected_length); + if(len_len > 0) { + rval.consumed = len_len; + ptr = (const char *)ptr + len_len; + size -= len_len; + } else if(len_len == 0) { + ASN__DECODE_STARVED; + } else if(len_len < 0) { + ASN__DECODE_FAILED; + } + + if(size < expected_length) { + ASN__DECODE_STARVED; + } else { + uint8_t *buf = MALLOC(expected_length + 1); + if(buf == NULL) { + ASN__DECODE_FAILED; + } else { + memcpy(buf, ptr, expected_length); + buf[expected_length] = '\0'; + } + FREEMEM(st->buf); + st->buf = buf; + st->size = expected_length; + + rval.consumed += expected_length; + return rval; + } +} diff --git a/lib/s1ap3/asn1c/oer_decoder.h b/lib/s1ap3/asn1c/oer_decoder.h new file mode 100644 index 0000000000..40992e9480 --- /dev/null +++ b/lib/s1ap3/asn1c/oer_decoder.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef OER_DECODER_H +#define OER_DECODER_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The Octet Encoding Rules (OER, X.696 08/2015) decoder for any given type. + * This function may be invoked directly by the application. + * Parses CANONICAL-OER and BASIC-OER. + */ +asn_dec_rval_t oer_decode(const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ + ); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(oer_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_oer_constraints_t *constraints, + void **struct_ptr, + const void *buf_ptr, + size_t size); + +/* + * Swallow the Open Type (X.696 (08/2015), #30) into /dev/null. + * RETURN VALUES: + * -1: Fatal error deciphering length. + * 0: More data expected than bufptr contains. + * >0: Number of bytes used from bufptr. + */ +ssize_t oer_open_type_skip(const void *bufptr, size_t size); + +/* + * Read the Open Type (X.696 (08/2015), #30). + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t oer_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *td, + const asn_oer_constraints_t *constraints, + void **struct_ptr, const void *bufptr, size_t size); + +/* + * Length-prefixed buffer decoding for primitive types. + */ +oer_type_decoder_f oer_decode_primitive; + + +#ifdef __cplusplus +} +#endif + +#endif /* OER_DECODER_H */ diff --git a/lib/s1ap3/asn1c/oer_encoder.c b/lib/s1ap3/asn1c/oer_encoder.c new file mode 100644 index 0000000000..895aed4ecb --- /dev/null +++ b/lib/s1ap3/asn1c/oer_encoder.c @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * The OER encoder of any type. + */ +asn_enc_rval_t +oer_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("OER encoder invoked for %s", type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->oer_encoder( + type_descriptor, 0, + struct_ptr, /* Pointer to the destination structure */ + consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for oer_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int +encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the oer_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +oer_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + if(type_descriptor->op->oer_encoder == NULL) { + ec.encoded = -1; + ec.failed_type = type_descriptor; + ec.structure_ptr = struct_ptr; + ASN_DEBUG("OER encoder is not defined for %s", + type_descriptor->name); + } else { + ec = type_descriptor->op->oer_encoder( + type_descriptor, constraints, + struct_ptr, /* Pointer to the destination structure */ + encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + } + return ec; +} + +asn_enc_rval_t +oer_encode_primitive(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + ssize_t ret; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s (%" ASN_PRI_SIZE " bytes)", td ? td->name : "", st->size); + + /* + * X.696 (08/2015) #27.2 + */ + ret = oer_serialize_length(st->size, cb, app_key); + if(ret < 0) { + ASN__ENCODE_FAILED; + } + er.encoded += ret; + + er.encoded += st->size; + if(cb(st->buf, st->size, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +static int +oer__count_bytes(const void *buffer, size_t size, void *bytes_ptr) { + size_t *bytes = bytes_ptr; + (void)buffer; + *bytes += size; + return 0; +} + +ssize_t +oer_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t serialized_byte_count = 0; + asn_enc_rval_t er; + ssize_t len_len; + + er = td->op->oer_encoder(td, constraints, sptr, oer__count_bytes, + &serialized_byte_count); + if(er.encoded < 0) return -1; + assert(serialized_byte_count == (size_t)er.encoded); + + len_len = oer_serialize_length(serialized_byte_count, cb, app_key); + if(len_len == -1) return -1; + + er = td->op->oer_encoder(td, constraints, sptr, cb, app_key); + if(er.encoded < 0) return -1; + assert(serialized_byte_count == (size_t)er.encoded); + + return len_len + er.encoded; +} + diff --git a/lib/s1ap3/asn1c/oer_encoder.h b/lib/s1ap3/asn1c/oer_encoder.h new file mode 100644 index 0000000000..6a7b68125c --- /dev/null +++ b/lib/s1ap3/asn1c/oer_encoder.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef OER_ENCODER_H +#define OER_ENCODER_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The Octet Encoding Rules (OER, X.696 08/2015) encoder for any type. + * This function may be invoked directly by the application. + * Produces CANONICAL-OER output compatible with CANONICAL-OER + * and BASIC-OER decoders. + */ +asn_enc_rval_t oer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of oer_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t oer_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic OER encoder. + */ +typedef asn_enc_rval_t(oer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * Write out the Open Type (X.696 (08/2015), #30). + * RETURN VALUES: + * -1: Fatal error encoding the type. + * >0: Number of bytes serialized. + */ +ssize_t oer_open_type_put(const struct asn_TYPE_descriptor_s *td, + const asn_oer_constraints_t *constraints, + const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + + +/* + * Length-prefixed buffer encoding for primitive types. + */ +oer_type_encoder_f oer_encode_primitive; + +#ifdef __cplusplus +} +#endif + +#endif /* OER_ENCODER_H */ diff --git a/lib/s1ap3/asn1c/oer_support.c b/lib/s1ap3/asn1c/oer_support.c new file mode 100644 index 0000000000..b15a3bc939 --- /dev/null +++ b/lib/s1ap3/asn1c/oer_support.c @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +#include + +/* + * Fetch the length determinant (X.696 08/2015, #8.6) into *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t +oer_fetch_length(const void *bufptr, size_t size, size_t *len_r) { + uint8_t first_byte; + size_t len_len; /* Length of the length determinant */ + const uint8_t *b; + const uint8_t *bend; + size_t len; + + if(size == 0) { + *len_r = 0; + return 0; + } + + first_byte = *(const uint8_t *)bufptr; + if((first_byte & 0x80) == 0) { /* Short form */ + *len_r = first_byte; /* 0..127 */ + return 1; + } + + len_len = (first_byte & 0x7f); + if((1 + len_len) > size) { + *len_r = 0; + return 0; + } + + b = (const uint8_t *)bufptr + 1; + bend = b + len_len; + + for(; b < bend && *b == 0; b++) { + /* Skip the leading 0-bytes */ + } + + if((bend - b) > (ssize_t)sizeof(size_t)) { + /* Length is not representable by the native size_t type */ + *len_r = 0; + return -1; + } + + for(len = 0; b < bend; b++) { + len = (len << 8) + *b; + } + + if(len > RSIZE_MAX) { /* A bit of C11 validation */ + *len_r = 0; + return -1; + } + + *len_r = len; + assert(len_len + 1 == (size_t)(bend - (const uint8_t *)bufptr)); + return len_len + 1; +} + + +/* + * Serialize OER length. Returns the number of bytes serialized + * or -1 if a given callback returned with negative result. + */ +ssize_t +oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, + void *app_key) { + uint8_t scratch[1 + sizeof(length)]; + uint8_t *sp = scratch; + int littleEndian = 1; /* Run-time detection */ + const uint8_t *pstart; + const uint8_t *pend; + const uint8_t *p; + int add; + + if(length <= 127) { + uint8_t b = length; + if(cb(&b, 1, app_key) < 0) { + return -1; + } + return 1; + } + + if(*(char *)&littleEndian) { + pstart = (const uint8_t *)&length + sizeof(length) - 1; + pend = (const uint8_t *)&length; + add = -1; + } else { + pstart = (const uint8_t *)&length; + pend = pstart + sizeof(length); + add = 1; + } + + for(p = pstart; p != pend; p += add) { + /* Skip leading zeros. */ + if(*p) break; + } + + for(sp = scratch + 1; ; p += add) { + *sp++ = *p; + if(p == pend) break; + } + assert((sp - scratch) - 1 <= 0x7f); + scratch[0] = 0x80 + ((sp - scratch) - 1); + + if(cb(scratch, sp - scratch, app_key) < 0) { + return -1; + } + + return sp - scratch; +} + diff --git a/lib/s1ap3/asn1c/oer_support.h b/lib/s1ap3/asn1c/oer_support.h new file mode 100644 index 0000000000..dbc9b5fcff --- /dev/null +++ b/lib/s1ap3/asn1c/oer_support.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef OER_SUPPORT_H +#define OER_SUPPORT_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed OER constraints. + */ +typedef struct asn_oer_constraint_number_s { + unsigned width; /* ±8,4,2,1 fixed bytes */ + unsigned positive; /* 1 for unsigned number, 0 for signed */ +} asn_oer_constraint_number_t; +typedef struct asn_oer_constraints_s { + asn_oer_constraint_number_t value; + ssize_t size; /* -1 (no constraint) or >= 0 */ +} asn_oer_constraints_t; + + +/* + * Fetch the length determinant (X.696 (08/2015), #8.6) into *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + */ +ssize_t oer_fetch_length(const void *bufptr, size_t size, size_t *len_r); + +/* + * Serialize OER length. Returns the number of bytes serialized + * or -1 if a given callback returned with negative result. + */ +ssize_t oer_serialize_length(size_t length, asn_app_consume_bytes_f *cb, void *app_key); + + +#ifdef __cplusplus +} +#endif + +#endif /* OER_SUPPORT_H */ diff --git a/lib/s1ap3/asn1c/per_decoder.c b/lib/s1ap3/asn1c/per_decoder.c new file mode 100644 index 0000000000..8a3e39df8d --- /dev/null +++ b/lib/s1ap3/asn1c/per_decoder.c @@ -0,0 +1,185 @@ +#include +#include +#include + +/* + * Decode a "Production of a complete encoding", X.691#10.1. + * The complete encoding contains at least one byte, and is an integral + * multiple of 8 bytes. + */ +asn_dec_rval_t +uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +uper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %ld, counted %ld", + (long)rval.consumed, (long)pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + +asn_dec_rval_t +aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +aper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %zu, counted %zu", + rval.consumed, pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + diff --git a/lib/s1ap3/asn1c/per_decoder.h b/lib/s1ap3/asn1c/per_decoder.h new file mode 100644 index 0000000000..eea474a9ea --- /dev/null +++ b/lib/s1ap3/asn1c/per_decoder.h @@ -0,0 +1,82 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_DECODER_H_ +#define _PER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. + * On success, this call always returns (.consumed >= 1), as per #11.1.3. + */ +asn_dec_rval_t uper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t uper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of the input data buffer, in bytes */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ +); + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ + ); + +/* + * Aligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t aper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of data buffer */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ + ); + +/* + * Type of the type-specific PER decoder function. + */ +typedef asn_dec_rval_t(per_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, void **struct_ptr, + asn_per_data_t *per_data); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_DECODER_H_ */ diff --git a/lib/s1ap3/asn1c/per_encoder.c b/lib/s1ap3/asn1c/per_encoder.c new file mode 100644 index 0000000000..a5d73ced0b --- /dev/null +++ b/lib/s1ap3/asn1c/per_encoder.c @@ -0,0 +1,265 @@ +#include +#include +#include + +static int _uper_encode_flush_outp(asn_per_outp_t *po); + +static int +ignore_output(const void *data, size_t size, void *app_key) { + (void)data; + (void)size; + (void)app_key; + return 0; +} + +asn_enc_rval_t +uper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->uper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; + } + + return er; +} + +/* + * Argument type and callback necessary for uper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); + + return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +typedef struct enc_dyn_arg { + void *buffer; + size_t length; + size_t allocated; +} enc_dyn_arg; +static int +encode_dyn_cb(const void *buffer, size_t size, void *key) { + enc_dyn_arg *arg = key; + if(arg->length + size >= arg->allocated) { + size_t new_size = arg->allocated ? arg->allocated : 8; + void *p; + + do { + new_size <<= 2; + } while(arg->length + size >= new_size); + + p = REALLOC(arg->buffer, new_size); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + arg->allocated = new_size; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} +ssize_t +uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_uper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); +} + +asn_enc_rval_t +aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); + + return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +static int +_aper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + if (po->output) { + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); + } + return 0; +} + +asn_enc_rval_t +aper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->aper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_aper_encode_flush_outp(&po)) + ASN__ENCODE_FAILED; + } + + return er; +} diff --git a/lib/s1ap3/asn1c/per_encoder.h b/lib/s1ap3/asn1c/per_encoder.h new file mode 100644 index 0000000000..b615ef0286 --- /dev/null +++ b/lib/s1ap3/asn1c/per_encoder.h @@ -0,0 +1,93 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_ENCODER_H_ +#define _PER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t uper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +asn_enc_rval_t aper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of uper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t uper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +asn_enc_rval_t aper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); +/* + * A variant of uper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of uper_encode() and uper_encode_to_buffer(). + */ +ssize_t uper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +ssize_t +aper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *td, + const asn_per_constraints_t *constraints, + const void *sptr, + void **buffer_r +); + +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t(per_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/lib/s1ap3/asn1c/per_opentype.c b/lib/s1ap3/asn1c/per_opentype.c new file mode 100644 index 0000000000..ef5438d746 --- /dev/null +++ b/lib/s1ap3/asn1c/per_opentype.c @@ -0,0 +1,535 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +typedef struct uper_ugot_key { + asn_per_data_t oldpd; /* Old per data source */ + size_t unclaimed; + size_t ot_moved; /* Number of bits moved by OT processing */ + int repeat; +} uper_ugot_key; + +static int uper_ugot_refill(asn_per_data_t *pd); +static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); +static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +/* + * Encode an "open type field". + * #10.1, #10.2 + */ +int +uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, + size); + + bptr = buf; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE + " to %s and allowing to save %" ASN_PRI_SSIZE, + size, td->name, may_save); + if(may_save < 0) break; + if(per_put_many_bits(po, bptr, may_save * 8)) break; + bptr = (char *)bptr + may_save; + size -= may_save; + if(need_eom && uper_put_length(po, 0, 0)) { + FREEMEM(buf); + return -1; + } + } while(size); + + FREEMEM(buf); + if(size) return -1; + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = uper_get_length(pd, -1, 0, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if ((padding < 8 || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("Non-zero padding"); + ASN__DECODE_FAILED; + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +static asn_dec_rval_t CC_NOTUSED +uper_open_type_get_complex(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + uper_ugot_key arg; + asn_dec_rval_t rv; + ssize_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s from %s", td->name, + asn_bit_data_string(pd)); + arg.oldpd = *pd; + arg.unclaimed = 0; + arg.ot_moved = 0; + arg.repeat = 1; + pd->refill = uper_ugot_refill; + pd->refill_key = &arg; + pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ + pd->moved = 0; /* This now counts the open type size in bits */ + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); + ASN_DEBUG_INDENT_ADD(-4); + +#define UPDRESTOREPD do { \ + /* buffer and nboff are valid, preserve them. */ \ + pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ + pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ + pd->refill = arg.oldpd.refill; \ + pd->refill_key = arg.oldpd.refill_key; \ + } while(0) + + if(rv.code != RC_OK) { + UPDRESTOREPD; + return rv; + } + + ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, + asn_bit_data_string(pd), + asn_bit_data_string(&arg.oldpd), + (int)arg.unclaimed, (int)arg.repeat); + + padding = pd->moved % 8; + if(padding) { + int32_t pvalue; + if(padding > 7) { + ASN_DEBUG("Too large padding %d in open type", + (int)padding); + rv.code = RC_FAIL; + UPDRESTOREPD; + return rv; + } + padding = 8 - padding; + ASN_DEBUG("Getting padding of %d bits", (int)padding); + pvalue = per_get_few_bits(pd, padding); + switch(pvalue) { + case -1: + ASN_DEBUG("Padding skip failed"); + UPDRESTOREPD; + ASN__DECODE_STARVED; + case 0: break; + default: + ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", + (int)padding, (int)pvalue); + UPDRESTOREPD; + ASN__DECODE_FAILED; + } + } + if(pd->nboff != pd->nbits) { + ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, + asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); + if(1) { + UPDRESTOREPD; + ASN__DECODE_FAILED; + } else { + arg.unclaimed += pd->nbits - pd->nboff; + } + } + + /* Adjust pd back so it points to original data */ + UPDRESTOREPD; + + /* Skip data not consumed by the decoder */ + if(arg.unclaimed) { + ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); + switch(per_skip_bits(pd, arg.unclaimed)) { + case -1: + ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); + ASN__DECODE_STARVED; + case 0: + ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); + break; + default: + /* Padding must be blank */ + ASN_DEBUG("Non-blank unconsumed padding"); + ASN__DECODE_FAILED; + } + arg.unclaimed = 0; + } + + if(arg.repeat) { + ASN_DEBUG("Not consumed the whole thing"); + rv.code = RC_FAIL; + return rv; + } + + return rv; +} + + +asn_dec_rval_t +uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_TYPE_operation_t s_op; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.op = &s_op; + s_op.uper_decoder = uper_sot_suck; + + rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + +/* + * Internal functions. + */ + +static asn_dec_rval_t +uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)ctx; + (void)td; + (void)constraints; + (void)sptr; + + while(per_get_few_bits(pd, 1) >= 0); + + rv.code = RC_OK; + rv.consumed = pd->moved; + + return rv; +} + +static int +uper_ugot_refill(asn_per_data_t *pd) { + uper_ugot_key *arg = pd->refill_key; + ssize_t next_chunk_bytes, next_chunk_bits; + ssize_t avail; + + asn_per_data_t *oldpd = &arg->oldpd; + + ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", + (long)pd->moved, (long)oldpd->moved); + + /* Advance our position to where pd is */ + oldpd->buffer = pd->buffer; + oldpd->nboff = pd->nboff; + oldpd->nbits -= pd->moved - arg->ot_moved; + oldpd->moved += pd->moved - arg->ot_moved; + arg->ot_moved = pd->moved; + + if(arg->unclaimed) { + /* Refill the container */ + if(per_get_few_bits(oldpd, 1)) + return -1; + if(oldpd->nboff == 0) { + assert(0); + return -1; + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff - 1; + pd->nbits = oldpd->nbits; + ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", + (long)pd->moved); + return 0; + } + + if(!arg->repeat) { + ASN_DEBUG("Want more but refill doesn't have it"); + return -1; + } + + next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); + ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", + (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); + if(next_chunk_bytes < 0) return -1; + if(next_chunk_bytes == 0) { + pd->refill = 0; /* No more refills, naturally */ + assert(!arg->repeat); /* Implementation guarantee */ + } + next_chunk_bits = next_chunk_bytes << 3; + avail = oldpd->nbits - oldpd->nboff; + if(avail >= next_chunk_bits) { + pd->nbits = oldpd->nboff + next_chunk_bits; + arg->unclaimed = 0; + ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", + (long)next_chunk_bits, (long)oldpd->moved, + (long)oldpd->nboff, (long)oldpd->nbits, + (long)(oldpd->nbits - oldpd->nboff)); + } else { + pd->nbits = oldpd->nbits; + arg->unclaimed = next_chunk_bits - avail; + ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", + (long)avail, (long)next_chunk_bits, + (long)arg->unclaimed); + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff; + ASN_DEBUG("Refilled pd%s old%s", + asn_bit_data_string(pd), asn_bit_data_string(oldpd)); + return 0; +} + +static int +per_skip_bits(asn_per_data_t *pd, int skip_nbits) { + int hasNonZeroBits = 0; + while(skip_nbits > 0) { + int skip; + + /* per_get_few_bits() is more efficient when nbits <= 24 */ + if(skip_nbits < 24) + skip = skip_nbits; + else + skip = 24; + skip_nbits -= skip; + + switch(per_get_few_bits(pd, skip)) { + case -1: return -1; /* Starving */ + case 0: continue; /* Skipped empty space */ + default: hasNonZeroBits = 1; continue; + } + } + return hasNonZeroBits; +} + +static asn_dec_rval_t +aper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = aper_get_length(pd, -1, -1, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if ((padding < 8 || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("Non-zero padding"); + ASN__DECODE_FAILED; + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +int +aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + size_t toGo; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + ssize_t maySave = aper_put_length(po, -1, toGo); + if(maySave < 0) break; + if(per_put_many_bits(po, bptr, maySave * 8)) break; + bptr = (char *)bptr + maySave; + toGo -= maySave; + } + + FREEMEM(buf); + if(toGo) return -1; + + ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", + td->name, size); + + return 0; +} + +asn_dec_rval_t +aper_open_type_get(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + asn_TYPE_operation_t op_t; + + memset(&op_t, 0, sizeof(op_t)); + s_td.name = ""; + s_td.op = &op_t; + s_td.op->aper_decoder = uper_sot_suck; + + rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + + diff --git a/lib/s1ap3/asn1c/per_opentype.h b/lib/s1ap3/asn1c/per_opentype.h new file mode 100644 index 0000000000..1493b2d8ee --- /dev/null +++ b/lib/s1ap3/asn1c/per_opentype.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_OPENTYPE_H_ +#define _PER_OPENTYPE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, + asn_per_data_t *pd); + +/* + * X.691 (2015/08), #11.2 + * Returns -1 if error is encountered. 0 if all OK. + */ +int uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + + +int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/lib/s1ap3/asn1c/per_support.c b/lib/s1ap3/asn1c/per_support.c new file mode 100644 index 0000000000..2285677604 --- /dev/null +++ b/lib/s1ap3/asn1c/per_support.c @@ -0,0 +1,489 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * X.691-201508 #10.9 General rules for encoding a length determinant. + * Get the optionally constrained length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, + int *repeat) { + ssize_t value; + + *repeat = 0; + + /* #11.9.4.1 Encoding if constrained (according to effective bits) */ + if(ebits >= 0 && ebits <= 16) { + value = per_get_few_bits(pd, ebits); + if(value >= 0) value += lower_bound; + return value; + } + + value = per_get_few_bits(pd, 8); + if((value & 0x80) == 0) { /* #11.9.3.6 */ + return (value & 0x7F); + } else if((value & 0x40) == 0) { /* #11.9.3.7 */ + /* bit 8 ... set to 1 and bit 7 ... set to zero */ + value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); + return value; /* potential -1 from per_get_few_bits passes through. */ + } else if(value < 0) { + ASN_DEBUG("END of stream reached for PER"); + return -1; + } + value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) { + return -1; /* Prohibited by #11.9.3.8 */ + } + *repeat = 1; + return (16384 * value); +} + +/* + * Get the normally small length "n". + * This procedure used to decode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +ssize_t +uper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%d", (int)length); + return length; + } else { + int repeat; + length = uper_get_length(pd, -1, 0, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +/* + * Get the normally small non-negative whole number. + * X.691, #10.6 + */ +ssize_t +uper_get_nsnnwn(asn_per_data_t *pd) { + ssize_t value; + + value = per_get_few_bits(pd, 7); + if(value & 64) { /* implicit (value < 0) */ + value &= 63; + value <<= 2; + value |= per_get_few_bits(pd, 2); + if(value & 128) /* implicit (value < 0) */ + return -1; + if(value == 0) + return 0; + if(value >= 3) + return -1; + value = per_get_few_bits(pd, 8 * value); + return value; + } + + return value; +} + +/* + * X.691-11/2008, #11.6 + * Encoding of a normally small non-negative whole number + */ +int +uper_put_nsnnwn(asn_per_outp_t *po, int n) { + int bytes; + + if(n <= 63) { + if(n < 0) return -1; + return per_put_few_bits(po, n, 7); + } + if(n < 256) + bytes = 1; + else if(n < 65536) + bytes = 2; + else if(n < 256 * 65536) + bytes = 3; + else + return -1; /* This is not a "normally small" value */ + if(per_put_few_bits(po, bytes, 8)) + return -1; + + return per_put_few_bits(po, n, 8 * bytes); +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { + unsigned long lhalf; /* Lower half of the number*/ + long half; + + if(nbits <= 31) { + half = per_get_few_bits(pd, nbits); + if(half < 0) return -1; + *out_value = half; + return 0; + } + + if((size_t)nbits > 8 * sizeof(*out_value)) + return -1; /* RANGE */ + + half = per_get_few_bits(pd, 31); + if(half < 0) return -1; + + if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) + return -1; + + *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int +uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, + int nbits) { + if(nbits <= 31) { + return per_put_few_bits(po, v, nbits); + } else { + /* Put higher portion first, followed by lower 31-bit */ + if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) + return -1; + return per_put_few_bits(po, v, 31); + } +} + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + if(length <= 127) { /* #11.9.3.6 */ + *need_eom = 0; + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } else if(length < 16384) { /* #10.9.3.7 */ + *need_eom = 0; + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + } + + *need_eom = 0 == (length & 16383); + length >>= 14; + if(length > 4) { + *need_eom = 0; + length = 4; + } + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); + +} + + +/* + * Put the normally small length "n" into the stream. + * This procedure used to encode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +int +uper_put_nslength(asn_per_outp_t *po, size_t length) { + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length - 1, 7) ? -1 : 0; + } else { + int need_eom = 0; + if(uper_put_length(po, length, &need_eom) != (ssize_t)length + || need_eom) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +static int +per__long_range(long lb, long ub, unsigned long *range_r) { + unsigned long bounds_range; + if((ub < 0) == (lb < 0)) { + bounds_range = ub - lb; + } else if(lb < 0) { + assert(ub >= 0); + bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); + } else { + assert(!"Unreachable"); + return -1; + } + *range_r = bounds_range; + return 0; +} + +int +per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { + unsigned long range; + + assert(lb <= ub); + + if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { + /* Range error. */ + return -1; + } + + /* + * Fundamentally what we're doing is returning (v-lb). + * However, this triggers undefined behavior when the word width + * of signed (v) is the same as the size of unsigned (*output). + * In practice, it triggers the UndefinedSanitizer. Therefore we shall + * compute the ranges accurately to avoid C's undefined behavior. + */ + if((v < 0) == (lb < 0)) { + *output = v-lb; + return 0; + } else if(v < 0) { + unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else if(lb < 0) { + unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else { + assert(!"Unreachable"); + return -1; + } +} + +int +per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { + unsigned long range; + + if(per__long_range(lb, ub, &range) != 0) { + return -1; + } + + if(inp > range) { + /* + * We can encode something in the given number of bits that technically + * exceeds the range. This is an avenue for security errors, + * so we don't allow that. + */ + return -1; + } + + if(inp <= LONG_MAX) { + *outp = (long)inp + lb; + } else { + *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); + } + + return 0; +} + +int32_t +aper_get_align(asn_per_data_t *pd) { + + if(pd->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); + return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); + } + return 0; +} + +ssize_t +aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { + ssize_t value; + + *repeat = 0; + + if (range <= 65536 && range >= 0) + return aper_get_nsnnwn(pd, range); + + if (aper_get_align(pd) < 0) + return -1; + + if(ebits >= 0) return per_get_few_bits(pd, ebits); + + value = per_get_few_bits(pd, 8); + if(value < 0) return -1; + if((value & 128) == 0) /* #10.9.3.6 */ + return (value & 0x7F); + if((value & 64) == 0) { /* #10.9.3.7 */ + value = ((value & 63) << 8) | per_get_few_bits(pd, 8); + if(value < 0) return -1; + return value; + } + value &= 63; /* this is "m" from X.691, #10.9.3.8 */ + if(value < 1 || value > 4) + return -1; + *repeat = 1; + return (16384 * value); +} + +ssize_t +aper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%ld", length); + return length; + } else { + int repeat; + length = aper_get_length(pd, -1, -1, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +ssize_t +aper_get_nsnnwn(asn_per_data_t *pd, int range) { + ssize_t value; + int bytes = 0; + + ASN_DEBUG("getting nsnnwn with range %d", range); + + if(range <= 255) { + int i; + + if (range < 0) return -1; + /* 1 -> 8 bits */ + for (i = 1; i <= 8; i++) { + int upper = 1 << i; + if (upper >= range) + break; + } + value = per_get_few_bits(pd, i); + return value; + } else if (range == 256){ + /* 1 byte */ + bytes = 1; + } else if (range <= 65536) { + /* 2 bytes */ + bytes = 2; + } else { + return -1; + } + if (aper_get_align(pd) < 0) + return -1; + value = per_get_few_bits(pd, 8 * bytes); + return value; +} + +int aper_put_align(asn_per_outp_t *po) { + + if(po->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); + if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) + return -1; + } + return 0; +} + +ssize_t +aper_put_length(asn_per_outp_t *po, int range, size_t length) { + + ASN_DEBUG("APER put length %zu with range %d", length, range); + + /* 10.9 X.691 Note 2 */ + if (range <= 65536 && range >= 0) + return aper_put_nsnnwn(po, range, length); + + if (aper_put_align(po) < 0) + return -1; + + if(length <= 127) /* #10.9.3.6 */{ + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } + else if(length < 16384) /* #10.9.3.7 */ + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + + length >>= 14; + if(length > 4) length = 4; + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); +} + + +int +aper_put_nslength(asn_per_outp_t *po, size_t length) { + + if(length <= 64) { + /* #10.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(aper_put_length(po, -1, length) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +int +aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { + int bytes; + + ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); + /* 10.5.7.1 X.691 */ + if(range < 0) { + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (number <= bits) + break; + } + bytes = i; + assert(i <= 4); + } + if(range <= 255) { + int i; + for (i = 1; i <= 8; i++) { + int bits = 1 << i; + if (range <= bits) + break; + } + return per_put_few_bits(po, number, i); + } else if(range == 256) { + bytes = 1; + } else if(range <= 65536) { + bytes = 2; + } else { /* Ranges > 64K */ + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (range <= bits) + break; + } + assert(i <= 4); + bytes = i; + } + if(aper_put_align(po) < 0) /* Aligning on octet */ + return -1; +/* if(per_put_few_bits(po, bytes, 8)) + return -1; +*/ + return per_put_few_bits(po, number, 8 * bytes); +} diff --git a/lib/s1ap3/asn1c/per_support.h b/lib/s1ap3/asn1c/per_support.h new file mode 100644 index 0000000000..23079c94f2 --- /dev/null +++ b/lib/s1ap3/asn1c/per_support.h @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_SUPPORT_H_ +#define _PER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef struct asn_per_constraint_s { + enum asn_per_constraint_flags { + APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ + APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ + APC_CONSTRAINED = 0x2, /* Fully constrained */ + APC_EXTENSIBLE = 0x4 /* May have extension */ + } flags; + int range_bits; /* Full number of bits in the range */ + int effective_bits; /* Effective bits */ + long lower_bound; /* "lb" value */ + long upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef struct asn_per_constraints_s { + asn_per_constraint_t value; + asn_per_constraint_t size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_data_s asn_per_data_t; +#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) +#define per_get_undo(data, bits) asn_get_undo(data, bits) +#define per_get_many_bits(data, dst, align, bits) \ + asn_get_many_bits(data, dst, align, bits) + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, + size_t lower_bound, int *repeat); + +ssize_t aper_get_length(asn_per_data_t *pd, int range, + int effective_bound_bits, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t uper_get_nslength(asn_per_data_t *pd); +ssize_t aper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t uper_get_nsnnwn(asn_per_data_t *pd); +ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); + +/* X.691-2008/11, #11.5.6 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); + + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_outp_s asn_per_outp_t; +#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) +#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) +#define per_put_aligned_flush(out) asn_put_aligned_flush(out) + + +/* + * Rebase the given value as an offset into the range specified by the + * lower bound (lb) and upper bound (ub). + * RETURN VALUES: + * -1: Conversion failed due to range problems. + * 0: Conversion was successful. + */ +int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); +/* The inverse operation: restores the value by the offset and its bounds. */ +int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "whole_length" to the Unaligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. + * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, + int *opt_need_eom); + +ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); + +/* Align the current bit position to octet bundary */ +int aper_put_align(asn_per_outp_t *po); +int32_t aper_get_align(asn_per_data_t *pd); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int uper_put_nslength(asn_per_outp_t *po, size_t length); + +int aper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int uper_put_nsnnwn(asn_per_outp_t *po, int n); + +int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_SUPPORT_H_ */ diff --git a/lib/s1ap3/asn1c/xer_decoder.c b/lib/s1ap3/asn1c/xer_decoder.c new file mode 100644 index 0000000000..5b87703a33 --- /dev/null +++ b/lib/s1ap3/asn1c/xer_decoder.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* XER/XML parsing support */ + + +/* + * Decode the XER encoding of a given type. + */ +asn_dec_rval_t +xer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *buffer, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); +} + + + +struct xer__cb_arg { + pxml_chunk_type_e chunk_type; + size_t chunk_size; + const void *chunk_buf; + int callback_not_invoked; +}; + +static int +xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { + struct xer__cb_arg *arg = (struct xer__cb_arg *)key; + arg->chunk_type = type; + arg->chunk_size = _chunk_size; + arg->chunk_buf = _chunk_data; + arg->callback_not_invoked = 0; + return -1; /* Terminate the XML parsing */ +} + +/* + * Fetch the next token from the XER/XML stream. + */ +ssize_t +xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { + struct xer__cb_arg arg; + int new_stateContext = *stateContext; + ssize_t ret; + + arg.callback_not_invoked = 1; + ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); + if(ret < 0) return -1; + if(arg.callback_not_invoked) { + assert(ret == 0); /* No data was consumed */ + *ch_type = PXER_WMORE; + return 0; /* Try again with more data */ + } else { + assert(arg.chunk_size); + assert(arg.chunk_buf == buffer); + } + + /* + * Translate the XML chunk types into more convenient ones. + */ + switch(arg.chunk_type) { + case PXML_TEXT: + *ch_type = PXER_TEXT; + break; + case PXML_TAG: + *ch_type = PXER_WMORE; + return 0; /* Want more */ + case PXML_TAG_END: + *ch_type = PXER_TAG; + break; + case PXML_COMMENT: + case PXML_COMMENT_END: + *ch_type = PXER_COMMENT; + break; + } + + *stateContext = new_stateContext; + return arg.chunk_size; +} + +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define RANGLE 0x3e /* '>' */ + +xer_check_tag_e +xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { + const char *buf = (const char *)buf_ptr; + const char *end; + xer_check_tag_e ct = XCT_OPENING; + + if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { + if(size >= 2) + ASN_DEBUG("Broken XML tag: \"%c...%c\"", + buf[0], buf[size - 1]); + return XCT_BROKEN; + } + + /* + * Determine the tag class. + */ + if(buf[1] == CSLASH) { + buf += 2; /* advance past "" */ + ct = XCT_CLOSING; + if(size > 0 && buf[size-1] == CSLASH) + return XCT_BROKEN; /* */ + } else { + buf++; /* advance past "<" */ + size -= 2; /* strip "<" and ">" */ + if(size > 0 && buf[size-1] == CSLASH) { + ct = XCT_BOTH; + size--; /* One more, for "/" */ + } + } + + /* Sometimes we don't care about the tag */ + if(!need_tag || !*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + /* + * Determine the tag name. + */ + for(end = buf + size; buf < end; buf++, need_tag++) { + int b = *buf, n = *need_tag; + if(b != n) { + if(n == 0) { + switch(b) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* "": whitespace is normal */ + return ct; + } + } + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + } + if(b == 0) + return XCT_BROKEN; /* Embedded 0 in buf?! */ + } + if(*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + return ct; +} + + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + if(rval.code != RC_OK) \ + ASN_DEBUG("Failed with %d", rval.code); \ + return rval; \ + } while(0) + +#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ + ssize_t converted_size = body_receiver \ + (struct_key, chunk_buf, chunk_size, \ + (size_t)chunk_size < size); \ + if(converted_size == -1) RETURN(RC_FAIL); \ + if(converted_size == 0 \ + && size == (size_t)chunk_size) \ + RETURN(RC_WMORE); \ + chunk_size = converted_size; \ + } while(0) +#define XER_GOT_EMPTY() do { \ + if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ + RETURN(RC_FAIL); \ + } while(0) + +/* + * Generalized function for decoding the primitive values. + */ +asn_dec_rval_t +xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, + const char *xml_tag, /* Expected XML tag */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder) + (void *struct_key, const void *chunk_buf, size_t chunk_size), + ssize_t (*body_receiver) + (void *struct_key, const void *chunk_buf, size_t chunk_size, + int have_more) + ) { + + asn_dec_rval_t rval; + ssize_t consumed_myself = 0; + + (void)opt_codec_ctx; + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + */ + if(ctx->phase > 1) RETURN(RC_FAIL); + for(;;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TEXT: + if(ctx->phase == 0) { + /* + * We have to ignore whitespace here, + * but in order to be forward compatible + * with EXTENDED-XER (EMBED-VALUES, #25) + * any text is just ignored here. + */ + } else { + XER_GOT_BODY(buf_ptr, ch_size, size); + } + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + assert(ch_type == PXER_TAG && size); + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + /* + * Phase 0: + * Expecting the opening tag + * for the type being processed. + * Phase 1: + * Waiting for the closing XML tag. + */ + switch(tcv) { + case XCT_BOTH: + if(ctx->phase) break; + /* Finished decoding of an empty element */ + XER_GOT_EMPTY(); + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + case XCT_CLOSING: + if(!ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_UNKNOWN_BO: + /* + * Certain tags in the body may be expected. + */ + if(opt_unexpected_tag_decoder + && opt_unexpected_tag_decoder(struct_key, + buf_ptr, ch_size) >= 0) { + /* Tag's processed fine */ + ADVANCE(ch_size); + if(!ctx->phase) { + /* We are not expecting + * the closing tag anymore. */ + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + } + continue; + } + /* Fall through */ + default: + break; /* Unexpected tag */ + } + + ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); + break; /* Dark and mysterious things have just happened */ + } + + RETURN(RC_FAIL); +} + + +size_t +xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + + for(; p < pend; p++) { + switch(*p) { + /* X.693, #8.1.4 + * HORISONTAL TAB (9) + * LINE FEED (10) + * CARRIAGE RETURN (13) + * SPACE (32) + */ + case 0x09: case 0x0a: case 0x0d: case 0x20: + continue; + default: + break; + } + break; + } + return (p - (const char *)chunk_buf); +} + +/* + * This is a vastly simplified, non-validating XML tree skipper. + */ +int +xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { + assert(*depth > 0); + switch(tcv) { + case XCT_BOTH: + case XCT_UNKNOWN_BO: + /* These negate each other. */ + return 0; + case XCT_OPENING: + case XCT_UNKNOWN_OP: + ++(*depth); + return 0; + case XCT_CLOSING: + case XCT_UNKNOWN_CL: + if(--(*depth) == 0) + return (tcv == XCT_CLOSING) ? 2 : 1; + return 0; + default: + return -1; + } +} diff --git a/lib/s1ap3/asn1c/xer_decoder.h b/lib/s1ap3/asn1c/xer_decoder.h new file mode 100644 index 0000000000..b951c41d1b --- /dev/null +++ b/lib/s1ap3/asn1c/xer_decoder.h @@ -0,0 +1,106 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_DECODER_H_ +#define _XER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The XER decoder of any ASN.1 type. May be invoked by the application. + * Decodes CANONICAL-XER and BASIC-XER. + */ +asn_dec_rval_t xer_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Type of the type-specific XER decoder function. + */ +typedef asn_dec_rval_t(xer_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const char *opt_mname, /* Member name */ + const void *buf_ptr, size_t size); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Generalized function for decoding the primitive values. + * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 + * and others. This function should not be used by applications, as its API + * is subject to changes. + */ +asn_dec_rval_t xer_decode_general( + const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, /* Treated as opaque pointer */ + const char *xml_tag, /* Expected XML tag name */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, + size_t chunk_size, int have_more)); + + +/* + * Fetch the next XER (XML) token from the stream. + * The function returns the number of bytes occupied by the chunk type, + * returned in the _ch_type. The _ch_type is only set (and valid) when + * the return value is >= 0. + */ + typedef enum pxer_chunk_type { + PXER_WMORE, /* Chunk type is not clear, more data expected. */ + PXER_TAG, /* Complete XER tag */ + PXER_TEXT, /* Plain text between XER tags */ + PXER_COMMENT /* A comment, may be part of */ + } pxer_chunk_type_e; +ssize_t xer_next_token(int *stateContext, + const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); + +/* + * This function checks the buffer against the tag name is expected to occur. + */ + typedef enum xer_check_tag { + XCT_BROKEN = 0, /* The tag is broken */ + XCT_OPENING = 1, /* This is the tag */ + XCT_CLOSING = 2, /* This is the tag */ + XCT_BOTH = 3, /* This is the tag */ + XCT__UNK__MASK = 4, /* Mask of everything unexpected */ + XCT_UNKNOWN_OP = 5, /* Unexpected tag */ + XCT_UNKNOWN_CL = 6, /* Unexpected tag */ + XCT_UNKNOWN_BO = 7 /* Unexpected tag */ + } xer_check_tag_e; +xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, + const char *need_tag); + +/* + * Get the number of bytes consisting entirely of XER whitespace characters. + * RETURN VALUES: + * >=0: Number of whitespace characters in the string. + */ +size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); + +/* + * Skip the series of anticipated extensions. + */ +int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_DECODER_H_ */ diff --git a/lib/s1ap3/asn1c/xer_encoder.c b/lib/s1ap3/asn1c/xer_encoder.c new file mode 100644 index 0000000000..dff3c44e8c --- /dev/null +++ b/lib/s1ap3/asn1c/xer_encoder.c @@ -0,0 +1,237 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The XER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for xer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +xer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + +struct xer_buffer { + char *buffer; + size_t buffer_size; + size_t allocated_size; +}; + +static int +xer__buffer_append(const void *buffer, size_t size, void *app_key) { + struct xer_buffer *xb = app_key; + + while(xb->buffer_size + size + 1 > xb->allocated_size) { + size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); + char *new_buf = MALLOC(new_size); + if(!new_buf) return -1; + if (xb->buffer) { + memcpy(new_buf, xb->buffer, xb->buffer_size); + } + FREEMEM(xb->buffer); + xb->buffer = new_buf; + xb->allocated_size = new_size; + } + + memcpy(xb->buffer + xb->buffer_size, buffer, size); + xb->buffer_size += size; + xb->buffer[xb->buffer_size] = '\0'; + return 0; +} + +enum xer_equivalence_e +xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, + const void *struct2, FILE *opt_debug_stream) { + struct xer_buffer xb1 = {0, 0, 0}; + struct xer_buffer xb2 = {0, 0, 0}; + asn_enc_rval_t e1, e2; + asn_dec_rval_t rval; + void *sptr = NULL; + + if(!td || !struct1 || !struct2) { + if(opt_debug_stream) { + if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); + if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); + if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); + } + return XEQ_FAILURE; + } + + e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); + if(e1.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + return XEQ_ENCODE1_FAILED; + } + + e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ENCODE1_FAILED; + } + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structures XER-encoded into different byte streams:\n=== " + "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", + xb1.buffer, xb2.buffer); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DIFFERENT; + } else { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Both structures encoded into the same XER byte stream " + "of size %" ASN_PRI_SIZE ":\n%s", + xb1.buffer_size, xb1.buffer); + } + } + + rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, + xb1.buffer_size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decode unexpectedly requires " + "more data:\n%s\n", + td->name, xb1.buffer); + } + /* Fall through */ + case RC_FAIL: + default: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decoding resulted in failure.\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DECODE_FAILED; + } + + if(rval.consumed != xb1.buffer_size + && ((rval.consumed > xb1.buffer_size) + || xer_whitespace_span(xb1.buffer + rval.consumed, + xb1.buffer_size - rval.consumed) + != (xb1.buffer_size - rval.consumed))) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " + "encoded (%" ASN_PRI_SIZE ")\n", + td->name, rval.consumed, xb1.buffer_size); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + /* + * Reuse xb2 to encode newly decoded structure. + */ + FREEMEM(xb2.buffer); + memset(&xb2, 0, sizeof(xb2)); + + e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + ASN_STRUCT_FREE(*td, sptr); + sptr = 0; + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "XER Encoding of round-trip decode of %s resulted in " + "different byte stream:\n" + "=== Original ===\n%s\n" + "=== Round-tripped ===\n%s\n", + xb1.buffer, xb2.buffer, td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_SUCCESS; +} + diff --git a/lib/s1ap3/asn1c/xer_encoder.h b/lib/s1ap3/asn1c/xer_encoder.h new file mode 100644 index 0000000000..9d75922c53 --- /dev/null +++ b/lib/s1ap3/asn1c/xer_encoder.h @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_ENCODER_H_ +#define _XER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ +enum xer_encoder_flags_e { + /* Mode of encoding */ + XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ + XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ +}; + +/* + * The XER encoder of any type. May be invoked by the application. + * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). + */ +asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses XER encoding/decoding to verify that: + * - Both structures encode into the same BASIC XER. + * - Both resulting XER byte streams can be decoded back. + * - Both decoded structures encode into the same BASIC XER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum xer_equivalence_e { + XEQ_SUCCESS, /* The only completely positive return value */ + XEQ_FAILURE, /* General failure */ + XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ + XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ + XEQ_DIFFERENT, /* Structures encoded into different XER */ + XEQ_DECODE_FAILED, /* Decode of the XER data failed */ + XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum xer_equivalence_e xer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t(xer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_ENCODER_H_ */ diff --git a/lib/s1ap3/asn1c/xer_support.c b/lib/s1ap3/asn1c/xer_support.c new file mode 100644 index 0000000000..36b4bfbfc0 --- /dev/null +++ b/lib/s1ap3/asn1c/xer_support.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003, 2004, 2005 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* Parser states */ +typedef enum { + ST_TEXT, + ST_TAG_START, + ST_TAG_BODY, + ST_TAG_QUOTE_WAIT, + ST_TAG_QUOTED_STRING, + ST_TAG_UNQUOTED_STRING, + ST_COMMENT_WAIT_DASH1, /* ""[0] */ + ST_COMMENT_CLO_RT /* "-->"[1] */ +} pstate_e; + +static const int +_charclass[256] = { + 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ +}; +#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) +#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) +#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) + +/* Aliases for characters, ASCII/UTF-8 */ +#define EXCLAM 0x21 /* '!' */ +#define CQUOTE 0x22 /* '"' */ +#define CDASH 0x2d /* '-' */ +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define CEQUAL 0x3d /* '=' */ +#define RANGLE 0x3e /* '>' */ +#define CQUEST 0x3f /* '?' */ + +/* Invoke token callback */ +#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ + int _ret; \ + pstate_e ns = _ns; \ + ssize_t _sz = (p - chunk_start) + _current_too; \ + if (!_sz) { \ + /* Shortcut */ \ + state = _ns; \ + break; \ + } \ + _ret = cb(type, chunk_start, _sz, key); \ + if(_ret < _sz) { \ + if(_current_too && _ret == -1) \ + state = ns; \ + goto finish; \ + } \ + chunk_start = p + _current_too; \ + state = ns; \ + } while(0) + +#define TOKEN_CB(_type, _ns, _current_too) \ + TOKEN_CB_CALL(_type, _ns, _current_too, 0) + +#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END +#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END + +#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ + TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) + +/* + * Parser itself + */ +ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { + pstate_e state = (pstate_e)*stateContext; + const char *chunk_start = (const char *)xmlbuf; + const char *p = chunk_start; + const char *end = p + size; + + for(; p < end; p++) { + int C = *(const unsigned char *)p; + switch(state) { + case ST_TEXT: + /* + * Initial state: we're in the middle of some text, + * or just have started. + */ + if (C == LANGLE) + /* We're now in the tag, probably */ + TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); + break; + case ST_TAG_START: + if (ALPHA(C) || (C == CSLASH)) + state = ST_TAG_BODY; + else if (C == EXCLAM) + state = ST_COMMENT_WAIT_DASH1; + else + /* + * Not characters and not whitespace. + * Must be something like "3 < 4". + */ + TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ + break; + case ST_TAG_BODY: + switch(C) { + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + case LANGLE: + /* + * The previous tag wasn't completed, but still + * recognized as valid. (Mozilla-compatible) + */ + TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); + break; + case CEQUAL: + state = ST_TAG_QUOTE_WAIT; + break; + } + break; + case ST_TAG_QUOTE_WAIT: + /* + * State after the equal sign ("=") in the tag. + */ + switch(C) { + case CQUOTE: + state = ST_TAG_QUOTED_STRING; + break; + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + default: + if(!WHITESPACE(C)) + /* Unquoted string value */ + state = ST_TAG_UNQUOTED_STRING; + } + break; + case ST_TAG_QUOTED_STRING: + /* + * Tag attribute's string value in quotes. + */ + if(C == CQUOTE) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_TAG_UNQUOTED_STRING: + if(C == RANGLE) { + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + } else if(WHITESPACE(C)) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH1: + if(C == CDASH) { + state = ST_COMMENT_WAIT_DASH2; + } else { + /* Some ordinary tag. */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH2: + if(C == CDASH) { + /* Seen "<--" */ + state = ST_COMMENT; + } else { + /* Some ordinary tag */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT: + if(C == CDASH) { + state = ST_COMMENT_CLO_DASH2; + } + break; + case ST_COMMENT_CLO_DASH2: + if(C == CDASH) { + state = ST_COMMENT_CLO_RT; + } else { + /* This is not an end of a comment */ + state = ST_COMMENT; + } + break; + case ST_COMMENT_CLO_RT: + if(C == RANGLE) { + TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); + } else if(C == CDASH) { + /* Maintain current state, still waiting for '>' */ + } else { + state = ST_COMMENT; + } + break; + } /* switch(*ptr) */ + } /* for() */ + + /* + * Flush the partially processed chunk, state permitting. + */ + if(p - chunk_start) { + switch (state) { + case ST_COMMENT: + TOKEN_CB(PXML_COMMENT, state, 0); + break; + case ST_TEXT: + TOKEN_CB(PXML_TEXT, state, 0); + break; + default: break; /* a no-op */ + } + } + +finish: + *stateContext = (int)state; + return chunk_start - (const char *)xmlbuf; +} + diff --git a/lib/s1ap3/asn1c/xer_support.h b/lib/s1ap3/asn1c/xer_support.h new file mode 100644 index 0000000000..c3a36e7204 --- /dev/null +++ b/lib/s1ap3/asn1c/xer_support.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_SUPPORT_H_ +#define _XER_SUPPORT_H_ + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types of data transferred to the application. + */ +typedef enum { + PXML_TEXT, /* Plain text between XML tags. */ + PXML_TAG, /* A tag, starting with '<'. */ + PXML_COMMENT, /* An XML comment, including "". */ + /* + * The following chunk types are reported if the chunk + * terminates the specified XML element. + */ + PXML_TAG_END, /* Tag ended */ + PXML_COMMENT_END /* Comment ended */ +} pxml_chunk_type_e; + +/* + * Callback function that is called by the parser when parsed data is + * available. The _opaque is the pointer to a field containing opaque user + * data specified in pxml_create() call. The chunk type is _type and the text + * data is the piece of buffer identified by _bufid (as supplied to + * pxml_feed() call) starting at offset _offset and of _size bytes size. + * The chunk is NOT '\0'-terminated. + */ +typedef int (pxml_callback_f)(pxml_chunk_type_e _type, + const void *_chunk_data, size_t _chunk_size, void *_key); + +/* + * Parse the given buffer as it were a chunk of XML data. + * Invoke the specified callback each time the meaninful data is found. + * This function returns number of bytes consumed from the bufer. + * It will always be lesser than or equal to the specified _size. + * The next invocation of this function must account the difference. + */ +ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, + pxml_callback_f *cb, void *_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_SUPPORT_H_ */ diff --git a/lib/s1ap3/support/.README.md.swp b/lib/s1ap3/support/.README.md.swp new file mode 100644 index 0000000000000000000000000000000000000000..2cc2cb855fec18bc461e3b4f0fbdd1ff79a1b658 GIT binary patch literal 12288 zcmeI2&x;&I6vr##A;xSJ;~!8OAsFcHZD&z1EVyoFlT|ki8&*UDV{LU!rr7SPwz@j( zLQGCM#e>Iy;6V^PdGT-Xk1!~r7yk?KThrrA?+?cr6OhO&<~u#pRbB7BPrWJ_=It(j zxVgpOiaQMLMaB-k`tsx79^QNQYL77?m6x^%Ju};QT%21e@);xVjt3@JtgH)Ve3jhN zJ~3+Ft5PPp-c71hl%1ri%hEcZY^rE0-iO|UEDDx(2-rJ%YbKLf=3F3jX&YYD9nt5CI}U1c(3;_|FM&G*|Fwz@;^}mGjC) zYF`v(uHs_vgqxC=S>2a5&z1Drnpm>BQtq9htvtW`54Dqts7xwf<2MCE00)$TQkSS@>u_d zR(TfYK;O;dGjyG^E^6CrY>me@^hY+k(e~QAhel34!{`M#heFjU?A7@j+g63Wt$1yW zlB%kNJK$k)s%FJd5X&oB(4&l4yKy~T z@AtO58=D`kjutySH+hYq#Jf%ob=|C6^UfpewpEem<7Ao3)(JjqlWB(y8_A*7Qk@V* zleka7%>}Y_k_z+Z=PHAXamv-`FmMSD1RM&k$xcywizuxbAV7UNPQpiht9I&gfkUR1 zrH4zrCw_$8A5vTnmE5zn=OL9^j~zMR!a+89B)3NKq4#C=b`lE5hxKlZ+)3Jt8i&c- zYdw4JMX>BtiZ`Z01Q#nlux>BBHTD`nqun-5PQUN@^c(#8dv}hN!5_`}z+w@9w=A4F OXqgYrc-y)W{P`1Iep%80 literal 0 HcmV?d00001 diff --git a/lib/s1ap3/support/README.md b/lib/s1ap3/support/README.md new file mode 100644 index 0000000000..905346e263 --- /dev/null +++ b/lib/s1ap3/support/README.md @@ -0,0 +1,45 @@ +Modify 36413-e40.txt to 36413-e40.asn +=========================================== +user@host ~/Documents/git/nextepc/lib/s1ap/support/r14.4.0$ \ + diff 36413-e40.txt 36413-e40.asn + +Use brchiu git's fork for asn1c +=========================================== +user@host ~/Documents/git$ \ + git clone https://github.com/brchiu/asn1c.git asn1c.brchiu +user@host ~/Documents/git$ \ + git checkout s1ap +user@host Documents/git/asn1c$ \ + autoreconf -fi;./configure;make + +ASN.1 encoder/decoder +=========================================== +user@host ~/Documents/git/nextepc/lib/s1ap/asn1c$ \ + ASN1C_PREFIX=S1AP_ ../../../../asn1c.brchiu/asn1c/asn1c -pdu=all \ + -fcompound-names -findirect-choice -fno-include-deps \ + ../support/r14.4.0/36413-e40.asn + ASN1C_PREFIX=S1AP_ ../../../../asn1c.brchiu/asn1c/asn1c -pdu=all \ + -fcompound-names -fno-include-deps ../support/r14.4.0/36413-e40.asn + +Update Files +=========================================== +user@host ~/Documents/git/nextepc/lib/s1ap/s1ap/asn1c$ \ + diff Makefile.am Makefile.am.libasncodec + +user@host ~/Documents/git/nextepc/lib/s1ap/asn1c$ \ + git diff asn_internal.h + +Remove unnecessary files +=========================================== +user@host ~/Documents/git/nextepc/lib/s1ap/s1ap/asn1c$ \ + rm -f S1AP_E-RAB-IE-ContainerPairList.c \ + S1AP_ProtocolError-IE-ContainerList.c \ + S1AP_ProtocolIE-ContainerPair.c S1AP_ProtocolIE-FieldPair.c \ + S1AP_ProtocolIE-ContainerPairList.c + +user@host ~/Documents/git/nextepc/lib/s1ap/asn1c$ \ + rm -f Makefile.am.asn1convert Makefile.am.libasncodec + +user@host ~/Documents/git/nextepc/lib/s1ap/asn1c$ \ + rm -f converter-example.mk converter-example.c pdu_collection.c + diff --git a/lib/s1ap3/support/r14.4.0/36413-e40.asn b/lib/s1ap3/support/r14.4.0/36413-e40.asn new file mode 100644 index 0000000000..c81d51492f --- /dev/null +++ b/lib/s1ap3/support/r14.4.0/36413-e40.asn @@ -0,0 +1,6626 @@ + +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** + +S1AP-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-PDU-Descriptions (0)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureCode +FROM S1AP-CommonDataTypes + + CellTrafficTrace, + DeactivateTrace, + DownlinkUEAssociatedLPPaTransport, + DownlinkNASTransport, + DownlinkNonUEAssociatedLPPaTransport, + DownlinkS1cdma2000tunnelling, + ENBDirectInformationTransfer, + ENBStatusTransfer, + ENBConfigurationUpdate, + ENBConfigurationUpdateAcknowledge, + ENBConfigurationUpdateFailure, + ErrorIndication, + HandoverCancel, + HandoverCancelAcknowledge, + HandoverCommand, + HandoverFailure, + HandoverNotify, + HandoverPreparationFailure, + HandoverRequest, + HandoverRequestAcknowledge, + HandoverRequired, + InitialContextSetupFailure, + InitialContextSetupRequest, + InitialContextSetupResponse, + InitialUEMessage, + KillRequest, + KillResponse, + LocationReportingControl, + LocationReportingFailureIndication, + LocationReport, + MMEConfigurationUpdate, + MMEConfigurationUpdateAcknowledge, + MMEConfigurationUpdateFailure, + MMEDirectInformationTransfer, + MMEStatusTransfer, + NASNonDeliveryIndication, + OverloadStart, + OverloadStop, + Paging, + PathSwitchRequest, + PathSwitchRequestAcknowledge, + PathSwitchRequestFailure, + PrivateMessage, + Reset, + ResetAcknowledge, + S1SetupFailure, + S1SetupRequest, + S1SetupResponse, + E-RABModifyRequest, + E-RABModifyResponse, + E-RABModificationIndication, + E-RABModificationConfirm, + E-RABReleaseCommand, + E-RABReleaseResponse, + E-RABReleaseIndication, + E-RABSetupRequest, + E-RABSetupResponse, + TraceFailureIndication, + TraceStart, + UECapabilityInfoIndication, + UEContextModificationFailure, + UEContextModificationRequest, + UEContextModificationResponse, + UEContextReleaseCommand, + UEContextReleaseComplete, + UEContextReleaseRequest, + UERadioCapabilityMatchRequest, + UERadioCapabilityMatchResponse, + UplinkUEAssociatedLPPaTransport, + UplinkNASTransport, + UplinkNonUEAssociatedLPPaTransport, + UplinkS1cdma2000tunnelling, + WriteReplaceWarningRequest, + WriteReplaceWarningResponse, + ENBConfigurationTransfer, + MMEConfigurationTransfer, + PWSRestartIndication, + UEContextModificationIndication, + UEContextModificationConfirm, + RerouteNASRequest, + PWSFailureIndication, + UEContextSuspendRequest, + UEContextSuspendResponse, + UEContextResumeRequest, + UEContextResumeResponse, + UEContextResumeFailure, + ConnectionEstablishmentIndication, + NASDeliveryIndication, + RetrieveUEInformation, + UEInformationTransfer, + ENBCPRelocationIndication, + MMECPRelocationIndication + + +FROM S1AP-PDU-Contents + + id-CellTrafficTrace, + id-DeactivateTrace, + id-downlinkUEAssociatedLPPaTransport, + id-downlinkNASTransport, + id-downlinkNonUEAssociatedLPPaTransport, + id-DownlinkS1cdma2000tunnelling, + id-eNBStatusTransfer, + id-ErrorIndication, + id-HandoverCancel, + id-HandoverNotification, + id-HandoverPreparation, + id-HandoverResourceAllocation, + id-InitialContextSetup, + id-initialUEMessage, + id-ENBConfigurationUpdate, + id-Kill, + id-LocationReportingControl, + id-LocationReportingFailureIndication, + id-LocationReport, + id-eNBDirectInformationTransfer, + id-MMEConfigurationUpdate, + id-MMEDirectInformationTransfer, + id-MMEStatusTransfer, + id-NASNonDeliveryIndication, + id-OverloadStart, + id-OverloadStop, + id-Paging, + id-PathSwitchRequest, + id-PrivateMessage, + id-Reset, + id-S1Setup, + id-E-RABModify, + id-E-RABModificationIndication, + id-E-RABRelease, + id-E-RABReleaseIndication, + id-E-RABSetup, + id-TraceFailureIndication, + id-TraceStart, + id-UECapabilityInfoIndication, + id-UEContextModification, + id-UEContextRelease, + id-UEContextReleaseRequest, + id-UERadioCapabilityMatch, + id-uplinkUEAssociatedLPPaTransport, + id-uplinkNASTransport, + id-uplinkNonUEAssociatedLPPaTransport, + id-UplinkS1cdma2000tunnelling, + id-WriteReplaceWarning, + id-eNBConfigurationTransfer, + id-MMEConfigurationTransfer, + id-PWSRestartIndication, + id-UEContextModificationIndication, + id-RerouteNASRequest, + id-PWSFailureIndication, + id-UEContextSuspend, + id-UEContextResume, + id-ConnectionEstablishmentIndication, + id-NASDeliveryIndication, + id-RetrieveUEInformation, + id-UEInformationTransfer, + id-eNBCPRelocationIndication, + id-MMECPRelocationIndication + + +FROM S1AP-Constants; + + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +S1AP-ELEMENTARY-PROCEDURE ::= CLASS { + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL, + &UnsuccessfulOutcome OPTIONAL, + &procedureCode ProcedureCode UNIQUE, + &criticality Criticality DEFAULT ignore +} +WITH SYNTAX { + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] +} + +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** + +S1AP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), + criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value S1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), + criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value S1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), + criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value S1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +S1AP-ELEMENTARY-PROCEDURES S1AP-ELEMENTARY-PROCEDURE ::= { + S1AP-ELEMENTARY-PROCEDURES-CLASS-1 | + S1AP-ELEMENTARY-PROCEDURES-CLASS-2, + ... +} + + +S1AP-ELEMENTARY-PROCEDURES-CLASS-1 S1AP-ELEMENTARY-PROCEDURE ::= { + handoverPreparation | + handoverResourceAllocation | + pathSwitchRequest | + e-RABSetup | + e-RABModify | + e-RABRelease | + initialContextSetup | + handoverCancel | + kill | + reset | + s1Setup | + uEContextModification | + uEContextRelease | + eNBConfigurationUpdate | + mMEConfigurationUpdate | + writeReplaceWarning , + ..., + uERadioCapabilityMatch | + e-RABModificationIndication | + uEContextModificationIndication | + uEContextSuspend | + uEContextResume +} + +S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= { + handoverNotification | + e-RABReleaseIndication | + paging | + downlinkNASTransport | + initialUEMessage | + uplinkNASTransport | + errorIndication | + nASNonDeliveryIndication | + uEContextReleaseRequest | + downlinkS1cdma2000tunnelling | + uplinkS1cdma2000tunnelling | + uECapabilityInfoIndication | + eNBStatusTransfer | + mMEStatusTransfer | + deactivateTrace | + traceStart | + traceFailureIndication | + cellTrafficTrace | + locationReportingControl | + locationReportingFailureIndication | + locationReport | + overloadStart | + overloadStop | + eNBDirectInformationTransfer | + mMEDirectInformationTransfer | + eNBConfigurationTransfer | + mMEConfigurationTransfer | + privateMessage , + ..., + downlinkUEAssociatedLPPaTransport | + uplinkUEAssociatedLPPaTransport | + downlinkNonUEAssociatedLPPaTransport | + uplinkNonUEAssociatedLPPaTransport | + pWSRestartIndication | + rerouteNASRequest | + pWSFailureIndication | + connectionEstablishmentIndication | + nASDeliveryIndication | + retrieveUEInformation | + uEInformationTransfer | + eNBCPRelocationIndication | + mMECPRelocationIndication +} + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + +handoverPreparation S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverRequired + SUCCESSFUL OUTCOME HandoverCommand + UNSUCCESSFUL OUTCOME HandoverPreparationFailure + PROCEDURE CODE id-HandoverPreparation + CRITICALITY reject +} + +handoverResourceAllocation S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverRequest + SUCCESSFUL OUTCOME HandoverRequestAcknowledge + UNSUCCESSFUL OUTCOME HandoverFailure + PROCEDURE CODE id-HandoverResourceAllocation + CRITICALITY reject +} + +handoverNotification S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverNotify + PROCEDURE CODE id-HandoverNotification + CRITICALITY ignore +} + +pathSwitchRequest S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PathSwitchRequest + SUCCESSFUL OUTCOME PathSwitchRequestAcknowledge + UNSUCCESSFUL OUTCOME PathSwitchRequestFailure + PROCEDURE CODE id-PathSwitchRequest + CRITICALITY reject +} + +e-RABSetup S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABSetupRequest + SUCCESSFUL OUTCOME E-RABSetupResponse + PROCEDURE CODE id-E-RABSetup + CRITICALITY reject +} + +e-RABModify S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABModifyRequest + SUCCESSFUL OUTCOME E-RABModifyResponse + PROCEDURE CODE id-E-RABModify + CRITICALITY reject +} + +e-RABRelease S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABReleaseCommand + SUCCESSFUL OUTCOME E-RABReleaseResponse + PROCEDURE CODE id-E-RABRelease + CRITICALITY reject +} + +e-RABReleaseIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABReleaseIndication + PROCEDURE CODE id-E-RABReleaseIndication + CRITICALITY ignore +} + +initialContextSetup S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InitialContextSetupRequest + SUCCESSFUL OUTCOME InitialContextSetupResponse + UNSUCCESSFUL OUTCOME InitialContextSetupFailure + PROCEDURE CODE id-InitialContextSetup + CRITICALITY reject +} + +uEContextReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextReleaseRequest + PROCEDURE CODE id-UEContextReleaseRequest + CRITICALITY ignore +} + +paging S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Paging + PROCEDURE CODE id-Paging + CRITICALITY ignore +} + +downlinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkNASTransport + PROCEDURE CODE id-downlinkNASTransport + CRITICALITY ignore +} + +initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InitialUEMessage + PROCEDURE CODE id-initialUEMessage + CRITICALITY ignore +} + +uplinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkNASTransport + PROCEDURE CODE id-uplinkNASTransport + CRITICALITY ignore +} +nASNonDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE NASNonDeliveryIndication + PROCEDURE CODE id-NASNonDeliveryIndication + CRITICALITY ignore +} + +handoverCancel S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverCancel + SUCCESSFUL OUTCOME HandoverCancelAcknowledge + PROCEDURE CODE id-HandoverCancel + CRITICALITY reject +} + +reset S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Reset + SUCCESSFUL OUTCOME ResetAcknowledge + PROCEDURE CODE id-Reset + CRITICALITY reject +} + +errorIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + PROCEDURE CODE id-ErrorIndication + CRITICALITY ignore +} + +s1Setup S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1SetupRequest + SUCCESSFUL OUTCOME S1SetupResponse + UNSUCCESSFUL OUTCOME S1SetupFailure + PROCEDURE CODE id-S1Setup + CRITICALITY reject +} + +eNBConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBConfigurationUpdate + SUCCESSFUL OUTCOME ENBConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME ENBConfigurationUpdateFailure + PROCEDURE CODE id-ENBConfigurationUpdate + CRITICALITY reject +} + +mMEConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMEConfigurationUpdate + SUCCESSFUL OUTCOME MMEConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME MMEConfigurationUpdateFailure + PROCEDURE CODE id-MMEConfigurationUpdate + CRITICALITY reject +} + +downlinkS1cdma2000tunnelling S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkS1cdma2000tunnelling + PROCEDURE CODE id-DownlinkS1cdma2000tunnelling + CRITICALITY ignore +} + +uplinkS1cdma2000tunnelling S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkS1cdma2000tunnelling + PROCEDURE CODE id-UplinkS1cdma2000tunnelling + CRITICALITY ignore +} + +uEContextModification S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextModificationRequest + SUCCESSFUL OUTCOME UEContextModificationResponse + UNSUCCESSFUL OUTCOME UEContextModificationFailure + PROCEDURE CODE id-UEContextModification + CRITICALITY reject +} + +uECapabilityInfoIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UECapabilityInfoIndication + PROCEDURE CODE id-UECapabilityInfoIndication + CRITICALITY ignore +} + +uEContextRelease S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextReleaseCommand + SUCCESSFUL OUTCOME UEContextReleaseComplete + PROCEDURE CODE id-UEContextRelease + CRITICALITY reject +} + +eNBStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBStatusTransfer + PROCEDURE CODE id-eNBStatusTransfer + CRITICALITY ignore +} + +mMEStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMEStatusTransfer + PROCEDURE CODE id-MMEStatusTransfer + CRITICALITY ignore +} + +deactivateTrace S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DeactivateTrace + PROCEDURE CODE id-DeactivateTrace + CRITICALITY ignore +} + +traceStart S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE TraceStart + PROCEDURE CODE id-TraceStart + CRITICALITY ignore +} + +traceFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE TraceFailureIndication + PROCEDURE CODE id-TraceFailureIndication + CRITICALITY ignore +} +cellTrafficTrace S1AP-ELEMENTARY-PROCEDURE ::={ +INITIATING MESSAGE CellTrafficTrace +PROCEDURE CODE id-CellTrafficTrace +CRITICALITY ignore +} + +locationReportingControl S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE LocationReportingControl + PROCEDURE CODE id-LocationReportingControl + CRITICALITY ignore +} + +locationReportingFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE LocationReportingFailureIndication + PROCEDURE CODE id-LocationReportingFailureIndication + CRITICALITY ignore +} + +locationReport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE LocationReport + PROCEDURE CODE id-LocationReport + CRITICALITY ignore +} + +overloadStart S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE OverloadStart + PROCEDURE CODE id-OverloadStart + CRITICALITY ignore +} + +overloadStop S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE OverloadStop + PROCEDURE CODE id-OverloadStop + CRITICALITY reject +} + +writeReplaceWarning S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE WriteReplaceWarningRequest + SUCCESSFUL OUTCOME WriteReplaceWarningResponse + PROCEDURE CODE id-WriteReplaceWarning + CRITICALITY reject +} + +eNBDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBDirectInformationTransfer + PROCEDURE CODE id-eNBDirectInformationTransfer + CRITICALITY ignore +} + +mMEDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMEDirectInformationTransfer + PROCEDURE CODE id-MMEDirectInformationTransfer + CRITICALITY ignore +} + +eNBConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBConfigurationTransfer + PROCEDURE CODE id-eNBConfigurationTransfer + CRITICALITY ignore +} + +mMEConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMEConfigurationTransfer + PROCEDURE CODE id-MMEConfigurationTransfer + CRITICALITY ignore +} + + +privateMessage S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PrivateMessage + PROCEDURE CODE id-PrivateMessage + CRITICALITY ignore +} + +pWSRestartIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PWSRestartIndication + PROCEDURE CODE id-PWSRestartIndication + CRITICALITY ignore +} + +kill S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE KillRequest + SUCCESSFUL OUTCOME KillResponse + PROCEDURE CODE id-Kill + CRITICALITY reject +} + +downlinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkUEAssociatedLPPaTransport + PROCEDURE CODE id-downlinkUEAssociatedLPPaTransport + CRITICALITY ignore +} + +uplinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkUEAssociatedLPPaTransport + PROCEDURE CODE id-uplinkUEAssociatedLPPaTransport + CRITICALITY ignore +} +downlinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkNonUEAssociatedLPPaTransport + PROCEDURE CODE id-downlinkNonUEAssociatedLPPaTransport + CRITICALITY ignore +} + +uplinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkNonUEAssociatedLPPaTransport + PROCEDURE CODE id-uplinkNonUEAssociatedLPPaTransport + CRITICALITY ignore +} + +uERadioCapabilityMatch S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UERadioCapabilityMatchRequest + SUCCESSFUL OUTCOME UERadioCapabilityMatchResponse + PROCEDURE CODE id-UERadioCapabilityMatch + CRITICALITY reject +} + +e-RABModificationIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABModificationIndication + SUCCESSFUL OUTCOME E-RABModificationConfirm + PROCEDURE CODE id-E-RABModificationIndication + CRITICALITY reject +} + +uEContextModificationIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextModificationIndication + SUCCESSFUL OUTCOME UEContextModificationConfirm + PROCEDURE CODE id-UEContextModificationIndication + CRITICALITY reject +} + +rerouteNASRequest S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RerouteNASRequest + PROCEDURE CODE id-RerouteNASRequest + CRITICALITY reject +} + +pWSFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PWSFailureIndication + PROCEDURE CODE id-PWSFailureIndication + CRITICALITY ignore +} + +uEContextSuspend S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextSuspendRequest + SUCCESSFUL OUTCOME UEContextSuspendResponse + PROCEDURE CODE id-UEContextSuspend + CRITICALITY reject +} + +uEContextResume S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextResumeRequest + SUCCESSFUL OUTCOME UEContextResumeResponse + UNSUCCESSFUL OUTCOME UEContextResumeFailure + PROCEDURE CODE id-UEContextResume + CRITICALITY reject +} + +connectionEstablishmentIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ConnectionEstablishmentIndication + PROCEDURE CODE id-ConnectionEstablishmentIndication + CRITICALITY reject +} + +nASDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE NASDeliveryIndication + PROCEDURE CODE id-NASDeliveryIndication + CRITICALITY ignore +} + +retrieveUEInformation S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RetrieveUEInformation + PROCEDURE CODE id-RetrieveUEInformation + CRITICALITY reject +} + +uEInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEInformationTransfer + PROCEDURE CODE id-UEInformationTransfer + CRITICALITY reject +} + +eNBCPRelocationIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBCPRelocationIndication + PROCEDURE CODE id-eNBCPRelocationIndication + CRITICALITY reject +} + +mMECPRelocationIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMECPRelocationIndication + PROCEDURE CODE id-MMECPRelocationIndication + CRITICALITY reject +} + + +END + +-- ************************************************************** +-- +-- PDU definitions for S1AP. +-- +-- ************************************************************** + +S1AP-PDU-Contents { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-PDU-Contents (1) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + UEAggregateMaximumBitrate, + BearerType, + Cause, + CellAccessMode, + Cdma2000HORequiredIndication, + Cdma2000HOStatus, + Cdma2000OneXSRVCCInfo, + Cdma2000OneXRAND, + Cdma2000PDU, + Cdma2000RATType, + Cdma2000SectorID, + EUTRANRoundTripDelayEstimationInfo, + CNDomain, + ConcurrentWarningMessageIndicator, + CriticalityDiagnostics, + CSFallbackIndicator, + CSG-Id, + CSG-IdList, + CSGMembershipStatus, + Data-Forwarding-Not-Possible, + Direct-Forwarding-Path-Availability, + Global-ENB-ID, + EUTRAN-CGI, + ENBname, + ENB-StatusTransfer-TransparentContainer, + ENB-UE-S1AP-ID, + ExtendedRepetitionPeriod, + GTP-TEID, + GUMMEI, + GUMMEIType, + HandoverRestrictionList, + HandoverType, + Masked-IMEISV, + LAI, + LPPa-PDU, + ManagementBasedMDTAllowed, + MDTPLMNList, + MMEname, + MMERelaySupportIndicator, + MME-UE-S1AP-ID, + MSClassmark2, + MSClassmark3, + NAS-PDU, + NASSecurityParametersfromE-UTRAN, + NASSecurityParameterstoE-UTRAN, + OverloadResponse, + PagingDRX, + PagingPriority, + PLMNidentity, + ProSeAuthorized, + RIMTransfer, + RelativeMMECapacity, + RequestType, + E-RAB-ID, + E-RABLevelQoSParameters, + E-RABList, + RelayNode-Indicator, + Routing-ID, + SecurityKey, + SecurityContext, + ServedGUMMEIs, + SONConfigurationTransfer, + Source-ToTarget-TransparentContainer, + SourceBSS-ToTargetBSS-TransparentContainer, + SourceeNB-ToTargeteNB-TransparentContainer, + SourceRNC-ToTargetRNC-TransparentContainer, + SubscriberProfileIDforRFP, + SRVCCOperationNotPossible, + SRVCCOperationPossible, + SRVCCHOIndication, + SupportedTAs, + TAI, + Target-ToSource-TransparentContainer, + TargetBSS-ToSourceBSS-TransparentContainer, + TargeteNB-ToSourceeNB-TransparentContainer, + TargetID, + TargetRNC-ToSourceRNC-TransparentContainer, + TimeToWait, + TraceActivation, + TrafficLoadReductionIndication, + E-UTRAN-Trace-ID, + TransportLayerAddress, + UEIdentityIndexValue, + UEPagingID, + UERadioCapability, + UERadioCapabilityForPaging, + UE-RetentionInformation, + UE-S1AP-IDs, + UE-associatedLogicalS1-ConnectionItem, + UESecurityCapabilities, + S-TMSI, + MessageIdentifier, + SerialNumber, + WarningAreaList, + RepetitionPeriod, + NumberofBroadcastRequest, + WarningType, + WarningSecurityInfo, + DataCodingScheme, + WarningMessageContents, + BroadcastCompletedAreaList, + RRC-Establishment-Cause, + BroadcastCancelledAreaList, + PS-ServiceNotAvailable, + GUMMEIList, + Correlation-ID, + GWContextReleaseIndication, + PrivacyIndicator, + VoiceSupportMatchIndicator, + TunnelInformation, + KillAllWarningMessages, + TransportInformation, + LHN-ID, + UserLocationInformation, + AdditionalCSFallbackIndicator, + ECGIListForRestart, + TAIListForRestart, + EmergencyAreaIDListForRestart, + ExpectedUEBehaviour, + Paging-eDRXInformation, + Extended-UEIdentityIndexValue, + MME-Group-ID, + Additional-GUTI, + PWSfailedECGIList, + CellIdentifierAndCELevelForCECapableUEs, + AssistanceDataForPaging, + InformationOnRecommendedCellsAndENBsForPaging, + UE-Usage-Type, + UEUserPlaneCIoTSupportIndicator, + NB-IoT-DefaultPagingDRX, + NB-IoT-Paging-eDRXInformation, + CE-mode-B-SupportIndicator, + NB-IoT-UEIdentityIndexValue, + V2XServicesAuthorized, + DCN-ID, + ServedDCNs, + UESidelinkAggregateMaximumBitrate, + DLNASPDUDeliveryAckRequest, + Coverage-Level, + EnhancedCoverageRestricted, + DL-CP-SecurityInformation, + UL-CP-SecurityInformation + + + +FROM S1AP-IEs + + PrivateIE-Container{}, + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + ProtocolIE-ContainerList{}, + ProtocolIE-ContainerPair{}, + ProtocolIE-ContainerPairList{}, + ProtocolIE-SingleContainer{}, + S1AP-PRIVATE-IES, + S1AP-PROTOCOL-EXTENSION, + S1AP-PROTOCOL-IES, + S1AP-PROTOCOL-IES-PAIR +FROM S1AP-Containers + + + id-AssistanceDataForPaging, + id-uEaggregateMaximumBitrate, + id-BearerType, + id-Cause, + id-CellAccessMode, + id-CellIdentifierAndCELevelForCECapableUEs, + id-cdma2000HORequiredIndication, + id-cdma2000HOStatus, + id-cdma2000OneXSRVCCInfo, + id-cdma2000OneXRAND, + id-cdma2000PDU, + id-cdma2000RATType, + id-cdma2000SectorID, + id-EUTRANRoundTripDelayEstimationInfo, + id-CNDomain, + id-ConcurrentWarningMessageIndicator, + id-CriticalityDiagnostics, + id-CSFallbackIndicator, + id-CSG-Id, + id-CSG-IdList, + id-CSGMembershipStatus, + id-Data-Forwarding-Not-Possible, + id-DefaultPagingDRX, + id-Direct-Forwarding-Path-Availability, + id-Global-ENB-ID, + id-EUTRAN-CGI, + id-eNBname, + id-eNB-StatusTransfer-TransparentContainer, + id-eNB-UE-S1AP-ID, + id-GERANtoLTEHOInformationRes, + id-GUMMEI-ID, + id-GUMMEIType, + id-HandoverRestrictionList, + id-HandoverType, + id-Masked-IMEISV, + id-InformationOnRecommendedCellsAndENBsForPaging, + id-InitialContextSetup, + id-Inter-SystemInformationTransferTypeEDT, + id-Inter-SystemInformationTransferTypeMDT, + id-LPPa-PDU, + id-NAS-DownlinkCount, + id-ManagementBasedMDTAllowed, + id-ManagementBasedMDTPLMNList, + id-MMEname, + id-MME-UE-S1AP-ID, + id-MSClassmark2, + id-MSClassmark3, + id-NAS-PDU, + id-NASSecurityParametersfromE-UTRAN, + id-NASSecurityParameterstoE-UTRAN, + id-OverloadResponse, + id-pagingDRX, + id-PagingPriority, + id-RelativeMMECapacity, + id-RequestType, + id-Routing-ID, + id-E-RABAdmittedItem, + id-E-RABAdmittedList, + id-E-RABDataForwardingItem, + id-E-RABFailedToModifyList, + id-E-RABFailedToReleaseList, + id-E-RABFailedtoSetupItemHOReqAck, + id-E-RABFailedToSetupListBearerSURes, + id-E-RABFailedToSetupListCtxtSURes, + id-E-RABFailedToSetupListHOReqAck, + id-E-RABFailedToBeReleasedList, + id-E-RABFailedToResumeListResumeReq, + id-E-RABFailedToResumeItemResumeReq, + id-E-RABFailedToResumeListResumeRes, + id-E-RABFailedToResumeItemResumeRes, + id-E-RABModify, + id-E-RABModifyItemBearerModRes, + id-E-RABModifyListBearerModRes, + id-E-RABRelease, + id-E-RABReleaseItemBearerRelComp, + id-E-RABReleaseItemHOCmd, + id-E-RABReleaseListBearerRelComp, + id-E-RABReleaseIndication, + id-E-RABSetup, + id-E-RABSetupItemBearerSURes, + id-E-RABSetupItemCtxtSURes, + id-E-RABSetupListBearerSURes, + id-E-RABSetupListCtxtSURes, + id-E-RABSubjecttoDataForwardingList, + id-E-RABToBeModifiedItemBearerModReq, + id-E-RABToBeModifiedListBearerModReq, + id-E-RABToBeModifiedListBearerModInd, + id-E-RABToBeModifiedItemBearerModInd, + id-E-RABNotToBeModifiedListBearerModInd, + id-E-RABNotToBeModifiedItemBearerModInd, + id-E-RABModifyListBearerModConf, + id-E-RABModifyItemBearerModConf, + id-E-RABFailedToModifyListBearerModConf, + id-E-RABToBeReleasedListBearerModConf, + id-E-RABToBeReleasedList, + id-E-RABReleasedList, + id-E-RABToBeSetupItemBearerSUReq, + id-E-RABToBeSetupItemCtxtSUReq, + id-E-RABToBeSetupItemHOReq, + id-E-RABToBeSetupListBearerSUReq, + id-E-RABToBeSetupListCtxtSUReq, + id-E-RABToBeSetupListHOReq, + id-E-RABToBeSwitchedDLItem, + id-E-RABToBeSwitchedDLList, + id-E-RABToBeSwitchedULList, + id-E-RABToBeSwitchedULItem, + id-E-RABtoReleaseListHOCmd, + id-ProSeAuthorized, + id-SecurityKey, + id-SecurityContext, + id-ServedGUMMEIs, + id-SONConfigurationTransferECT, + id-SONConfigurationTransferMCT, + id-Source-ToTarget-TransparentContainer, + id-Source-ToTarget-TransparentContainer-Secondary, + id-SourceMME-UE-S1AP-ID, + id-SRVCCOperationNotPossible, + id-SRVCCOperationPossible, + id-SRVCCHOIndication, + id-SubscriberProfileIDforRFP, + id-SupportedTAs, + id-S-TMSI, + id-TAI, + id-TAIItem, + id-TAIList, + id-Target-ToSource-TransparentContainer, + id-Target-ToSource-TransparentContainer-Secondary, + id-TargetID, + id-TimeToWait, + id-TraceActivation, + id-TrafficLoadReductionIndication, + id-E-UTRAN-Trace-ID, + id-UEIdentityIndexValue, + id-UEPagingID, + id-UERadioCapability, + id-UERadioCapabilityForPaging, + id-UTRANtoLTEHOInformationRes, + id-UE-associatedLogicalS1-ConnectionListResAck, + id-UE-associatedLogicalS1-ConnectionItem, + id-UE-RetentionInformation, + id-UESecurityCapabilities, + id-UE-S1AP-IDs, + id-V2XServicesAuthorized, + id-ResetType, + id-MessageIdentifier, + id-SerialNumber, + id-WarningAreaList, + id-RepetitionPeriod, + id-NumberofBroadcastRequest, + id-WarningType, + id-WarningSecurityInfo, + id-DataCodingScheme, + id-WarningMessageContents, + id-BroadcastCompletedAreaList, + id-BroadcastCancelledAreaList, + id-RRC-Establishment-Cause, + id-TraceCollectionEntityIPAddress, + maxnoofTAIs, + maxnoofErrors, + maxnoofE-RABs, + maxnoofIndividualS1ConnectionsToReset, + maxnoofEmergencyAreaID, + maxnoofCellID, + maxnoofTAIforWarning, + maxnoofCellinTAI, + maxnoofCellinEAI, + id-ExtendedRepetitionPeriod, + id-PS-ServiceNotAvailable, + id-RegisteredLAI, + id-GUMMEIList, + id-SourceMME-GUMMEI, + id-MME-UE-S1AP-ID-2, + id-GW-TransportLayerAddress, + id-RelayNode-Indicator, + id-Correlation-ID, + id-MMERelaySupportIndicator, + id-GWContextReleaseIndication, + id-PrivacyIndicator, + id-VoiceSupportMatchIndicator, + id-Tunnel-Information-for-BBF, + id-SIPTO-Correlation-ID, + id-SIPTO-L-GW-TransportLayerAddress, + id-KillAllWarningMessages, + id-TransportInformation, + id-LHN-ID, + id-UserLocationInformation, + id-AdditionalCSFallbackIndicator, + id-ECGIListForRestart, + id-TAIListForRestart, + id-EmergencyAreaIDListForRestart, + id-ExpectedUEBehaviour, + id-Paging-eDRXInformation, + id-extended-UEIdentityIndexValue, + id-CSGMembershipInfo, + id-MME-Group-ID, + id-Additional-GUTI, + id-S1-Message, + id-PWSfailedECGIList, + id-PWSFailureIndication, + id-UE-Usage-Type, + id-UEUserPlaneCIoTSupportIndicator, + id-NB-IoT-DefaultPagingDRX, + id-NB-IoT-Paging-eDRXInformation, + id-CE-mode-B-SupportIndicator, + id-NB-IoT-UEIdentityIndexValue, + id-RRC-Resume-Cause, + id-DCN-ID, + id-ServedDCNs, + id-UESidelinkAggregateMaximumBitrate, + id-DLNASPDUDeliveryAckRequest, + id-Coverage-Level, + id-EnhancedCoverageRestricted, + id-UE-Level-QoS-Parameters, + id-DL-CP-SecurityInformation, + id-UL-CP-SecurityInformation + + +FROM S1AP-Constants; + +-- ************************************************************** +-- +-- Common Container Lists +-- +-- ************************************************************** + +E-RAB-IE-ContainerList { S1AP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofE-RABs, {IEsSetParam} } +E-RAB-IE-ContainerPairList { S1AP-PROTOCOL-IES-PAIR : IEsSetParam } ::= ProtocolIE-ContainerPairList { 1, maxnoofE-RABs, {IEsSetParam} } +ProtocolError-IE-ContainerList { S1AP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofE-RABs, {IEsSetParam} } + +-- ************************************************************** +-- +-- HANDOVER PREPARATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Handover Required +-- +-- ************************************************************** + +HandoverRequired ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverRequiredIEs} }, + ... +} + +HandoverRequiredIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| + { ID id-TargetID CRITICALITY reject TYPE TargetID PRESENCE mandatory}| + { ID id-Direct-Forwarding-Path-Availability CRITICALITY ignore TYPE Direct-Forwarding-Path-Availability PRESENCE optional}| + { ID id-SRVCCHOIndication CRITICALITY reject TYPE SRVCCHOIndication PRESENCE optional}| + { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE mandatory}| + { ID id-Source-ToTarget-TransparentContainer-Secondary CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE optional}| + { ID id-MSClassmark2 CRITICALITY reject TYPE MSClassmark2 PRESENCE conditional}| + { ID id-MSClassmark3 CRITICALITY ignore TYPE MSClassmark3 PRESENCE conditional}| + { ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional}| + { ID id-CellAccessMode CRITICALITY reject TYPE CellAccessMode PRESENCE optional}| + { ID id-PS-ServiceNotAvailable CRITICALITY ignore TYPE PS-ServiceNotAvailable PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- Handover Command +-- +-- ************************************************************** + +HandoverCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverCommandIEs} }, + ... +} + +HandoverCommandIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory}| + { ID id-NASSecurityParametersfromE-UTRAN CRITICALITY reject TYPE NASSecurityParametersfromE-UTRAN PRESENCE conditional + -- This IE shall be present if HandoverType IE is set to value "LTEtoUTRAN" or "LTEtoGERAN" --}| + { ID id-E-RABSubjecttoDataForwardingList CRITICALITY ignore TYPE E-RABSubjecttoDataForwardingList PRESENCE optional}| + { ID id-E-RABtoReleaseListHOCmd CRITICALITY ignore TYPE E-RABList PRESENCE optional}| + { ID id-Target-ToSource-TransparentContainer CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE mandatory}| + { ID id-Target-ToSource-TransparentContainer-Secondary CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +E-RABSubjecttoDataForwardingList ::= E-RAB-IE-ContainerList { {E-RABDataForwardingItemIEs} } + +E-RABDataForwardingItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABDataForwardingItem CRITICALITY ignore TYPE E-RABDataForwardingItem PRESENCE mandatory }, + ... +} + +E-RABDataForwardingItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + dL-transportLayerAddress TransportLayerAddress OPTIONAL, + dL-gTP-TEID GTP-TEID OPTIONAL, + uL-TransportLayerAddress TransportLayerAddress OPTIONAL, + uL-GTP-TEID GTP-TEID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { E-RABDataForwardingItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABDataForwardingItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +-- ************************************************************** +-- +-- Handover Preparation Failure +-- +-- ************************************************************** + +HandoverPreparationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverPreparationFailureIEs} }, + ... +} + +HandoverPreparationFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER RESOURCE ALLOCATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Handover Request +-- +-- ************************************************************** + +HandoverRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {HandoverRequestIEs} }, + ... +} + +HandoverRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE mandatory}| + { ID id-E-RABToBeSetupListHOReq CRITICALITY reject TYPE E-RABToBeSetupListHOReq PRESENCE mandatory}| + { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE mandatory}| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE mandatory}| + { ID id-HandoverRestrictionList CRITICALITY ignore TYPE HandoverRestrictionList PRESENCE optional}| + { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional}| + { ID id-RequestType CRITICALITY ignore TYPE RequestType PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE mandatory}| + { ID id-NASSecurityParameterstoE-UTRAN CRITICALITY reject TYPE NASSecurityParameterstoE-UTRAN PRESENCE conditional + -- This IE shall be present if the Handover Type IE is set to the value "UTRANtoLTE" or "GERANtoLTE" -- }| + { ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-GUMMEI-ID CRITICALITY ignore TYPE GUMMEI PRESENCE optional}| + { ID id-MME-UE-S1AP-ID-2 CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional}| + { ID id-ManagementBasedMDTAllowed CRITICALITY ignore TYPE ManagementBasedMDTAllowed PRESENCE optional}| + { ID id-ManagementBasedMDTPLMNList CRITICALITY ignore TYPE MDTPLMNList PRESENCE optional}| + { ID id-Masked-IMEISV CRITICALITY ignore TYPE Masked-IMEISV PRESENCE optional}| + { ID id-ExpectedUEBehaviour CRITICALITY ignore TYPE ExpectedUEBehaviour PRESENCE optional}| + { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| + { ID id-UEUserPlaneCIoTSupportIndicator CRITICALITY ignore TYPE UEUserPlaneCIoTSupportIndicator PRESENCE optional}| + { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| + { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + ... +} + +E-RABToBeSetupListHOReq ::= E-RAB-IE-ContainerList { {E-RABToBeSetupItemHOReqIEs} } + +E-RABToBeSetupItemHOReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSetupItemHOReq CRITICALITY reject TYPE E-RABToBeSetupItemHOReq PRESENCE mandatory }, + ... +} + +E-RABToBeSetupItemHOReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + e-RABlevelQosParameters E-RABLevelQoSParameters, + iE-Extensions ProtocolExtensionContainer { {E-RABToBeSetupItemHOReq-ExtIEs} } OPTIONAL, + ... +} + +E-RABToBeSetupItemHOReq-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-Data-Forwarding-Not-Possible CRITICALITY ignore EXTENSION Data-Forwarding-Not-Possible PRESENCE optional}| + { ID id-BearerType CRITICALITY reject EXTENSION BearerType PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- Handover Request Acknowledge +-- +-- ************************************************************** + +HandoverRequestAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {HandoverRequestAcknowledgeIEs} }, + ... +} + +HandoverRequestAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABAdmittedList CRITICALITY ignore TYPE E-RABAdmittedList PRESENCE mandatory}| + { ID id-E-RABFailedToSetupListHOReqAck CRITICALITY ignore TYPE E-RABFailedtoSetupListHOReqAck PRESENCE optional}| + { ID id-Target-ToSource-TransparentContainer CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE mandatory}| + { ID id-CSG-Id CRITICALITY ignore TYPE CSG-Id PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-CellAccessMode CRITICALITY ignore TYPE CellAccessMode PRESENCE optional}| + { ID id-CE-mode-B-SupportIndicator CRITICALITY ignore TYPE CE-mode-B-SupportIndicator PRESENCE optional}, + ... +} + +E-RABAdmittedList ::= E-RAB-IE-ContainerList { {E-RABAdmittedItemIEs} } + +E-RABAdmittedItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABAdmittedItem CRITICALITY ignore TYPE E-RABAdmittedItem PRESENCE mandatory }, + ... +} + +E-RABAdmittedItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + dL-transportLayerAddress TransportLayerAddress OPTIONAL, + dL-gTP-TEID GTP-TEID OPTIONAL, + uL-TransportLayerAddress TransportLayerAddress OPTIONAL, + uL-GTP-TEID GTP-TEID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABAdmittedItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABAdmittedItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +E-RABFailedtoSetupListHOReqAck ::= E-RAB-IE-ContainerList { {E-RABFailedtoSetupItemHOReqAckIEs} } + +E-RABFailedtoSetupItemHOReqAckIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABFailedtoSetupItemHOReqAck CRITICALITY ignore TYPE E-RABFailedToSetupItemHOReqAck PRESENCE mandatory }, + ... +} + +E-RABFailedToSetupItemHOReqAck ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { E-RABFailedToSetupItemHOReqAckExtIEs} } OPTIONAL, + ... +} + +E-RABFailedToSetupItemHOReqAckExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Handover Failure +-- +-- ************************************************************** + +HandoverFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverFailureIEs} }, + ... +} + +HandoverFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER NOTIFICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Handover Notify +-- +-- ************************************************************** + +HandoverNotify ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverNotifyIEs} }, + ... +} + +HandoverNotifyIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory}| +-- Extension for Release 11 to support BBAI -- + { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}| + { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- PATH SWITCH REQUEST ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Path Switch Request +-- +-- ************************************************************** + +PathSwitchRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { PathSwitchRequestIEs} }, + ... +} + +PathSwitchRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABToBeSwitchedDLList CRITICALITY reject TYPE E-RABToBeSwitchedDLList PRESENCE mandatory}| + { ID id-SourceMME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory}| + { ID id-UESecurityCapabilities CRITICALITY ignore TYPE UESecurityCapabilities PRESENCE mandatory}| + { ID id-CSG-Id CRITICALITY ignore TYPE CSG-Id PRESENCE optional}| + { ID id-CellAccessMode CRITICALITY ignore TYPE CellAccessMode PRESENCE optional}| + { ID id-SourceMME-GUMMEI CRITICALITY ignore TYPE GUMMEI PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| +-- Extension for Release 11 to support BBAI -- + { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}| + { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}| + { ID id-RRC-Resume-Cause CRITICALITY ignore TYPE RRC-Establishment-Cause PRESENCE optional }, + ... +} + +E-RABToBeSwitchedDLList ::= E-RAB-IE-ContainerList { {E-RABToBeSwitchedDLItemIEs} } + +E-RABToBeSwitchedDLItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSwitchedDLItem CRITICALITY reject TYPE E-RABToBeSwitchedDLItem PRESENCE mandatory }, + ... +} + +E-RABToBeSwitchedDLItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { E-RABToBeSwitchedDLItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABToBeSwitchedDLItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Path Switch Request Acknowledge +-- +-- ************************************************************** + +PathSwitchRequestAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { PathSwitchRequestAcknowledgeIEs} }, + ... +} + +PathSwitchRequestAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-uEaggregateMaximumBitrate CRITICALITY ignore TYPE UEAggregateMaximumBitrate PRESENCE optional}| + { ID id-E-RABToBeSwitchedULList CRITICALITY ignore TYPE E-RABToBeSwitchedULList PRESENCE optional}| + { ID id-E-RABToBeReleasedList CRITICALITY ignore TYPE E-RABList PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-MME-UE-S1AP-ID-2 CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| + { ID id-UEUserPlaneCIoTSupportIndicator CRITICALITY ignore TYPE UEUserPlaneCIoTSupportIndicator PRESENCE optional}| + { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| + { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + ... +} + +E-RABToBeSwitchedULList ::= E-RAB-IE-ContainerList { {E-RABToBeSwitchedULItemIEs} } + +E-RABToBeSwitchedULItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSwitchedULItem CRITICALITY ignore TYPE E-RABToBeSwitchedULItem PRESENCE mandatory }, + ... +} + +E-RABToBeSwitchedULItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { E-RABToBeSwitchedULItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABToBeSwitchedULItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Path Switch Request Failure +-- +-- ************************************************************** + +PathSwitchRequestFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { PathSwitchRequestFailureIEs} }, + ... +} + +PathSwitchRequestFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER CANCEL ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Handover Cancel +-- +-- ************************************************************** + +HandoverCancel ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverCancelIEs} }, + ... +} + +HandoverCancelIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Handover Cancel Request Acknowledge +-- +-- ************************************************************** + +HandoverCancelAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverCancelAcknowledgeIEs} }, + ... +} + +HandoverCancelAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E-RAB SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Setup Request +-- +-- ************************************************************** + +E-RABSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABSetupRequestIEs} }, + ... +} + +E-RABSetupRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE optional }| + { ID id-E-RABToBeSetupListBearerSUReq CRITICALITY reject TYPE E-RABToBeSetupListBearerSUReq PRESENCE mandatory }, + ... +} + +E-RABToBeSetupListBearerSUReq ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABToBeSetupItemBearerSUReqIEs} } + +E-RABToBeSetupItemBearerSUReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSetupItemBearerSUReq CRITICALITY reject TYPE E-RABToBeSetupItemBearerSUReq PRESENCE mandatory }, + ... +} + +E-RABToBeSetupItemBearerSUReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + e-RABlevelQoSParameters E-RABLevelQoSParameters, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + nAS-PDU NAS-PDU, + iE-Extensions ProtocolExtensionContainer { {E-RABToBeSetupItemBearerSUReqExtIEs} } OPTIONAL, + ... +} + + +E-RABToBeSetupItemBearerSUReqExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| + { ID id-SIPTO-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| + { ID id-BearerType CRITICALITY reject EXTENSION BearerType PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- E-RAB Setup Response +-- +-- ************************************************************** + +E-RABSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABSetupResponseIEs} }, + ... +} + +E-RABSetupResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABSetupListBearerSURes CRITICALITY ignore TYPE E-RABSetupListBearerSURes PRESENCE optional }| + { ID id-E-RABFailedToSetupListBearerSURes CRITICALITY ignore TYPE E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +E-RABSetupListBearerSURes ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABSetupItemBearerSUResIEs} } + +E-RABSetupItemBearerSUResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABSetupItemBearerSURes CRITICALITY ignore TYPE E-RABSetupItemBearerSURes PRESENCE mandatory }, + ... +} + +E-RABSetupItemBearerSURes ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { {E-RABSetupItemBearerSUResExtIEs} } OPTIONAL, + ... +} + + +E-RABSetupItemBearerSUResExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +-- ************************************************************** +-- +-- E-RAB MODIFY ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Modify Request +-- +-- ************************************************************** + +E-RABModifyRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABModifyRequestIEs} }, + ... +} + +E-RABModifyRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE optional }| + { ID id-E-RABToBeModifiedListBearerModReq CRITICALITY reject TYPE E-RABToBeModifiedListBearerModReq PRESENCE mandatory }, + ... +} + +E-RABToBeModifiedListBearerModReq ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABToBeModifiedItemBearerModReqIEs} } + +E-RABToBeModifiedItemBearerModReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeModifiedItemBearerModReq CRITICALITY reject TYPE E-RABToBeModifiedItemBearerModReq PRESENCE mandatory }, + ... +} + +E-RABToBeModifiedItemBearerModReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + e-RABLevelQoSParameters E-RABLevelQoSParameters, + nAS-PDU NAS-PDU, + iE-Extensions ProtocolExtensionContainer { {E-RABToBeModifyItemBearerModReqExtIEs} } OPTIONAL, + ... +} + + +E-RABToBeModifyItemBearerModReqExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-TransportInformation CRITICALITY reject EXTENSION TransportInformation PRESENCE optional}, + ... +} + + + +-- ************************************************************** +-- +-- E-RAB Modify Response +-- +-- ************************************************************** + +E-RABModifyResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABModifyResponseIEs} }, + ... +} + +E-RABModifyResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABModifyListBearerModRes CRITICALITY ignore TYPE E-RABModifyListBearerModRes PRESENCE optional }| + { ID id-E-RABFailedToModifyList CRITICALITY ignore TYPE E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +E-RABModifyListBearerModRes ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABModifyItemBearerModResIEs} } + +E-RABModifyItemBearerModResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABModifyItemBearerModRes CRITICALITY ignore TYPE E-RABModifyItemBearerModRes PRESENCE mandatory}, + ... +} + +E-RABModifyItemBearerModRes ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + iE-Extensions ProtocolExtensionContainer { {E-RABModifyItemBearerModResExtIEs} } OPTIONAL, + ... +} + + +E-RABModifyItemBearerModResExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +-- ************************************************************** +-- +-- E-RAB RELEASE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Release Command +-- +-- ************************************************************** + +E-RABReleaseCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABReleaseCommandIEs} }, + ... +} + +E-RABReleaseCommandIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE optional }| + { ID id-E-RABToBeReleasedList CRITICALITY ignore TYPE E-RABList PRESENCE mandatory }| + { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- E-RAB Release Response +-- +-- ************************************************************** + +E-RABReleaseResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { E-RABReleaseResponseIEs } }, + ... +} + +E-RABReleaseResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABReleaseListBearerRelComp CRITICALITY ignore TYPE E-RABReleaseListBearerRelComp PRESENCE optional }| + { ID id-E-RABFailedToReleaseList CRITICALITY ignore TYPE E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| +-- Extension for Release 12 to support User Location Information -- + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + ... +} + + +E-RABReleaseListBearerRelComp ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABReleaseItemBearerRelCompIEs} } + +E-RABReleaseItemBearerRelCompIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABReleaseItemBearerRelComp CRITICALITY ignore TYPE E-RABReleaseItemBearerRelComp PRESENCE mandatory }, + ... +} + +E-RABReleaseItemBearerRelComp ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + iE-Extensions ProtocolExtensionContainer { {E-RABReleaseItemBearerRelCompExtIEs} } OPTIONAL, + ... +} + + +E-RABReleaseItemBearerRelCompExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +-- ************************************************************** +-- +-- E-RAB RELEASE INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Release Indication +-- +-- ************************************************************** + +E-RABReleaseIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABReleaseIndicationIEs} }, + ... +} + +E-RABReleaseIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABReleasedList CRITICALITY ignore TYPE E-RABList PRESENCE mandatory }| +-- Extension for Release 12 to support User Location Information -- + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- INITIAL CONTEXT SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Initial Context Setup Request +-- +-- ************************************************************** + +InitialContextSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialContextSetupRequestIEs} }, + ... +} + +InitialContextSetupRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE mandatory}| + { ID id-E-RABToBeSetupListCtxtSUReq CRITICALITY reject TYPE E-RABToBeSetupListCtxtSUReq PRESENCE mandatory}| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE mandatory}| + { ID id-SecurityKey CRITICALITY reject TYPE SecurityKey PRESENCE mandatory}| + { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional}| + { ID id-HandoverRestrictionList CRITICALITY ignore TYPE HandoverRestrictionList PRESENCE optional}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional}| + { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE SubscriberProfileIDforRFP PRESENCE optional}| + { ID id-CSFallbackIndicator CRITICALITY reject TYPE CSFallbackIndicator PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-RegisteredLAI CRITICALITY ignore TYPE LAI PRESENCE optional}| + { ID id-GUMMEI-ID CRITICALITY ignore TYPE GUMMEI PRESENCE optional}| + { ID id-MME-UE-S1AP-ID-2 CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional}| + { ID id-ManagementBasedMDTAllowed CRITICALITY ignore TYPE ManagementBasedMDTAllowed PRESENCE optional}| + { ID id-ManagementBasedMDTPLMNList CRITICALITY ignore TYPE MDTPLMNList PRESENCE optional}| + { ID id-AdditionalCSFallbackIndicator CRITICALITY ignore TYPE AdditionalCSFallbackIndicator PRESENCE conditional}| + { ID id-Masked-IMEISV CRITICALITY ignore TYPE Masked-IMEISV PRESENCE optional}| + { ID id-ExpectedUEBehaviour CRITICALITY ignore TYPE ExpectedUEBehaviour PRESENCE optional}| + { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| + { ID id-UEUserPlaneCIoTSupportIndicator CRITICALITY ignore TYPE UEUserPlaneCIoTSupportIndicator PRESENCE optional}| + { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| + { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + ... +} + + + + +E-RABToBeSetupListCtxtSUReq ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABToBeSetupItemCtxtSUReqIEs} } + +E-RABToBeSetupItemCtxtSUReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSetupItemCtxtSUReq CRITICALITY reject TYPE E-RABToBeSetupItemCtxtSUReq PRESENCE mandatory }, + ... +} + +E-RABToBeSetupItemCtxtSUReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + e-RABlevelQoSParameters E-RABLevelQoSParameters, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + nAS-PDU NAS-PDU OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABToBeSetupItemCtxtSUReqExtIEs} } OPTIONAL, + ... +} + + +E-RABToBeSetupItemCtxtSUReqExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| + { ID id-SIPTO-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| + { ID id-BearerType CRITICALITY reject EXTENSION BearerType PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- Initial Context Setup Response +-- +-- ************************************************************** + +InitialContextSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialContextSetupResponseIEs} }, + ... +} + +InitialContextSetupResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABSetupListCtxtSURes CRITICALITY ignore TYPE E-RABSetupListCtxtSURes PRESENCE mandatory }| + { ID id-E-RABFailedToSetupListCtxtSURes CRITICALITY ignore TYPE E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +E-RABSetupListCtxtSURes ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABSetupItemCtxtSUResIEs} } + +E-RABSetupItemCtxtSUResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABSetupItemCtxtSURes CRITICALITY ignore TYPE E-RABSetupItemCtxtSURes PRESENCE mandatory }, + ... +} + +E-RABSetupItemCtxtSURes ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { {E-RABSetupItemCtxtSUResExtIEs} } OPTIONAL, + ... +} + + +E-RABSetupItemCtxtSUResExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Initial Context Setup Failure +-- +-- ************************************************************** + +InitialContextSetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialContextSetupFailureIEs} }, + ... +} + +InitialContextSetupFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PAGING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Paging +-- +-- ************************************************************** + +Paging ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{PagingIEs}}, + ... +} + +PagingIEs S1AP-PROTOCOL-IES ::= { + { ID id-UEIdentityIndexValue CRITICALITY ignore TYPE UEIdentityIndexValue PRESENCE mandatory}| + { ID id-UEPagingID CRITICALITY ignore TYPE UEPagingID PRESENCE mandatory}| + { ID id-pagingDRX CRITICALITY ignore TYPE PagingDRX PRESENCE optional}| + { ID id-CNDomain CRITICALITY ignore TYPE CNDomain PRESENCE mandatory}| + { ID id-TAIList CRITICALITY ignore TYPE TAIList PRESENCE mandatory}| + { ID id-CSG-IdList CRITICALITY ignore TYPE CSG-IdList PRESENCE optional}| + { ID id-PagingPriority CRITICALITY ignore TYPE PagingPriority PRESENCE optional}| + { ID id-UERadioCapabilityForPaging CRITICALITY ignore TYPE UERadioCapabilityForPaging PRESENCE optional}| +-- Extension for Release 13 to support Paging Optimisation and Coverage Enhancement paging -- + { ID id-AssistanceDataForPaging CRITICALITY ignore TYPE AssistanceDataForPaging PRESENCE optional}| + { ID id-Paging-eDRXInformation CRITICALITY ignore TYPE Paging-eDRXInformation PRESENCE optional}| + { ID id-extended-UEIdentityIndexValue CRITICALITY ignore TYPE Extended-UEIdentityIndexValue PRESENCE optional}| + { ID id-NB-IoT-Paging-eDRXInformation CRITICALITY ignore TYPE NB-IoT-Paging-eDRXInformation PRESENCE optional}| + { ID id-NB-IoT-UEIdentityIndexValue CRITICALITY ignore TYPE NB-IoT-UEIdentityIndexValue PRESENCE optional}, + ... +} + +TAIList::= SEQUENCE (SIZE(1.. maxnoofTAIs)) OF ProtocolIE-SingleContainer {{TAIItemIEs}} + +TAIItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-TAIItem CRITICALITY ignore TYPE TAIItem PRESENCE mandatory }, + ... +} + +TAIItem ::= SEQUENCE { + tAI TAI, + iE-Extensions ProtocolExtensionContainer { {TAIItemExtIEs} } OPTIONAL, + ... +} + + +TAIItemExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT RELEASE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Release Request +-- +-- ************************************************************** + +UEContextReleaseRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UEContextReleaseRequest-IEs}}, + ... +} + +UEContextReleaseRequest-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-GWContextReleaseIndication CRITICALITY reject TYPE GWContextReleaseIndication PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Context Release Command +-- +-- ************************************************************** + +UEContextReleaseCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UEContextReleaseCommand-IEs}}, + ... +} + +UEContextReleaseCommand-IEs S1AP-PROTOCOL-IES ::= { + { ID id-UE-S1AP-IDs CRITICALITY reject TYPE UE-S1AP-IDs PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UE Context Release Complete +-- +-- ************************************************************** + +UEContextReleaseComplete ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UEContextReleaseComplete-IEs}}, + ... +} + +UEContextReleaseComplete-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| +-- Extension for Release 12 to support User Location Information -- + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional}| +-- Extension for Release 13 to support Paging Optimisation + { ID id-InformationOnRecommendedCellsAndENBsForPaging CRITICALITY ignore TYPE InformationOnRecommendedCellsAndENBsForPaging PRESENCE optional}| +-- Extension for Release 13 to support coverage enhancement paging - + { ID id-CellIdentifierAndCELevelForCECapableUEs CRITICALITY ignore TYPE CellIdentifierAndCELevelForCECapableUEs PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Modification Request +-- +-- ************************************************************** + +UEContextModificationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationRequestIEs} }, + ... +} + +UEContextModificationRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-SecurityKey CRITICALITY reject TYPE SecurityKey PRESENCE optional}| + { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE SubscriberProfileIDforRFP PRESENCE optional}| + { ID id-uEaggregateMaximumBitrate CRITICALITY ignore TYPE UEAggregateMaximumBitrate PRESENCE optional}| + { ID id-CSFallbackIndicator CRITICALITY reject TYPE CSFallbackIndicator PRESENCE optional}| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-RegisteredLAI CRITICALITY ignore TYPE LAI PRESENCE optional}| + { ID id-AdditionalCSFallbackIndicator CRITICALITY ignore TYPE AdditionalCSFallbackIndicator PRESENCE conditional}| + { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| + { ID id-SRVCCOperationNotPossible CRITICALITY ignore TYPE SRVCCOperationNotPossible PRESENCE optional}| + { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| + { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}, + ... +} +-- ************************************************************** +-- +-- UE Context Modification Response +-- +-- ************************************************************** + +UEContextModificationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationResponseIEs} }, + ... +} + +UEContextModificationResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- UE Context Modification Failure +-- +-- ************************************************************** + +UEContextModificationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationFailureIEs} }, + ... +} + +UEContextModificationFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE RADIO CAPABILITY MATCH ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Radio Capability Match Request +-- +-- ************************************************************** + +UERadioCapabilityMatchRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UERadioCapabilityMatchRequestIEs} }, + ... +} + +UERadioCapabilityMatchRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Radio Capability Match Response +-- +-- ************************************************************** + +UERadioCapabilityMatchResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UERadioCapabilityMatchResponseIEs} }, + ... +} + +UERadioCapabilityMatchResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-VoiceSupportMatchIndicator CRITICALITY reject TYPE VoiceSupportMatchIndicator PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- NAS TRANSPORT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DOWNLINK NAS TRANSPORT +-- +-- ************************************************************** + +DownlinkNASTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{DownlinkNASTransport-IEs}}, + ... +} + +DownlinkNASTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE mandatory}| + { ID id-HandoverRestrictionList CRITICALITY ignore TYPE HandoverRestrictionList PRESENCE optional}| + { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE SubscriberProfileIDforRFP PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional}| + { ID id-DLNASPDUDeliveryAckRequest CRITICALITY ignore TYPE DLNASPDUDeliveryAckRequest PRESENCE optional}| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- INITIAL UE MESSAGE +-- +-- ************************************************************** + +InitialUEMessage ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{InitialUEMessage-IEs}}, + ... +} + +InitialUEMessage-IEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE mandatory}| + { ID id-TAI CRITICALITY reject TYPE TAI PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-RRC-Establishment-Cause CRITICALITY ignore TYPE RRC-Establishment-Cause PRESENCE mandatory}| + { ID id-S-TMSI CRITICALITY reject TYPE S-TMSI PRESENCE optional}| + { ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional}| + { ID id-GUMMEI-ID CRITICALITY reject TYPE GUMMEI PRESENCE optional}| + { ID id-CellAccessMode CRITICALITY reject TYPE CellAccessMode PRESENCE optional}| + { ID id-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| + { ID id-RelayNode-Indicator CRITICALITY reject TYPE RelayNode-Indicator PRESENCE optional}| + { ID id-GUMMEIType CRITICALITY ignore TYPE GUMMEIType PRESENCE optional}| +-- Extension for Release 11 to support BBAI -- + { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}| + { ID id-SIPTO-L-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| + { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}| + { ID id-MME-Group-ID CRITICALITY ignore TYPE MME-Group-ID PRESENCE optional}| + { ID id-UE-Usage-Type CRITICALITY ignore TYPE UE-Usage-Type PRESENCE optional}| + { ID id-CE-mode-B-SupportIndicator CRITICALITY ignore TYPE CE-mode-B-SupportIndicator PRESENCE optional}| + { ID id-DCN-ID CRITICALITY ignore TYPE DCN-ID PRESENCE optional}| + { ID id-Coverage-Level CRITICALITY ignore TYPE Coverage-Level PRESENCE optional}, + + ... +} + + +-- ************************************************************** +-- +-- UPLINK NAS TRANSPORT +-- +-- ************************************************************** + +UplinkNASTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UplinkNASTransport-IEs}}, + ... +} + +UplinkNASTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory}| + { ID id-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| + { ID id-SIPTO-L-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| + { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}, + ... +} +-- ************************************************************** +-- +-- NAS NON DELIVERY INDICATION +-- +-- ************************************************************** + +NASNonDeliveryIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{NASNonDeliveryIndication-IEs}}, + ... +} + +NASNonDeliveryIndication-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- REROUTE NAS REQUEST +-- +-- ************************************************************** + +RerouteNASRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RerouteNASRequest-IEs}}, + ... +} + +RerouteNASRequest-IEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional}| + { ID id-S1-Message CRITICALITY reject TYPE OCTET STRING PRESENCE mandatory}| + { ID id-MME-Group-ID CRITICALITY reject TYPE MME-Group-ID PRESENCE mandatory}| + { ID id-Additional-GUTI CRITICALITY ignore TYPE Additional-GUTI PRESENCE optional}| + { ID id-UE-Usage-Type CRITICALITY ignore TYPE UE-Usage-Type PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- NAS DELIVERY INDICATION +-- +-- ************************************************************** + +NASDeliveryIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { NASDeliveryIndicationIEs} }, + ... +} + +NASDeliveryIndicationIEs S1AP-PROTOCOL-IES ::= { + ... +} + +-- ************************************************************** +-- +-- RESET ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Reset +-- +-- ************************************************************** + +Reset ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetIEs} }, + ... +} + +ResetIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-ResetType CRITICALITY reject TYPE ResetType PRESENCE mandatory }, + ... +} + +ResetType ::= CHOICE { + s1-Interface ResetAll, + partOfS1-Interface UE-associatedLogicalS1-ConnectionListRes, + ... +} + + + +ResetAll ::= ENUMERATED { + reset-all, + ... +} + +UE-associatedLogicalS1-ConnectionListRes ::= SEQUENCE (SIZE(1.. maxnoofIndividualS1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalS1-ConnectionItemRes } } + +UE-associatedLogicalS1-ConnectionItemRes S1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalS1-ConnectionItem CRITICALITY reject TYPE UE-associatedLogicalS1-ConnectionItem PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- Reset Acknowledge +-- +-- ************************************************************** + +ResetAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetAcknowledgeIEs} }, + ... +} + +ResetAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalS1-ConnectionListResAck CRITICALITY ignore TYPE UE-associatedLogicalS1-ConnectionListResAck PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +UE-associatedLogicalS1-ConnectionListResAck ::= SEQUENCE (SIZE(1.. maxnoofIndividualS1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalS1-ConnectionItemResAck } } + +UE-associatedLogicalS1-ConnectionItemResAck S1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalS1-ConnectionItem CRITICALITY ignore TYPE UE-associatedLogicalS1-ConnectionItem PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- ERROR INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Error Indication +-- +-- ************************************************************** + +ErrorIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ErrorIndicationIEs}}, + ... +} + +ErrorIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- S1 SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- S1 Setup Request +-- +-- ************************************************************** + +S1SetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {S1SetupRequestIEs} }, + ... +} + +S1SetupRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-Global-ENB-ID CRITICALITY reject TYPE Global-ENB-ID PRESENCE mandatory}| + { ID id-eNBname CRITICALITY ignore TYPE ENBname PRESENCE optional}| + { ID id-SupportedTAs CRITICALITY reject TYPE SupportedTAs PRESENCE mandatory}| + { ID id-DefaultPagingDRX CRITICALITY ignore TYPE PagingDRX PRESENCE mandatory}| + { ID id-CSG-IdList CRITICALITY reject TYPE CSG-IdList PRESENCE optional}| + { ID id-UE-RetentionInformation CRITICALITY ignore TYPE UE-RetentionInformation PRESENCE optional}| + { ID id-NB-IoT-DefaultPagingDRX CRITICALITY ignore TYPE NB-IoT-DefaultPagingDRX PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- S1 Setup Response +-- +-- ************************************************************** + +S1SetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {S1SetupResponseIEs} }, + ... +} + + +S1SetupResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MMEname CRITICALITY ignore TYPE MMEname PRESENCE optional}| + { ID id-ServedGUMMEIs CRITICALITY reject TYPE ServedGUMMEIs PRESENCE mandatory}| + { ID id-RelativeMMECapacity CRITICALITY ignore TYPE RelativeMMECapacity PRESENCE mandatory}| + { ID id-MMERelaySupportIndicator CRITICALITY ignore TYPE MMERelaySupportIndicator PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-UE-RetentionInformation CRITICALITY ignore TYPE UE-RetentionInformation PRESENCE optional}| + { ID id-ServedDCNs CRITICALITY ignore TYPE ServedDCNs PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- S1 Setup Failure +-- +-- ************************************************************** + +S1SetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {S1SetupFailureIEs} }, + ... +} + +S1SetupFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- ENB CONFIGURATION UPDATE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- eNB Configuration Update +-- +-- ************************************************************** + +ENBConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ENBConfigurationUpdateIEs} }, + ... +} + +ENBConfigurationUpdateIEs S1AP-PROTOCOL-IES ::= { + { ID id-eNBname CRITICALITY ignore TYPE ENBname PRESENCE optional}| + { ID id-SupportedTAs CRITICALITY reject TYPE SupportedTAs PRESENCE optional}| + { ID id-CSG-IdList CRITICALITY reject TYPE CSG-IdList PRESENCE optional}| + { ID id-DefaultPagingDRX CRITICALITY ignore TYPE PagingDRX PRESENCE optional}| + { ID id-NB-IoT-DefaultPagingDRX CRITICALITY ignore TYPE NB-IoT-DefaultPagingDRX PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- eNB Configuration Update Acknowledge +-- +-- ************************************************************** + +ENBConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ENBConfigurationUpdateAcknowledgeIEs} }, + ... +} + + +ENBConfigurationUpdateAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- eNB Configuration Update Failure +-- +-- ************************************************************** + +ENBConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ENBConfigurationUpdateFailureIEs} }, + ... +} + +ENBConfigurationUpdateFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, +... +} + + +-- ************************************************************** +-- +-- MME CONFIGURATION UPDATE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MME Configuration Update +-- +-- ************************************************************** + +MMEConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MMEConfigurationUpdateIEs} }, + ... +} + +MMEConfigurationUpdateIEs S1AP-PROTOCOL-IES ::= { + { ID id-MMEname CRITICALITY ignore TYPE MMEname PRESENCE optional }| + { ID id-ServedGUMMEIs CRITICALITY reject TYPE ServedGUMMEIs PRESENCE optional }| + { ID id-RelativeMMECapacity CRITICALITY reject TYPE RelativeMMECapacity PRESENCE optional }| + { ID id-ServedDCNs CRITICALITY ignore TYPE ServedDCNs PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- MME Configuration Update Acknowledge +-- +-- ************************************************************** + +MMEConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MMEConfigurationUpdateAcknowledgeIEs} }, + ... +} + + +MMEConfigurationUpdateAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MME Configuration Update Failure +-- +-- ************************************************************** + +MMEConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MMEConfigurationUpdateFailureIEs} }, + ... +} + +MMEConfigurationUpdateFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- DOWNLINK S1 CDMA2000 TUNNELLING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Downlink S1 CDMA2000 Tunnelling +-- +-- ************************************************************** + +DownlinkS1cdma2000tunnelling ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DownlinkS1cdma2000tunnellingIEs} }, + ... +} + +DownlinkS1cdma2000tunnellingIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABSubjecttoDataForwardingList CRITICALITY ignore TYPE E-RABSubjecttoDataForwardingList PRESENCE optional }| + { ID id-cdma2000HOStatus CRITICALITY ignore TYPE Cdma2000HOStatus PRESENCE optional }| + { ID id-cdma2000RATType CRITICALITY reject TYPE Cdma2000RATType PRESENCE mandatory }| + { ID id-cdma2000PDU CRITICALITY reject TYPE Cdma2000PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UPLINK S1 CDMA2000 TUNNELLING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Uplink S1 CDMA2000 Tunnelling +-- +-- ************************************************************** + +UplinkS1cdma2000tunnelling ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UplinkS1cdma2000tunnellingIEs} }, + ... +} + +UplinkS1cdma2000tunnellingIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-cdma2000RATType CRITICALITY reject TYPE Cdma2000RATType PRESENCE mandatory }| + { ID id-cdma2000SectorID CRITICALITY reject TYPE Cdma2000SectorID PRESENCE mandatory }| + { ID id-cdma2000HORequiredIndication CRITICALITY ignore TYPE Cdma2000HORequiredIndication PRESENCE optional }| + { ID id-cdma2000OneXSRVCCInfo CRITICALITY reject TYPE Cdma2000OneXSRVCCInfo PRESENCE optional }| + { ID id-cdma2000OneXRAND CRITICALITY reject TYPE Cdma2000OneXRAND PRESENCE optional }| + { ID id-cdma2000PDU CRITICALITY reject TYPE Cdma2000PDU PRESENCE mandatory }| + { ID id-EUTRANRoundTripDelayEstimationInfo CRITICALITY ignore TYPE EUTRANRoundTripDelayEstimationInfo PRESENCE optional }, + -- Extension for Release 9 to assist target HRPD access with the acquisition of the UE -- + ... +} + + +-- ************************************************************** +-- +-- UE CAPABILITY INFO INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Capability Info Indication +-- +-- ************************************************************** + +UECapabilityInfoIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UECapabilityInfoIndicationIEs} }, + ... +} + +UECapabilityInfoIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE mandatory}| + { ID id-UERadioCapabilityForPaging CRITICALITY ignore TYPE UERadioCapabilityForPaging PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- eNB STATUS TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- eNB Status Transfer +-- +-- ************************************************************** + +ENBStatusTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ENBStatusTransferIEs} }, + ... +} + +ENBStatusTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-StatusTransfer-TransparentContainer CRITICALITY reject TYPE ENB-StatusTransfer-TransparentContainer PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- MME STATUS TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MME Status Transfer +-- +-- ************************************************************** + +MMEStatusTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MMEStatusTransferIEs} }, + ... +} + +MMEStatusTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-StatusTransfer-TransparentContainer CRITICALITY reject TYPE ENB-StatusTransfer-TransparentContainer PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- TRACE ELEMENTARY PROCEDURES +-- +-- ************************************************************** +-- ************************************************************** +-- +-- Trace Start +-- +-- ************************************************************** + +TraceStart ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {TraceStartIEs} }, + ... +} + +TraceStartIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Trace Failure Indication +-- +-- ************************************************************** + +TraceFailureIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {TraceFailureIndicationIEs} }, + ... +} + +TraceFailureIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-UTRAN-Trace-ID CRITICALITY ignore TYPE E-UTRAN-Trace-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- DEACTIVATE TRACE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Deactivate Trace +-- +-- ************************************************************** + +DeactivateTrace ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { DeactivateTraceIEs} }, + ... +} + +DeactivateTraceIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-UTRAN-Trace-ID CRITICALITY ignore TYPE E-UTRAN-Trace-ID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- CELL TRAFFIC TRACE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Cell Traffic Trace +-- +-- ************************************************************** + +CellTrafficTrace ::= SEQUENCE { +protocolIEs ProtocolIE-Container { { CellTrafficTraceIEs } }, +... +} + +CellTrafficTraceIEs S1AP-PROTOCOL-IES ::= { + {ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + {ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + {ID id-E-UTRAN-Trace-ID CRITICALITY ignore TYPE E-UTRAN-Trace-ID PRESENCE mandatory }| + {ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory }| + {ID id-TraceCollectionEntityIPAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE mandatory }| + {ID id-PrivacyIndicator CRITICALITY ignore TYPE PrivacyIndicator PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- LOCATION ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Location Reporting Control +-- +-- ************************************************************** + +LocationReportingControl ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { LocationReportingControlIEs} }, + ... +} + +LocationReportingControlIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-RequestType CRITICALITY ignore TYPE RequestType PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Location Report Failure Indication +-- +-- ************************************************************** + +LocationReportingFailureIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { LocationReportingFailureIndicationIEs} }, + ... +} + +LocationReportingFailureIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Location Report +-- +-- ************************************************************** + +LocationReport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { LocationReportIEs} }, + ... +} + +LocationReportIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory }| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory }| + { ID id-RequestType CRITICALITY ignore TYPE RequestType PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- OVERLOAD ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Overload Start +-- +-- ************************************************************** + +OverloadStart ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {OverloadStartIEs} }, + ... +} + +OverloadStartIEs S1AP-PROTOCOL-IES ::= { + { ID id-OverloadResponse CRITICALITY reject TYPE OverloadResponse PRESENCE mandatory }| + { ID id-GUMMEIList CRITICALITY ignore TYPE GUMMEIList PRESENCE optional }| + { ID id-TrafficLoadReductionIndication CRITICALITY ignore TYPE TrafficLoadReductionIndication PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- Overload Stop +-- +-- ************************************************************** + +OverloadStop ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {OverloadStopIEs} }, + ... +} + +OverloadStopIEs S1AP-PROTOCOL-IES ::= { +{ ID id-GUMMEIList CRITICALITY ignore TYPE GUMMEIList PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- WRITE-REPLACE WARNING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Write-Replace Warning Request +-- +-- ************************************************************** + + +WriteReplaceWarningRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {WriteReplaceWarningRequestIEs} }, + ... +} + +WriteReplaceWarningRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-WarningAreaList CRITICALITY ignore TYPE WarningAreaList PRESENCE optional }| + { ID id-RepetitionPeriod CRITICALITY reject TYPE RepetitionPeriod PRESENCE mandatory }| + { ID id-ExtendedRepetitionPeriod CRITICALITY reject TYPE ExtendedRepetitionPeriod PRESENCE optional }| + { ID id-NumberofBroadcastRequest CRITICALITY reject TYPE NumberofBroadcastRequest PRESENCE mandatory }| + { ID id-WarningType CRITICALITY ignore TYPE WarningType PRESENCE optional }| + { ID id-WarningSecurityInfo CRITICALITY ignore TYPE WarningSecurityInfo PRESENCE optional }| + { ID id-DataCodingScheme CRITICALITY ignore TYPE DataCodingScheme PRESENCE optional }| + { ID id-WarningMessageContents CRITICALITY ignore TYPE WarningMessageContents PRESENCE optional }| + { ID id-ConcurrentWarningMessageIndicator CRITICALITY reject TYPE ConcurrentWarningMessageIndicator PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- Write-Replace Warning Response +-- +-- ************************************************************** + +WriteReplaceWarningResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {WriteReplaceWarningResponseIEs} }, + ... +} + +WriteReplaceWarningResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-BroadcastCompletedAreaList CRITICALITY ignore TYPE BroadcastCompletedAreaList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- eNB DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- eNB Direct Information Transfer +-- +-- ************************************************************** + +ENBDirectInformationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ ENBDirectInformationTransferIEs}}, + ... +} + +ENBDirectInformationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-Inter-SystemInformationTransferTypeEDT CRITICALITY reject TYPE Inter-SystemInformationTransferType PRESENCE mandatory }, + ... +} + +Inter-SystemInformationTransferType ::= CHOICE { + rIMTransfer RIMTransfer, + ... +} + +-- ************************************************************** +-- +-- MME DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MME Direct Information Transfer +-- +-- ************************************************************** + +MMEDirectInformationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ MMEDirectInformationTransferIEs}}, + ... +} + +MMEDirectInformationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-Inter-SystemInformationTransferTypeMDT CRITICALITY reject TYPE Inter-SystemInformationTransferType PRESENCE mandatory }, + ... +} +-- ************************************************************** +-- +-- eNB CONFIGURATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- eNB Configuration Transfer +-- +-- ************************************************************** + +ENBConfigurationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ ENBConfigurationTransferIEs}}, + ... +} + +ENBConfigurationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-SONConfigurationTransferECT CRITICALITY ignore TYPE SONConfigurationTransfer PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MME CONFIGURATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MME Configuration Transfer +-- +-- ************************************************************** + +MMEConfigurationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ MMEConfigurationTransferIEs}}, + ... +} + +MMEConfigurationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-SONConfigurationTransferMCT CRITICALITY ignore TYPE SONConfigurationTransfer PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PRIVATE MESSAGE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Private Message +-- +-- ************************************************************** + +PrivateMessage ::= SEQUENCE { + privateIEs PrivateIE-Container {{PrivateMessageIEs}}, + ... +} + +PrivateMessageIEs S1AP-PRIVATE-IES ::= { + ... +} + +-- ************************************************************** +-- +-- KILL PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Kill Request +-- +-- ************************************************************** + + +KillRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {KillRequestIEs} }, + ... +} + +KillRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory}| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory}| + { ID id-WarningAreaList CRITICALITY ignore TYPE WarningAreaList PRESENCE optional}| + { ID id-KillAllWarningMessages CRITICALITY reject TYPE KillAllWarningMessages PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- Kill Response +-- +-- ************************************************************** + +KillResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {KillResponseIEs} }, + ... +} + +KillResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-BroadcastCancelledAreaList CRITICALITY ignore TYPE BroadcastCancelledAreaList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PWS RESTART INDICATION PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PWS Restart Indication +-- +-- ************************************************************** + +PWSRestartIndication::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ PWSRestartIndicationIEs}}, + ... +} + +PWSRestartIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-ECGIListForRestart CRITICALITY reject TYPE ECGIListForRestart PRESENCE mandatory}| + { ID id-Global-ENB-ID CRITICALITY reject TYPE Global-ENB-ID PRESENCE mandatory}| + { ID id-TAIListForRestart CRITICALITY reject TYPE TAIListForRestart PRESENCE mandatory}| + { ID id-EmergencyAreaIDListForRestart CRITICALITY reject TYPE EmergencyAreaIDListForRestart PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- PWS Failure Indication +-- +-- ************************************************************** + +PWSFailureIndication::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ PWSFailureIndicationIEs}}, + ... +} + +PWSFailureIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-PWSfailedECGIList CRITICALITY reject TYPE PWSfailedECGIList PRESENCE mandatory}| + { ID id-Global-ENB-ID CRITICALITY reject TYPE Global-ENB-ID PRESENCE mandatory}, + ... +} + +-- ************************************************************** +-- +-- LPPA TRANSPORT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DOWNLINK UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + +DownlinkUEAssociatedLPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{DownlinkUEAssociatedLPPaTransport-IEs}}, + ... +} + +DownlinkUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Routing-ID CRITICALITY reject TYPE Routing-ID PRESENCE mandatory }| + { ID id-LPPa-PDU CRITICALITY reject TYPE LPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UPLINK UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + +UplinkUEAssociatedLPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UplinkUEAssociatedLPPaTransport-IEs}}, + ... +} + +UplinkUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Routing-ID CRITICALITY reject TYPE Routing-ID PRESENCE mandatory }| + { ID id-LPPa-PDU CRITICALITY reject TYPE LPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- DOWNLINK NON UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + +DownlinkNonUEAssociatedLPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{DownlinkNonUEAssociatedLPPaTransport-IEs}}, + ... +} + +DownlinkNonUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-Routing-ID CRITICALITY reject TYPE Routing-ID PRESENCE mandatory }| + { ID id-LPPa-PDU CRITICALITY reject TYPE LPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UPLINK NON UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + +UplinkNonUEAssociatedLPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UplinkNonUEAssociatedLPPaTransport-IEs}}, + ... +} + +UplinkNonUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-Routing-ID CRITICALITY reject TYPE Routing-ID PRESENCE mandatory }| + { ID id-LPPa-PDU CRITICALITY reject TYPE LPPa-PDU PRESENCE mandatory }, + ... +} + + +-- ************************************************************** +-- +-- E-RAB MODIFICATION INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Modification Indication +-- +-- ************************************************************** + +E-RABModificationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { E-RABModificationIndicationIEs} }, + ... +} + +E-RABModificationIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABToBeModifiedListBearerModInd CRITICALITY reject TYPE E-RABToBeModifiedListBearerModInd PRESENCE mandatory}| + { ID id-E-RABNotToBeModifiedListBearerModInd CRITICALITY reject TYPE E-RABNotToBeModifiedListBearerModInd PRESENCE optional}| + { ID id-CSGMembershipInfo CRITICALITY reject TYPE CSGMembershipInfo PRESENCE optional}| +-- Extension for Release 11 to support BBAI -- + { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}, + ... +} + +E-RABToBeModifiedListBearerModInd ::= E-RAB-IE-ContainerList { {E-RABToBeModifiedItemBearerModIndIEs} } + +E-RABToBeModifiedItemBearerModIndIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeModifiedItemBearerModInd CRITICALITY reject TYPE E-RABToBeModifiedItemBearerModInd PRESENCE mandatory}, + ... +} + +E-RABToBeModifiedItemBearerModInd ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + dL-GTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { E-RABToBeModifiedItemBearerModInd-ExtIEs} } OPTIONAL, + ... +} + +E-RABToBeModifiedItemBearerModInd-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +E-RABNotToBeModifiedListBearerModInd ::= E-RAB-IE-ContainerList { {E-RABNotToBeModifiedItemBearerModIndIEs} } + +E-RABNotToBeModifiedItemBearerModIndIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABNotToBeModifiedItemBearerModInd CRITICALITY reject TYPE E-RABNotToBeModifiedItemBearerModInd PRESENCE mandatory}, + ... +} + +E-RABNotToBeModifiedItemBearerModInd ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + dL-GTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { E-RABNotToBeModifiedItemBearerModInd-ExtIEs} } OPTIONAL, + ... +} + +E-RABNotToBeModifiedItemBearerModInd-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CSGMembershipInfo ::= SEQUENCE { + cSGMembershipStatus CSGMembershipStatus, + cSG-Id CSG-Id, + cellAccessMode CellAccessMode OPTIONAL, + pLMNidentity PLMNidentity OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { CSGMembershipInfo-ExtIEs} } OPTIONAL, + ... +} + +CSGMembershipInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- E-RAB Modification Confirm +-- +-- ************************************************************** + +E-RABModificationConfirm ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABModificationConfirmIEs} }, + ... +} + +E-RABModificationConfirmIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABModifyListBearerModConf CRITICALITY ignore TYPE E-RABModifyListBearerModConf PRESENCE optional}| + { ID id-E-RABFailedToModifyListBearerModConf CRITICALITY ignore TYPE E-RABList PRESENCE optional}| + { ID id-E-RABToBeReleasedListBearerModConf CRITICALITY ignore TYPE E-RABList PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}, + ... +} + +E-RABModifyListBearerModConf ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABModifyItemBearerModConfIEs} } + +E-RABModifyItemBearerModConfIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABModifyItemBearerModConf CRITICALITY ignore TYPE E-RABModifyItemBearerModConf PRESENCE mandatory}, + ... +} + +E-RABModifyItemBearerModConf ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + iE-Extensions ProtocolExtensionContainer { {E-RABModifyItemBearerModConfExtIEs} } OPTIONAL, + ... +} + + +E-RABModifyItemBearerModConfExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Modification Indication +-- +-- ************************************************************** + +UEContextModificationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationIndicationIEs} }, + ... +} + +UEContextModificationIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-CSGMembershipInfo CRITICALITY reject TYPE CSGMembershipInfo PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- UE Context Modification Confirm +-- +-- ************************************************************** + +UEContextModificationConfirm ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextModificationConfirmIEs} }, + ... +} + +UEContextModificationConfirmIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT SUSPEND ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Suspend Request +-- +-- ************************************************************** + +UEContextSuspendRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextSuspendRequestIEs} }, + ... +} + +UEContextSuspendRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-InformationOnRecommendedCellsAndENBsForPaging CRITICALITY ignore TYPE InformationOnRecommendedCellsAndENBsForPaging PRESENCE optional}| + { ID id-CellIdentifierAndCELevelForCECapableUEs CRITICALITY ignore TYPE CellIdentifierAndCELevelForCECapableUEs PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UE Context Suspend Response +-- +-- ************************************************************** + +UEContextSuspendResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextSuspendResponseIEs} }, + ... +} + +UEContextSuspendResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT RESUME ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Resume Request +-- +-- ************************************************************** + +UEContextResumeRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextResumeRequestIEs} }, + ... +} + +UEContextResumeRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABFailedToResumeListResumeReq CRITICALITY reject TYPE E-RABFailedToResumeListResumeReq PRESENCE optional}| + { ID id-RRC-Resume-Cause CRITICALITY ignore TYPE RRC-Establishment-Cause PRESENCE optional}, + ... +} + +E-RABFailedToResumeListResumeReq ::= E-RAB-IE-ContainerList { {E-RABFailedToResumeItemResumeReqIEs} } + +E-RABFailedToResumeItemResumeReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABFailedToResumeItemResumeReq CRITICALITY reject TYPE E-RABFailedToResumeItemResumeReq PRESENCE mandatory}, + ... +} + +E-RABFailedToResumeItemResumeReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { E-RABFailedToResumeItemResumeReq-ExtIEs} } OPTIONAL, + ... +} + +E-RABFailedToResumeItemResumeReq-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- UE Context Resume Response +-- +-- ************************************************************** + +UEContextResumeResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextResumeResponseIEs} }, + ... +} + +UEContextResumeResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABFailedToResumeListResumeRes CRITICALITY reject TYPE E-RABFailedToResumeListResumeRes PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE optional}, + ... +} + +E-RABFailedToResumeListResumeRes ::= E-RAB-IE-ContainerList { {E-RABFailedToResumeItemResumeResIEs} } + +E-RABFailedToResumeItemResumeResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABFailedToResumeItemResumeRes CRITICALITY reject TYPE E-RABFailedToResumeItemResumeRes PRESENCE mandatory}, + ... +} + +E-RABFailedToResumeItemResumeRes ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { E-RABFailedToResumeItemResumeRes-ExtIEs} } OPTIONAL, + ... +} + +E-RABFailedToResumeItemResumeRes-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- UE Context Resume Failure +-- +-- ************************************************************** + +UEContextResumeFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextResumeFailureIEs} }, + ... +} + +UEContextResumeFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- Connection Establishment Indication +-- +-- ************************************************************** + +ConnectionEstablishmentIndication::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ConnectionEstablishmentIndicationIEs} }, + ... +} + +ConnectionEstablishmentIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional }| + { ID id-DL-CP-SecurityInformation CRITICALITY ignore TYPE DL-CP-SecurityInformation PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Retrieve UE Information +-- +-- ************************************************************** + +RetrieveUEInformation ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { RetrieveUEInformationIEs} }, + ... +} + +RetrieveUEInformationIEs S1AP-PROTOCOL-IES ::= { + { ID id-S-TMSI CRITICALITY reject TYPE S-TMSI PRESENCE mandatory}, +... + +} + + +-- ************************************************************** + +-- UE Information Transfer +-- +-- ************************************************************** +UEInformationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEInformationTransferIEs} }, + ... +} + +UEInformationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-S-TMSI CRITICALITY reject TYPE S-TMSI PRESENCE mandatory}| + { ID id-UE-Level-QoS-Parameters CRITICALITY ignore TYPE E-RABLevelQoSParameters PRESENCE optional}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- eNB CP Relocation Indication +-- +-- ************************************************************** + +ENBCPRelocationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { ENBCPRelocationIndicationIEs} }, + ... +} + +ENBCPRelocationIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-S-TMSI CRITICALITY reject TYPE S-TMSI PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory}| + { ID id-UL-CP-SecurityInformation CRITICALITY reject TYPE UL-CP-SecurityInformation PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- MME CP Relocation Indication +-- +-- ************************************************************** + +MMECPRelocationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { MMECPRelocationIndicationIEs} }, + ... +} + +MMECPRelocationIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}, + ... +} + +END + +-- ************************************************************** +-- +-- Information Element Definitions +-- +-- ************************************************************** + +S1AP-IEs { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-IEs (2) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + id-E-RABInformationListItem, + id-E-RABItem, + id-Bearers-SubjectToStatusTransfer-Item, + id-Time-Synchronisation-Info, + id-x2TNLConfigurationInfo, + id-eNBX2ExtendedTransportLayerAddresses, + id-MDTConfiguration, + id-Time-UE-StayedInCell-EnhancedGranularity, + id-HO-Cause, + id-M3Configuration, + id-M4Configuration, + id-M5Configuration, + id-MDT-Location-Info, + id-SignallingBasedMDTPLMNList, + id-MobilityInformation, + id-ULCOUNTValueExtended, + id-DLCOUNTValueExtended, + id-ReceiveStatusOfULPDCPSDUsExtended, + id-eNBIndirectX2TransportLayerAddresses, + id-Muting-Availability-Indication, + id-Muting-Pattern-Information, + id-Synchronisation-Information, + id-uE-HistoryInformationFromTheUE, + id-LoggedMBSFNMDT, + id-SON-Information-Report, + id-RecommendedCellItem, + id-RecommendedENBItem, + id-ProSeUEtoNetworkRelaying, + id-ULCOUNTValuePDCP-SNlength18, + id-DLCOUNTValuePDCP-SNlength18, + id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18, + id-M6Configuration, + id-M7Configuration, + id-RAT-Type, + maxnoofCSGs, + maxnoofE-RABs, + maxnoofErrors, + maxnoofBPLMNs, + maxnoofPLMNsPerMME, + maxnoofTACs, + maxnoofEPLMNs, + maxnoofEPLMNsPlusOne, + maxnoofForbLACs, + maxnoofForbTACs, + maxnoofCells, + maxnoofCellID, + maxnoofDCNs, + maxnoofEmergencyAreaID, + maxnoofTAIforWarning, + maxnoofCellinTAI, + maxnoofCellinEAI, + maxnoofeNBX2TLAs, + maxnoofeNBX2ExtTLAs, + maxnoofeNBX2GTPTLAs, + maxnoofRATs, + maxnoofGroupIDs, + maxnoofMMECs, + maxnoofTAforMDT, + maxnoofCellIDforMDT, + maxnoofMDTPLMNs, + maxnoofCellsforRestart, + maxnoofRestartTAIs, + maxnoofRestartEmergencyAreaIDs, + maxnoofMBSFNAreaMDT, + maxEARFCN, + maxnoofCellsineNB, + maxnoofRecommendedCells, + maxnoofRecommendedENBs + + + +FROM S1AP-Constants + + Criticality, + ProcedureCode, + ProtocolIE-ID, + TriggeringMessage +FROM S1AP-CommonDataTypes + + ProtocolExtensionContainer{}, + S1AP-PROTOCOL-EXTENSION, + ProtocolIE-SingleContainer{}, + S1AP-PROTOCOL-IES + +FROM S1AP-Containers; + +-- A + +Additional-GUTI::= SEQUENCE { + gUMMEI GUMMEI, + m-TMSI M-TMSI, + iE-Extensions ProtocolExtensionContainer { {Additional-GUTI-ExtIEs} } OPTIONAL, + ... +} + +Additional-GUTI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +AreaScopeOfMDT ::= CHOICE { + cellBased CellBasedMDT, + tABased TABasedMDT, + pLMNWide NULL, + ..., + tAIBased TAIBasedMDT +} + +AllocationAndRetentionPriority ::= SEQUENCE { + priorityLevel PriorityLevel, + pre-emptionCapability Pre-emptionCapability, + pre-emptionVulnerability Pre-emptionVulnerability, + iE-Extensions ProtocolExtensionContainer { {AllocationAndRetentionPriority-ExtIEs} } OPTIONAL, + ... +} + +AllocationAndRetentionPriority-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +AssistanceDataForCECapableUEs ::= SEQUENCE { + cellIdentifierAndCELevelForCECapableUEs CellIdentifierAndCELevelForCECapableUEs, + iE-Extensions ProtocolExtensionContainer { { InformationForCECapableUEs-ExtIEs} } OPTIONAL, + ... +} + +InformationForCECapableUEs-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +AssistanceDataForPaging ::= SEQUENCE { + assistanceDataForRecommendedCells AssistanceDataForRecommendedCells OPTIONAL, + assistanceDataForCECapableUEs AssistanceDataForCECapableUEs OPTIONAL, + pagingAttemptInformation PagingAttemptInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { AssistanceDataForPaging-ExtIEs} } OPTIONAL, + ... +} + +AssistanceDataForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +AssistanceDataForRecommendedCells ::= SEQUENCE { + recommendedCellsForPaging RecommendedCellsForPaging, + iE-Extensions ProtocolExtensionContainer { { AssistanceDataForRecommendedCells-ExtIEs} } OPTIONAL, + ... +} + +AssistanceDataForRecommendedCells-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- B + +Bearers-SubjectToStatusTransferList ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { { Bearers-SubjectToStatusTransfer-ItemIEs } } + +Bearers-SubjectToStatusTransfer-ItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-Bearers-SubjectToStatusTransfer-Item CRITICALITY ignore TYPE Bearers-SubjectToStatusTransfer-Item PRESENCE mandatory }, + ... +} + +Bearers-SubjectToStatusTransfer-Item ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + uL-COUNTvalue COUNTvalue, + dL-COUNTvalue COUNTvalue, + receiveStatusofULPDCPSDUs ReceiveStatusofULPDCPSDUs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {Bearers-SubjectToStatusTransfer-ItemExtIEs} } OPTIONAL, + ... +} + +Bearers-SubjectToStatusTransfer-ItemExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-ULCOUNTValueExtended CRITICALITY ignore EXTENSION COUNTValueExtended PRESENCE optional}| + { ID id-DLCOUNTValueExtended CRITICALITY ignore EXTENSION COUNTValueExtended PRESENCE optional}| + { ID id-ReceiveStatusOfULPDCPSDUsExtended CRITICALITY ignore EXTENSION ReceiveStatusOfULPDCPSDUsExtended PRESENCE optional}| + { ID id-ULCOUNTValuePDCP-SNlength18 CRITICALITY ignore EXTENSION COUNTvaluePDCP-SNlength18 PRESENCE optional}| + { ID id-DLCOUNTValuePDCP-SNlength18 CRITICALITY ignore EXTENSION COUNTvaluePDCP-SNlength18 PRESENCE optional}| + { ID id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 CRITICALITY ignore EXTENSION ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 PRESENCE optional}, + ... +} + +BearerType ::= ENUMERATED { + non-IP, + ... +} + +BitRate ::= INTEGER (0..10000000000) + +BPLMNs ::= SEQUENCE (SIZE(1.. maxnoofBPLMNs)) OF PLMNidentity + +BroadcastCancelledAreaList ::= CHOICE { + cellID-Cancelled CellID-Cancelled, + tAI-Cancelled TAI-Cancelled, + emergencyAreaID-Cancelled EmergencyAreaID-Cancelled, + ... +} + +BroadcastCompletedAreaList ::= CHOICE { + cellID-Broadcast CellID-Broadcast, + tAI-Broadcast TAI-Broadcast, + emergencyAreaID-Broadcast EmergencyAreaID-Broadcast, + ... +} + + +-- C + +CancelledCellinEAI ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CancelledCellinEAI-Item + +CancelledCellinEAI-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellinEAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellinEAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CancelledCellinTAI ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CancelledCellinTAI-Item + +CancelledCellinTAI-Item ::= SEQUENCE{ + eCGI EUTRAN-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellinTAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellinTAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Cause ::= CHOICE { + radioNetwork CauseRadioNetwork, + transport CauseTransport, + nas CauseNas, + protocol CauseProtocol, + misc CauseMisc, + ... +} + +CauseMisc ::= ENUMERATED { + control-processing-overload, + not-enough-user-plane-processing-resources, + hardware-failure, + om-intervention, + unspecified, + unknown-PLMN, +... +} + +CauseProtocol ::= ENUMERATED { + transfer-syntax-error, + abstract-syntax-error-reject, + abstract-syntax-error-ignore-and-notify, + message-not-compatible-with-receiver-state, + semantic-error, + abstract-syntax-error-falsely-constructed-message, + unspecified, + ... +} + +CauseRadioNetwork ::= ENUMERATED { + unspecified, + tx2relocoverall-expiry, + successful-handover, + release-due-to-eutran-generated-reason, + handover-cancelled, + partial-handover, + ho-failure-in-target-EPC-eNB-or-target-system, + ho-target-not-allowed, + tS1relocoverall-expiry, + tS1relocprep-expiry, + cell-not-available, + unknown-targetID, + no-radio-resources-available-in-target-cell, + unknown-mme-ue-s1ap-id, + unknown-enb-ue-s1ap-id, + unknown-pair-ue-s1ap-id, + handover-desirable-for-radio-reason, + time-critical-handover, + resource-optimisation-handover, + reduce-load-in-serving-cell, + user-inactivity, + radio-connection-with-ue-lost, + load-balancing-tau-required, + cs-fallback-triggered, + ue-not-available-for-ps-service, + radio-resources-not-available, + failure-in-radio-interface-procedure, + invalid-qos-combination, + interrat-redirection, + interaction-with-other-procedure, + unknown-E-RAB-ID, + multiple-E-RAB-ID-instances, + encryption-and-or-integrity-protection-algorithms-not-supported, + s1-intra-system-handover-triggered, + s1-inter-system-handover-triggered, + x2-handover-triggered, + ..., + redirection-towards-1xRTT, + not-supported-QCI-value, + invalid-CSG-Id, + release-due-to-pre-emption + +} + +CauseTransport ::= ENUMERATED { + transport-resource-unavailable, + unspecified, + ... +} + +CauseNas ::= ENUMERATED { + normal-release, + authentication-failure, + detach, + unspecified, + ..., + csg-subscription-expiry +} + +CellAccessMode ::= ENUMERATED { + hybrid, + ... +} + +CellIdentifierAndCELevelForCECapableUEs ::= SEQUENCE { + global-Cell-ID EUTRAN-CGI, + cELevel CELevel, + iE-Extensions ProtocolExtensionContainer { { CellIdentifierAndCELevelForCECapableUEs-ExtIEs} } OPTIONAL, + ... +} + +CellIdentifierAndCELevelForCECapableUEs-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- Coverage Enhancement level encoded according to TS 36.331 [16] -- +CELevel ::= OCTET STRING + +CE-mode-B-SupportIndicator ::= ENUMERATED { + supported, + ... +} + +CellIdentity ::= BIT STRING (SIZE (28)) + +CellID-Broadcast ::= SEQUENCE (SIZE(1..maxnoofCellID)) OF CellID-Broadcast-Item + +CellID-Broadcast-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {CellID-Broadcast-Item-ExtIEs} } OPTIONAL, + ... +} + +CellID-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellID-Cancelled::= SEQUENCE (SIZE(1..maxnoofCellID)) OF CellID-Cancelled-Item + +CellID-Cancelled-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CellID-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + +CellID-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellBasedMDT::= SEQUENCE { + cellIdListforMDT CellIdListforMDT, + iE-Extensions ProtocolExtensionContainer { {CellBasedMDT-ExtIEs} } OPTIONAL, + ... +} + +CellBasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellIdListforMDT ::= SEQUENCE (SIZE(1..maxnoofCellIDforMDT)) OF EUTRAN-CGI + +Cdma2000PDU ::= OCTET STRING + +Cdma2000RATType ::= ENUMERATED { + hRPD, + onexRTT, + ... +} + +Cdma2000SectorID ::= OCTET STRING + +Cdma2000HOStatus ::= ENUMERATED { + hOSuccess, + hOFailure, + ... +} + +Cdma2000HORequiredIndication ::= ENUMERATED { + true, + ... +} + +Cdma2000OneXSRVCCInfo ::= SEQUENCE { + cdma2000OneXMEID Cdma2000OneXMEID, + cdma2000OneXMSI Cdma2000OneXMSI, + cdma2000OneXPilot Cdma2000OneXPilot, + iE-Extensions ProtocolExtensionContainer { {Cdma2000OneXSRVCCInfo-ExtIEs} } OPTIONAL, + ... +} + +Cdma2000OneXSRVCCInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Cdma2000OneXMEID ::= OCTET STRING + +Cdma2000OneXMSI ::= OCTET STRING + +Cdma2000OneXPilot ::= OCTET STRING + +Cdma2000OneXRAND ::= OCTET STRING + + +Cell-Size ::= ENUMERATED {verysmall, small, medium, large, ...} + +CellType ::= SEQUENCE { + cell-Size Cell-Size, + iE-Extensions ProtocolExtensionContainer { { CellType-ExtIEs}} OPTIONAL, + ... +} + +CellType-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CGI ::= SEQUENCE { + pLMNidentity PLMNidentity, + lAC LAC, + cI CI, + rAC RAC OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {CGI-ExtIEs} } OPTIONAL, + ... + } + +CGI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CI ::= OCTET STRING (SIZE (2)) + +CNDomain ::= ENUMERATED { + ps, + cs +} + +ConcurrentWarningMessageIndicator ::= ENUMERATED { + true +} + +Correlation-ID ::= OCTET STRING (SIZE (4)) + +CSFallbackIndicator ::= ENUMERATED { + cs-fallback-required, + ..., + cs-fallback-high-priority +} + +AdditionalCSFallbackIndicator ::= ENUMERATED { + no-restriction, + restriction, + ... +} + +CSG-Id ::= BIT STRING (SIZE (27)) + + +CSG-IdList ::= SEQUENCE (SIZE (1.. maxnoofCSGs)) OF CSG-IdList-Item + +CSG-IdList-Item ::= SEQUENCE { + cSG-Id CSG-Id, + iE-Extensions ProtocolExtensionContainer { {CSG-IdList-Item-ExtIEs} } OPTIONAL, + ... +} + +CSG-IdList-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CSGMembershipStatus ::= ENUMERATED { + member, + not-member +} + + +COUNTvalue ::= SEQUENCE { + pDCP-SN PDCP-SN, + hFN HFN, + iE-Extensions ProtocolExtensionContainer { {COUNTvalue-ExtIEs} } OPTIONAL, + ... +} +COUNTvalue-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +COUNTValueExtended ::= SEQUENCE { + pDCP-SNExtended PDCP-SNExtended, + hFNModified HFNModified, + iE-Extensions ProtocolExtensionContainer { {COUNTValueExtended-ExtIEs} } OPTIONAL, + ... +} + +COUNTValueExtended-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +COUNTvaluePDCP-SNlength18 ::= SEQUENCE { + pDCP-SNlength18 PDCP-SNlength18, + hFNforPDCP-SNlength18 HFNforPDCP-SNlength18, + iE-Extensions ProtocolExtensionContainer { {COUNTvaluePDCP-SNlength18-ExtIEs} } OPTIONAL, + ... +} + +COUNTvaluePDCP-SNlength18-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Coverage-Level ::= ENUMERATED { + extendedcoverage, + ... +} + +CriticalityDiagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-ExtIEs}} OPTIONAL, + ... +} + +CriticalityDiagnostics-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1.. maxnoofErrors)) OF CriticalityDiagnostics-IE-Item + +CriticalityDiagnostics-IE-Item ::= SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-IE-Item-ExtIEs}} OPTIONAL, + ... +} + +CriticalityDiagnostics-IE-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- D + +DataCodingScheme ::= BIT STRING (SIZE (8)) + +DCN-ID ::= INTEGER (0..65535) + +ServedDCNs ::= SEQUENCE (SIZE(0..maxnoofDCNs)) OF ServedDCNsItem + +ServedDCNsItem ::= SEQUENCE { + dCN-ID DCN-ID, + relativeDCNCapacity RelativeMMECapacity, + iE-Extensions ProtocolExtensionContainer { {ServedDCNsItem-ExtIEs} } OPTIONAL, + ... +} + +ServedDCNsItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DL-CP-SecurityInformation ::= SEQUENCE { + dl-NAS-MAC DL-NAS-MAC, + iE-Extensions ProtocolExtensionContainer { { DL-CP-SecurityInformation-ExtIEs} } OPTIONAL, + ... +} + +DL-CP-SecurityInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DL-Forwarding ::= ENUMERATED { + dL-Forwarding-proposed, + ... +} + +DL-NAS-MAC ::= BIT STRING (SIZE (16)) + +Direct-Forwarding-Path-Availability ::= ENUMERATED { + directPathAvailable, + ... +} + +Data-Forwarding-Not-Possible ::= ENUMERATED { + data-Forwarding-not-Possible, + ... +} + +DLNASPDUDeliveryAckRequest ::= ENUMERATED { + requested, + ... +} + +-- E + +EARFCN ::= INTEGER(0..maxEARFCN, ...) + +ECGIList ::= SEQUENCE (SIZE(1..maxnoofCellID)) OF EUTRAN-CGI + +PWSfailedECGIList ::= SEQUENCE (SIZE(1..maxnoofCellsineNB)) OF EUTRAN-CGI + +EmergencyAreaIDList ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID + +EmergencyAreaID ::= OCTET STRING (SIZE (3)) + +EmergencyAreaID-Broadcast ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID-Broadcast-Item + +EmergencyAreaID-Broadcast-Item ::= SEQUENCE { + emergencyAreaID EmergencyAreaID, + completedCellinEAI CompletedCellinEAI, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaID-Broadcast-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaID-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +EmergencyAreaID-Cancelled ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID-Cancelled-Item + +EmergencyAreaID-Cancelled-Item ::= SEQUENCE { + emergencyAreaID EmergencyAreaID, + cancelledCellinEAI CancelledCellinEAI, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaID-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaID-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CompletedCellinEAI ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CompletedCellinEAI-Item + +CompletedCellinEAI-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {CompletedCellinEAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CompletedCellinEAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ECGI-List ::= SEQUENCE (SIZE(1..maxnoofCellsineNB)) OF EUTRAN-CGI + +EmergencyAreaIDListForRestart ::= SEQUENCE (SIZE(1..maxnoofRestartEmergencyAreaIDs)) OF EmergencyAreaID + +ENB-ID ::= CHOICE { + macroENB-ID BIT STRING (SIZE(20)), + homeENB-ID BIT STRING (SIZE(28)), + ... , + short-macroENB-ID BIT STRING (SIZE(18)), + long-macroENB-ID BIT STRING (SIZE(21)) +} + +GERAN-Cell-ID ::= SEQUENCE { + lAI LAI, + rAC RAC, + cI CI, + iE-Extensions ProtocolExtensionContainer { { GERAN-Cell-ID-ExtIEs} } OPTIONAL, + ... +} + +GERAN-Cell-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Global-ENB-ID ::= SEQUENCE { + pLMNidentity PLMNidentity, + eNB-ID ENB-ID, + iE-Extensions ProtocolExtensionContainer { {GlobalENB-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalENB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +GUMMEIList::= SEQUENCE (SIZE (1.. maxnoofMMECs)) OF GUMMEI + +ENB-StatusTransfer-TransparentContainer ::= SEQUENCE { + bearers-SubjectToStatusTransferList Bearers-SubjectToStatusTransferList, + iE-Extensions ProtocolExtensionContainer { {ENB-StatusTransfer-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +ENB-StatusTransfer-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ENB-UE-S1AP-ID ::= INTEGER (0..16777215) + +ENBname ::= PrintableString (SIZE (1..150,...)) + +ENBX2TLAs ::= SEQUENCE (SIZE(1.. maxnoofeNBX2TLAs)) OF TransportLayerAddress + +EncryptionAlgorithms ::= BIT STRING (SIZE (16,...)) + +EnhancedCoverageRestricted ::= ENUMERATED { + restricted, + ... +} + +EPLMNs ::= SEQUENCE (SIZE(1..maxnoofEPLMNs)) OF PLMNidentity +EventType ::= ENUMERATED { + direct, + change-of-serve-cell, + stop-change-of-serve-cell, + ... +} + +E-RAB-ID ::= INTEGER (0..15, ...) + +E-RABInformationList ::= SEQUENCE (SIZE (1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { { E-RABInformationListIEs } } + +E-RABInformationListIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABInformationListItem CRITICALITY ignore TYPE E-RABInformationListItem PRESENCE mandatory }, + ... +} + +E-RABInformationListItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + dL-Forwarding DL-Forwarding OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABInformationListItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABInformationListItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +E-RABList ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABItemIEs} } + +E-RABItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABItem CRITICALITY ignore TYPE E-RABItem PRESENCE mandatory }, + ... +} + +E-RABItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { {E-RABItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +E-RABLevelQoSParameters ::= SEQUENCE { + qCI QCI, + allocationRetentionPriority AllocationAndRetentionPriority, + gbrQosInformation GBR-QosInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABQoSParameters-ExtIEs} } OPTIONAL, + ... +} + +E-RABQoSParameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +EUTRAN-CGI ::= SEQUENCE { + pLMNidentity PLMNidentity, + cell-ID CellIdentity, + iE-Extensions ProtocolExtensionContainer { {EUTRAN-CGI-ExtIEs} } OPTIONAL, + ... +} + +EUTRAN-CGI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRANRoundTripDelayEstimationInfo ::= INTEGER (0..2047) + +ExpectedUEBehaviour ::= SEQUENCE { + expectedActivity ExpectedUEActivityBehaviour OPTIONAL, + expectedHOInterval ExpectedHOInterval OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ExpectedUEBehaviour-ExtIEs} } OPTIONAL, + ... +} + +ExpectedUEBehaviour-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ExpectedUEActivityBehaviour ::= SEQUENCE { + expectedActivityPeriod ExpectedActivityPeriod OPTIONAL, + expectedIdlePeriod ExpectedIdlePeriod OPTIONAL, + sourceofUEActivityBehaviourInformation SourceOfUEActivityBehaviourInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ExpectedUEActivityBehaviour-ExtIEs} } OPTIONAL, + ... +} + +ExpectedUEActivityBehaviour-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ExpectedActivityPeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181,...) + +ExpectedIdlePeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181,...) + +SourceOfUEActivityBehaviourInformation ::= ENUMERATED { + subscription-information, + statistics, + ... +} + +ExpectedHOInterval ::= ENUMERATED { + sec15, sec30, sec60, sec90, sec120, sec180, long-time, + ... +} + +ExtendedRNC-ID ::= INTEGER (4096..65535) + +ExtendedRepetitionPeriod ::= INTEGER (4096..131071) + +Extended-UEIdentityIndexValue ::= BIT STRING (SIZE (14)) + +-- F + +ForbiddenInterRATs ::= ENUMERATED { + all, + geran, + utran, + cdma2000, + ..., + geranandutran, + cdma2000andutran + +} + +ForbiddenTAs ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF ForbiddenTAs-Item + +ForbiddenTAs-Item ::= SEQUENCE { + pLMN-Identity PLMNidentity, + forbiddenTACs ForbiddenTACs, + iE-Extensions ProtocolExtensionContainer { {ForbiddenTAs-Item-ExtIEs} } OPTIONAL, + ... +} + +ForbiddenTAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ForbiddenTACs ::= SEQUENCE (SIZE(1..maxnoofForbTACs)) OF TAC + +ForbiddenLAs ::= SEQUENCE (SIZE(1..maxnoofEPLMNsPlusOne)) OF ForbiddenLAs-Item + +ForbiddenLAs-Item ::= SEQUENCE { + pLMN-Identity PLMNidentity, + forbiddenLACs ForbiddenLACs, + iE-Extensions ProtocolExtensionContainer { {ForbiddenLAs-Item-ExtIEs} } OPTIONAL, + ... +} + +ForbiddenLAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ForbiddenLACs ::= SEQUENCE (SIZE(1..maxnoofForbLACs)) OF LAC + +-- G + +GBR-QosInformation ::= SEQUENCE { + e-RAB-MaximumBitrateDL BitRate, + e-RAB-MaximumBitrateUL BitRate, + e-RAB-GuaranteedBitrateDL BitRate, + e-RAB-GuaranteedBitrateUL BitRate, + iE-Extensions ProtocolExtensionContainer { { GBR-QosInformation-ExtIEs} } OPTIONAL, + ... +} + +GBR-QosInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +GTP-TEID ::= OCTET STRING (SIZE (4)) + +GUMMEI ::= SEQUENCE { + pLMN-Identity PLMNidentity, + mME-Group-ID MME-Group-ID, + mME-Code MME-Code, + iE-Extensions ProtocolExtensionContainer { {GUMMEI-ExtIEs} } OPTIONAL, + ... +} + +GUMMEI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +GUMMEIType ::= ENUMERATED { + native, + mapped, + ... +} + +GWContextReleaseIndication ::= ENUMERATED { + true, + ... +} + +-- H + +HandoverRestrictionList ::= SEQUENCE { + servingPLMN PLMNidentity, + equivalentPLMNs EPLMNs OPTIONAL, + forbiddenTAs ForbiddenTAs OPTIONAL, + forbiddenLAs ForbiddenLAs OPTIONAL, + forbiddenInterRATs ForbiddenInterRATs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {HandoverRestrictionList-ExtIEs} } OPTIONAL, + ... +} + +HandoverRestrictionList-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +HandoverType ::= ENUMERATED { + intralte, + ltetoutran, + ltetogeran, + utrantolte, + gerantolte, + ... +} + +HFN ::= INTEGER (0..1048575) + +HFNModified ::= INTEGER (0..131071) + +HFNforPDCP-SNlength18 ::= INTEGER (0..16383) + +-- I + +Masked-IMEISV ::= BIT STRING (SIZE (64)) + +ImmediateMDT ::= SEQUENCE { + measurementsToActivate MeasurementsToActivate, + m1reportingTrigger M1ReportingTrigger, + m1thresholdeventA2 M1ThresholdEventA2 OPTIONAL, +-- Included in case of event-triggered, or event-triggered periodic reporting for measurement M1 + m1periodicReporting M1PeriodicReporting OPTIONAL, +-- Included in case of periodic or event-triggered periodic reporting + iE-Extensions ProtocolExtensionContainer { { ImmediateMDT-ExtIEs} } OPTIONAL, + ... +} + +ImmediateMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-M3Configuration CRITICALITY ignore EXTENSION M3Configuration PRESENCE conditional}| + { ID id-M4Configuration CRITICALITY ignore EXTENSION M4Configuration PRESENCE conditional}| + { ID id-M5Configuration CRITICALITY ignore EXTENSION M5Configuration PRESENCE conditional}| + { ID id-MDT-Location-Info CRITICALITY ignore EXTENSION MDT-Location-Info PRESENCE optional}| + { ID id-M6Configuration CRITICALITY ignore EXTENSION M6Configuration PRESENCE conditional}| + { ID id-M7Configuration CRITICALITY ignore EXTENSION M7Configuration PRESENCE conditional}, + ... +} + +IMSI ::= OCTET STRING (SIZE (3..8)) + +InformationOnRecommendedCellsAndENBsForPaging ::= SEQUENCE { + recommendedCellsForPaging RecommendedCellsForPaging, + recommendENBsForPaging RecommendedENBsForPaging, + iE-Extensions ProtocolExtensionContainer { { InformationOnRecommendedCellsAndENBsForPaging-ExtIEs} } OPTIONAL, + ... +} + +InformationOnRecommendedCellsAndENBsForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +IntegrityProtectionAlgorithms ::= BIT STRING (SIZE (16,...)) + +IntendedNumberOfPagingAttempts ::= INTEGER (1..16, ...) + +InterfacesToTrace ::= BIT STRING (SIZE (8)) + + + +-- J +-- K + +KillAllWarningMessages ::= ENUMERATED {true} + +-- L + + +LAC ::= OCTET STRING (SIZE (2)) + +LAI ::= SEQUENCE { + pLMNidentity PLMNidentity, + lAC LAC, + iE-Extensions ProtocolExtensionContainer { {LAI-ExtIEs} } OPTIONAL, + ... +} + +LAI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +LastVisitedCell-Item ::= CHOICE { + e-UTRAN-Cell LastVisitedEUTRANCellInformation, + uTRAN-Cell LastVisitedUTRANCellInformation, + gERAN-Cell LastVisitedGERANCellInformation, + ... +} +LastVisitedEUTRANCellInformation ::= SEQUENCE { + global-Cell-ID EUTRAN-CGI, + cellType CellType, + time-UE-StayedInCell Time-UE-StayedInCell, + iE-Extensions ProtocolExtensionContainer { { LastVisitedEUTRANCellInformation-ExtIEs} } OPTIONAL, + ... +} +LastVisitedEUTRANCellInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Rel-11 to support enhanced granularity for time UE stayed in cell -- + { ID id-Time-UE-StayedInCell-EnhancedGranularity CRITICALITY ignore EXTENSION Time-UE-StayedInCell-EnhancedGranularity PRESENCE optional}| + { ID id-HO-Cause CRITICALITY ignore EXTENSION Cause PRESENCE optional}, + ... +} +LastVisitedUTRANCellInformation ::= OCTET STRING + +LastVisitedGERANCellInformation ::= CHOICE { + undefined NULL, + ... +} + +L3-Information ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +LPPa-PDU ::= OCTET STRING + +LHN-ID ::= OCTET STRING(SIZE (32..256)) + +Links-to-log ::= ENUMERATED {uplink, downlink, both-uplink-and-downlink, ...} + +ListeningSubframePattern ::= SEQUENCE { + pattern-period ENUMERATED {ms1280, ms2560, ms5120, ms10240, ...}, + pattern-offset INTEGER (0..10239, ...), + iE-Extensions ProtocolExtensionContainer { { ListeningSubframePattern-ExtIEs} } OPTIONAL, + ... +} + +ListeningSubframePattern-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +... +} + +LoggedMDT ::= SEQUENCE { + loggingInterval LoggingInterval, + loggingDuration LoggingDuration, + iE-Extensions ProtocolExtensionContainer { {LoggedMDT-ExtIEs} } OPTIONAL, + ... +} + +LoggedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +... +} + +LoggingInterval ::= ENUMERATED {ms128, ms256, ms512, ms1024, ms2048, ms3072, ms4096, ms6144} + +LoggingDuration ::= ENUMERATED {m10, m20, m40, m60, m90, m120} + +LoggedMBSFNMDT ::= SEQUENCE { + loggingInterval LoggingInterval, + loggingDuration LoggingDuration, + mBSFN-ResultToLog MBSFN-ResultToLog OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { LoggedMBSFNMDT-ExtIEs } } OPTIONAL, + ... +} + +LoggedMBSFNMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- M + +M3Configuration ::= SEQUENCE { + m3period M3period, + iE-Extensions ProtocolExtensionContainer { { M3Configuration-ExtIEs} } OPTIONAL, + ... +} + +M3Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M3period ::= ENUMERATED {ms100, ms1000, ms10000, ... } + +M4Configuration ::= SEQUENCE { + m4period M4period, + m4-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M4Configuration-ExtIEs} } OPTIONAL, + ... +} + +M4Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M4period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... } + +M5Configuration ::= SEQUENCE { + m5period M5period, + m5-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M5Configuration-ExtIEs} } OPTIONAL, + ... +} + +M5Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M5period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... } + +M6Configuration ::= SEQUENCE { + m6report-Interval M6report-Interval, + m6delay-threshold M6delay-threshold OPTIONAL, +-- This IE shall be present if the M6 Links to log IE is set to "uplink" or to "both-uplink-and-downlink" -- + m6-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M6Configuration-ExtIEs} } OPTIONAL, + ... +} + +M6Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M6report-Interval ::= ENUMERATED { ms1024, ms2048, ms5120, ms10240, ... } + +M6delay-threshold ::= ENUMERATED { ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms300, ms500, ms750, ... } + +M7Configuration ::= SEQUENCE { + m7period M7period, + m7-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M7Configuration-ExtIEs} } OPTIONAL, + ... +} + +M7Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M7period ::= INTEGER(1..60, ...) + +MDT-Activation ::= ENUMERATED { + immediate-MDT-only, + immediate-MDT-and-Trace, + logged-MDT-only, + ..., + logged-MBSFN-MDT +} + +MDT-Location-Info ::= BIT STRING (SIZE (8)) + +MDT-Configuration ::= SEQUENCE { + mdt-Activation MDT-Activation, + areaScopeOfMDT AreaScopeOfMDT, + mDTMode MDTMode, + iE-Extensions ProtocolExtensionContainer { { MDT-Configuration-ExtIEs} } OPTIONAL, + ... +} +MDT-Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-SignallingBasedMDTPLMNList CRITICALITY ignore EXTENSION MDTPLMNList PRESENCE optional }, + ... +} + +ManagementBasedMDTAllowed ::= ENUMERATED {allowed, ...} + +MBSFN-ResultToLog ::= SEQUENCE (SIZE(1..maxnoofMBSFNAreaMDT)) OF MBSFN-ResultToLogInfo + +MBSFN-ResultToLogInfo ::= SEQUENCE { + mBSFN-AreaId INTEGER (0..255) OPTIONAL, + carrierFreq EARFCN, + iE-Extensions ProtocolExtensionContainer { { MBSFN-ResultToLogInfo-ExtIEs} } OPTIONAL, + ... +} + +MBSFN-ResultToLogInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +MDTPLMNList ::= SEQUENCE (SIZE(1..maxnoofMDTPLMNs)) OF PLMNidentity + +PrivacyIndicator ::= ENUMERATED { + immediate-MDT, + logged-MDT, + ... +} + +MDTMode ::= CHOICE { + immediateMDT ImmediateMDT, + loggedMDT LoggedMDT, + ..., + mDTMode-Extension MDTMode-Extension +} + +MDTMode-Extension ::= ProtocolIE-SingleContainer {{ MDTMode-ExtensionIE }} + +MDTMode-ExtensionIE S1AP-PROTOCOL-IES ::= { + { ID id-LoggedMBSFNMDT CRITICALITY ignore TYPE LoggedMBSFNMDT PRESENCE mandatory} +} + +MeasurementsToActivate ::= BIT STRING (SIZE (8)) + +MeasurementThresholdA2 ::= CHOICE { + threshold-RSRP Threshold-RSRP, + threshold-RSRQ Threshold-RSRQ, + ... +} + +MessageIdentifier ::= BIT STRING (SIZE (16)) + +MobilityInformation ::= BIT STRING (SIZE(32)) + +MMEname ::= PrintableString (SIZE (1..150,...)) + +MMEPagingTarget ::= CHOICE { + global-ENB-ID Global-ENB-ID, + tAI TAI, + ... +} + +MMERelaySupportIndicator ::= ENUMERATED {true, ...} + +MME-Group-ID ::= OCTET STRING (SIZE (2)) + +MME-Code ::= OCTET STRING (SIZE (1)) + +MME-UE-S1AP-ID ::= INTEGER (0..4294967295) +M-TMSI ::= OCTET STRING (SIZE (4)) + +MSClassmark2 ::= OCTET STRING +MSClassmark3 ::= OCTET STRING + +MutingAvailabilityIndication ::= ENUMERATED { + available, + unavailable, + ... +} + + +MutingPatternInformation ::= SEQUENCE { + muting-pattern-period ENUMERATED {ms0, ms1280, ms2560, ms5120, ms10240, ...}, + muting-pattern-offset INTEGER (0..10239, ...) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MutingPatternInformation-ExtIEs} } OPTIONAL, + ... +} + +MutingPatternInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- N + +NAS-PDU ::= OCTET STRING + +NASSecurityParametersfromE-UTRAN ::= OCTET STRING + +NASSecurityParameterstoE-UTRAN ::= OCTET STRING + +NB-IoT-DefaultPagingDRX ::= ENUMERATED { + v128, + v256, + v512, + v1024, + ... + } + +NB-IoT-Paging-eDRXInformation ::= SEQUENCE { + nB-IoT-paging-eDRX-Cycle NB-IoT-Paging-eDRX-Cycle, + nB-IoT-pagingTimeWindow NB-IoT-PagingTimeWindow OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NB-IoT-Paging-eDRXInformation-ExtIEs} } OPTIONAL, + ... +} + +NB-IoT-Paging-eDRXInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NB-IoT-Paging-eDRX-Cycle ::= ENUMERATED{hf2, hf4, hf6, hf8, hf10, hf12, hf14, hf16, hf32, hf64, hf128, hf256, hf512, hf1024, ...} + +NB-IoT-PagingTimeWindow ::= ENUMERATED{s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, ...} + +NB-IoT-UEIdentityIndexValue ::= BIT STRING (SIZE (12)) + +NextPagingAreaScope ::= ENUMERATED { + same, + changed, + ... +} + +NumberofBroadcastRequest ::= INTEGER (0..65535) + +NumberOfBroadcasts ::= INTEGER (0..65535) + +-- O +OldBSS-ToNewBSS-Information ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +OverloadAction ::= ENUMERATED { + reject-non-emergency-mo-dt, + reject-rrc-cr-signalling, + permit-emergency-sessions-and-mobile-terminated-services-only, + ..., + permit-high-priority-sessions-and-mobile-terminated-services-only, + reject-delay-tolerant-access, + permit-high-priority-sessions-and-exception-reporting-and-mobile-terminated-services-only, + not-accept-mo-data-or-delay-tolerant-access-from-CP-CIoT + +} + +OverloadResponse ::= CHOICE { + overloadAction OverloadAction, + ... +} + + +-- P + +PagingAttemptInformation ::= SEQUENCE { + pagingAttemptCount PagingAttemptCount, + intendedNumberOfPagingAttempts IntendedNumberOfPagingAttempts, + nextPagingAreaScope NextPagingAreaScope OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PagingAttemptInformation-ExtIEs} } OPTIONAL, + ... +} + +PagingAttemptInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PagingAttemptCount ::= INTEGER (1..16, ...) + +Paging-eDRXInformation ::= SEQUENCE { + paging-eDRX-Cycle Paging-eDRX-Cycle, + pagingTimeWindow PagingTimeWindow OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Paging-eDRXInformation-ExtIEs} } OPTIONAL, + ... +} + +Paging-eDRXInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Paging-eDRX-Cycle ::= ENUMERATED{hfhalf, hf1, hf2, hf4, hf6, hf8, hf10, hf12, hf14, hf16, hf32, hf64, hf128, hf256, ...} + +PagingTimeWindow ::= ENUMERATED{s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, ...} + +PagingDRX ::= ENUMERATED { + v32, + v64, + v128, + v256, + ... + } + +PagingPriority ::= ENUMERATED { + priolevel1, + priolevel2, + priolevel3, + priolevel4, + priolevel5, + priolevel6, + priolevel7, + priolevel8, + ... +} + +PDCP-SN ::= INTEGER (0..4095) + +PDCP-SNExtended ::= INTEGER (0..32767) + +PDCP-SNlength18 ::= INTEGER (0..262143) + +M1PeriodicReporting ::= SEQUENCE { + reportInterval ReportIntervalMDT, + reportAmount ReportAmountMDT, + iE-Extensions ProtocolExtensionContainer { { M1PeriodicReporting-ExtIEs} } OPTIONAL, + ... +} + +M1PeriodicReporting-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PLMNidentity ::= TBCD-STRING + +Port-Number ::= OCTET STRING (SIZE (2)) + +Pre-emptionCapability ::= ENUMERATED { + shall-not-trigger-pre-emption, + may-trigger-pre-emption +} + +Pre-emptionVulnerability ::= ENUMERATED { + not-pre-emptable, + pre-emptable +} + +PriorityLevel ::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15) + +ProSeAuthorized ::= SEQUENCE { + proSeDirectDiscovery ProSeDirectDiscovery OPTIONAL, + proSeDirectCommunication ProSeDirectCommunication OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {ProSeAuthorized-ExtIEs} } OPTIONAL, + ... +} + +ProSeAuthorized-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-ProSeUEtoNetworkRelaying CRITICALITY ignore EXTENSION ProSeUEtoNetworkRelaying PRESENCE optional}, + ... +} + +ProSeDirectDiscovery ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +ProSeUEtoNetworkRelaying ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +ProSeDirectCommunication ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +PS-ServiceNotAvailable ::= ENUMERATED { + ps-service-not-available, + ... +} + +-- Q + +QCI ::= INTEGER (0..255) + +-- R + +ReceiveStatusofULPDCPSDUs ::= BIT STRING (SIZE(4096)) + +ReceiveStatusOfULPDCPSDUsExtended ::= BIT STRING (SIZE(1..16384)) + +ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 ::= BIT STRING (SIZE(1..131072)) + +RecommendedCellsForPaging ::= SEQUENCE { + recommendedCellList RecommendedCellList, + iE-Extensions ProtocolExtensionContainer { { RecommendedCellsForPaging-ExtIEs} } OPTIONAL, + ... +} + +RecommendedCellsForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RecommendedCellList ::= SEQUENCE (SIZE(1.. maxnoofRecommendedCells)) OF ProtocolIE-SingleContainer { { RecommendedCellItemIEs } } + +RecommendedCellItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-RecommendedCellItem CRITICALITY ignore TYPE RecommendedCellItem PRESENCE mandatory }, + ... +} + +RecommendedCellItem::= SEQUENCE { + eUTRAN-CGI EUTRAN-CGI, + timeStayedInCell INTEGER (0..4095) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { RecommendedCellsForPagingItem-ExtIEs} } OPTIONAL, + ... +} + +RecommendedCellsForPagingItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RecommendedENBsForPaging ::= SEQUENCE { + recommendedENBList RecommendedENBList, + iE-Extensions ProtocolExtensionContainer { { RecommendedENBsForPaging-ExtIEs} } OPTIONAL, + ... +} + +RecommendedENBsForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RecommendedENBList::= SEQUENCE (SIZE(1.. maxnoofRecommendedENBs)) OF ProtocolIE-SingleContainer { { RecommendedENBItemIEs } } + +RecommendedENBItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-RecommendedENBItem CRITICALITY ignore TYPE RecommendedENBItem PRESENCE mandatory }, + ... +} + +RecommendedENBItem ::= SEQUENCE { + mMEPagingTarget MMEPagingTarget, + iE-Extensions ProtocolExtensionContainer { { RecommendedENBItem-ExtIEs} } OPTIONAL, + ... +} + +RecommendedENBItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RelativeMMECapacity ::= INTEGER (0..255) + +RelayNode-Indicator ::= ENUMERATED { + true, + ... +} + +RAC ::= OCTET STRING (SIZE (1)) + +RAT-Type ::= ENUMERATED { + nbiot, + ... +} + +ReportAmountMDT ::= ENUMERATED{r1, r2, r4, r8, r16, r32, r64, rinfinity} + +ReportIntervalMDT ::= ENUMERATED {ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, min1, min6, min12, min30, min60} + +M1ReportingTrigger ::= ENUMERATED{ + periodic, + a2eventtriggered, + ..., + a2eventtriggered-periodic +} + +RequestType ::= SEQUENCE { + eventType EventType, + reportArea ReportArea, + iE-Extensions ProtocolExtensionContainer { { RequestType-ExtIEs} } OPTIONAL, + ... +} + + +RequestType-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RIMTransfer ::= SEQUENCE { + rIMInformation RIMInformation, + rIMRoutingAddress RIMRoutingAddress OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { RIMTransfer-ExtIEs} } OPTIONAL, + ... +} + +RIMTransfer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RIMInformation ::= OCTET STRING + +RIMRoutingAddress ::= CHOICE { + gERAN-Cell-ID GERAN-Cell-ID, + ..., + targetRNC-ID TargetRNC-ID, + eHRPD-Sector-ID OCTET STRING (SIZE(16)) +} + +ReportArea ::= ENUMERATED { + ecgi, + ... +} + +RepetitionPeriod ::= INTEGER (0..4095) + +RLFReportInformation ::= SEQUENCE { + uE-RLF-Report-Container UE-RLF-Report-Container, + uE-RLF-Report-Container-for-extended-bands UE-RLF-Report-Container-for-extended-bands OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{ RLFReportInformation-ExtIEs}} OPTIONAL, + ... +} + +RLFReportInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RNC-ID ::= INTEGER (0..4095) + +RRC-Container ::= OCTET STRING + +RRC-Establishment-Cause ::= ENUMERATED { + emergency, + highPriorityAccess, + mt-Access, + mo-Signalling, + mo-Data, + ..., + delay-TolerantAccess, + mo-VoiceCall, + mo-ExceptionData +} + +ECGIListForRestart ::= SEQUENCE (SIZE(1..maxnoofCellsforRestart)) OF EUTRAN-CGI + +Routing-ID ::= INTEGER (0..255) + +-- S + + +SecurityKey ::= BIT STRING (SIZE(256)) + + + +SecurityContext ::= SEQUENCE { + nextHopChainingCount INTEGER (0..7), + nextHopParameter SecurityKey, + iE-Extensions ProtocolExtensionContainer { { SecurityContext-ExtIEs} } OPTIONAL, + ... +} + + +SecurityContext-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +SerialNumber ::= BIT STRING (SIZE (16)) + +SONInformation ::= CHOICE{ + sONInformationRequest SONInformationRequest, + sONInformationReply SONInformationReply, + ..., + sONInformation-Extension SONInformation-Extension +} + +SONInformation-Extension ::= ProtocolIE-SingleContainer {{ SONInformation-ExtensionIE }} + +SONInformation-ExtensionIE S1AP-PROTOCOL-IES ::= { + { ID id-SON-Information-Report CRITICALITY ignore TYPE SONInformationReport PRESENCE mandatory} +} + +SONInformationRequest ::= ENUMERATED { + x2TNL-Configuration-Info, + ..., + time-Synchronisation-Info, + activate-Muting, + deactivate-Muting} + +SONInformationReply ::= SEQUENCE { + x2TNLConfigurationInfo X2TNLConfigurationInfo OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{SONInformationReply-ExtIEs}} OPTIONAL, + ... +} + +SONInformationReply-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Release 9 to transfer Time synchronisation information -- + {ID id-Time-Synchronisation-Info CRITICALITY ignore EXTENSION TimeSynchronisationInfo PRESENCE optional}, + ..., + {ID id-Muting-Pattern-Information CRITICALITY ignore EXTENSION MutingPatternInformation PRESENCE optional} +} + +SONInformationReport ::= CHOICE{ + rLFReportInformation RLFReportInformation, + ... +} + +SONConfigurationTransfer ::= SEQUENCE { + targeteNB-ID TargeteNB-ID, + sourceeNB-ID SourceeNB-ID, + sONInformation SONInformation, + iE-Extensions ProtocolExtensionContainer { { SONConfigurationTransfer-ExtIEs} } OPTIONAL, +... +} + +SONConfigurationTransfer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Release 10 to transfer the IP addresses of the eNB initiating the ANR action -- + {ID id-x2TNLConfigurationInfo CRITICALITY ignore EXTENSION X2TNLConfigurationInfo PRESENCE conditional + -- This IE shall be present if the SON Information IE contains the SON Information Request IE and the SON Information Request IE is set to "X2TNL Configuration Info" --}| +-- Extension for Release 12 to transfer information concerning the source cell of synchronisation and the aggressor cell -- + {ID id-Synchronisation-Information CRITICALITY ignore EXTENSION SynchronisationInformation PRESENCE conditional + -- This IE shall be present if the SON Information IE contains the SON Information Request IE set to " Activate Muting " --}, + ... +} + + +SynchronisationInformation ::= SEQUENCE { + sourceStratumLevel StratumLevel OPTIONAL, + listeningSubframePattern ListeningSubframePattern OPTIONAL, + aggressoreCGI-List ECGI-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {SynchronisationInformation-ExtIEs} } OPTIONAL, + ... +} + +SynchronisationInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Source-ToTarget-TransparentContainer ::= OCTET STRING +-- This IE includes a transparent container from the source RAN node to the target RAN node. +-- The octets of the OCTET STRING are encoded according to the specifications of the target system. + +SourceBSS-ToTargetBSS-TransparentContainer ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +SourceeNB-ID ::= SEQUENCE { + global-ENB-ID Global-ENB-ID, + selected-TAI TAI, + iE-Extensions ProtocolExtensionContainer { {SourceeNB-ID-ExtIEs} } OPTIONAL +} + +SourceeNB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +SRVCCOperationNotPossible ::= ENUMERATED { + notPossible, + ... +} + +SRVCCOperationPossible ::= ENUMERATED { + possible, + ... +} + +SRVCCHOIndication ::= ENUMERATED { + pSandCS, + cSonly, + ... +} + +SourceeNB-ToTargeteNB-TransparentContainer ::= SEQUENCE { + rRC-Container RRC-Container, + e-RABInformationList E-RABInformationList OPTIONAL, + targetCell-ID EUTRAN-CGI, + subscriberProfileIDforRFP SubscriberProfileIDforRFP OPTIONAL, + uE-HistoryInformation UE-HistoryInformation, + iE-Extensions ProtocolExtensionContainer { {SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + {ID id-MobilityInformation CRITICALITY ignore EXTENSION MobilityInformation PRESENCE optional}| + {ID id-uE-HistoryInformationFromTheUE CRITICALITY ignore EXTENSION UE-HistoryInformationFromTheUE PRESENCE optional}, + ... +} + + +SourceRNC-ToTargetRNC-TransparentContainer ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + + +ServedGUMMEIs ::= SEQUENCE (SIZE (1.. maxnoofRATs)) OF ServedGUMMEIsItem + +ServedGUMMEIsItem ::= SEQUENCE { + servedPLMNs ServedPLMNs, + servedGroupIDs ServedGroupIDs, + servedMMECs ServedMMECs, + iE-Extensions ProtocolExtensionContainer { {ServedGUMMEIsItem-ExtIEs} } OPTIONAL, + ... +} + +ServedGUMMEIsItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ServedGroupIDs ::= SEQUENCE (SIZE(1.. maxnoofGroupIDs)) OF MME-Group-ID +ServedMMECs ::= SEQUENCE (SIZE(1.. maxnoofMMECs)) OF MME-Code + +ServedPLMNs ::= SEQUENCE (SIZE(1.. maxnoofPLMNsPerMME)) OF PLMNidentity + +SubscriberProfileIDforRFP ::= INTEGER (1..256) + +SupportedTAs ::= SEQUENCE (SIZE(1.. maxnoofTACs)) OF SupportedTAs-Item + +SupportedTAs-Item ::= SEQUENCE { + tAC TAC, + broadcastPLMNs BPLMNs, + iE-Extensions ProtocolExtensionContainer { {SupportedTAs-Item-ExtIEs} } OPTIONAL, + ... +} + +SupportedTAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + -- Extension for Release 13 to transfer RAT-Type per TAC -- + {ID id-RAT-Type CRITICALITY reject EXTENSION RAT-Type PRESENCE optional}, + ... +} + +StratumLevel ::= INTEGER (0..3, ...) + +SynchronisationStatus ::= ENUMERATED { synchronous, asynchronous, ... } + +TimeSynchronisationInfo ::= SEQUENCE { + stratumLevel StratumLevel, + synchronisationStatus SynchronisationStatus, + iE-Extensions ProtocolExtensionContainer { { TimeSynchronisationInfo-ExtIEs} } OPTIONAL, + ... +} + +TimeSynchronisationInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + -- Extension for Release 12 to transfer Muting Availability Indication -- + {ID id-Muting-Availability-Indication CRITICALITY ignore EXTENSION MutingAvailabilityIndication PRESENCE optional}, + ... +} + +S-TMSI ::= SEQUENCE { + mMEC MME-Code, + m-TMSI M-TMSI, + iE-Extensions ProtocolExtensionContainer { {S-TMSI-ExtIEs} } OPTIONAL, + ... +} + +S-TMSI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- T + +TAC ::= OCTET STRING (SIZE (2)) + +TAIBasedMDT ::= SEQUENCE { + tAIListforMDT TAIListforMDT, + iE-Extensions ProtocolExtensionContainer { {TAIBasedMDT-ExtIEs} } OPTIONAL, + ... +} + +TAIBasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAI + +TAIListforWarning ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI + +TAI ::= SEQUENCE { + pLMNidentity PLMNidentity, + tAC TAC, + iE-Extensions ProtocolExtensionContainer { {TAI-ExtIEs} } OPTIONAL, + ... +} + +TAI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAI-Broadcast ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI-Broadcast-Item + +TAI-Broadcast-Item ::= SEQUENCE { + tAI TAI, + completedCellinTAI CompletedCellinTAI, + iE-Extensions ProtocolExtensionContainer { {TAI-Broadcast-Item-ExtIEs} } OPTIONAL, + ... +} + +TAI-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAI-Cancelled ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI-Cancelled-Item + +TAI-Cancelled-Item ::= SEQUENCE { + tAI TAI, + cancelledCellinTAI CancelledCellinTAI, + iE-Extensions ProtocolExtensionContainer { {TAI-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + +TAI-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TABasedMDT ::= SEQUENCE { + tAListforMDT TAListforMDT, + iE-Extensions ProtocolExtensionContainer { {TABasedMDT-ExtIEs} } OPTIONAL, + ... +} + +TABasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAC + +CompletedCellinTAI ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CompletedCellinTAI-Item + +CompletedCellinTAI-Item ::= SEQUENCE{ + eCGI EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {CompletedCellinTAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CompletedCellinTAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TBCD-STRING ::= OCTET STRING (SIZE (3)) + +TargetID ::= CHOICE { + targeteNB-ID TargeteNB-ID, + targetRNC-ID TargetRNC-ID, + cGI CGI, + ... +} + +TargeteNB-ID ::= SEQUENCE { + global-ENB-ID Global-ENB-ID, + selected-TAI TAI, + iE-Extensions ProtocolExtensionContainer { {TargeteNB-ID-ExtIEs} } OPTIONAL, + ... +} + +TargeteNB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TargetRNC-ID ::= SEQUENCE { + lAI LAI, + rAC RAC OPTIONAL, + rNC-ID RNC-ID, + extendedRNC-ID ExtendedRNC-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {TargetRNC-ID-ExtIEs} } OPTIONAL, + ... + } + + +TargetRNC-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +TargeteNB-ToSourceeNB-TransparentContainer ::= SEQUENCE { + rRC-Container RRC-Container, + iE-Extensions ProtocolExtensionContainer { {TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Target-ToSource-TransparentContainer ::= OCTET STRING +-- This IE includes a transparent container from the target RAN node to the source RAN node. +-- The octets of the OCTET STRING are coded according to the specifications of the target system. + +TargetRNC-ToSourceRNC-TransparentContainer ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +TargetBSS-ToSourceBSS-TransparentContainer ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +M1ThresholdEventA2 ::= SEQUENCE { + measurementThreshold MeasurementThresholdA2, + iE-Extensions ProtocolExtensionContainer { { M1ThresholdEventA2-ExtIEs} } OPTIONAL, + ... +} + +M1ThresholdEventA2-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Threshold-RSRP ::= INTEGER(0..97) + +Threshold-RSRQ ::= INTEGER(0..34) + +TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...} + +Time-UE-StayedInCell ::= INTEGER (0..4095) + +Time-UE-StayedInCell-EnhancedGranularity ::= INTEGER (0..40950) + +TransportInformation ::= SEQUENCE { + transportLayerAddress TransportLayerAddress, + uL-GTP-TEID GTP-TEID, + ... +} + +TransportLayerAddress ::= BIT STRING (SIZE(1..160, ...)) + +TraceActivation ::= SEQUENCE { + e-UTRAN-Trace-ID E-UTRAN-Trace-ID, + interfacesToTrace InterfacesToTrace, +traceDepth TraceDepth, +traceCollectionEntityIPAddress TransportLayerAddress, + iE-Extensions ProtocolExtensionContainer { { TraceActivation-ExtIEs} } OPTIONAL, + ... +} + +TraceActivation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Rel-10 to support MDT -- + { ID id-MDTConfiguration CRITICALITY ignore EXTENSION MDT-Configuration PRESENCE optional }, + ... +} + +TraceDepth ::= ENUMERATED { + minimum, + medium, + maximum, + minimumWithoutVendorSpecificExtension, + mediumWithoutVendorSpecificExtension, + maximumWithoutVendorSpecificExtension, + ... +} + +E-UTRAN-Trace-ID ::= OCTET STRING (SIZE (8)) + +TrafficLoadReductionIndication ::= INTEGER (1..99) + +TunnelInformation ::= SEQUENCE { + transportLayerAddress TransportLayerAddress, + uDP-Port-Number Port-Number OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {Tunnel-Information-ExtIEs} } OPTIONAL, + ... +} + +Tunnel-Information-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} + +TAIListForRestart ::= SEQUENCE (SIZE(1..maxnoofRestartTAIs)) OF TAI + +-- U + +UEAggregateMaximumBitrate ::= SEQUENCE { + uEaggregateMaximumBitRateDL BitRate, + uEaggregateMaximumBitRateUL BitRate, + iE-Extensions ProtocolExtensionContainer { {UEAggregate-MaximumBitrates-ExtIEs} } OPTIONAL, + ... +} + +UEAggregate-MaximumBitrates-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UE-RetentionInformation ::= ENUMERATED { + ues-retained, + ...} + +UE-S1AP-IDs ::= CHOICE{ + uE-S1AP-ID-pair UE-S1AP-ID-pair, + mME-UE-S1AP-ID MME-UE-S1AP-ID, + ... +} + +UE-S1AP-ID-pair ::= SEQUENCE{ + mME-UE-S1AP-ID MME-UE-S1AP-ID, + eNB-UE-S1AP-ID ENB-UE-S1AP-ID, + iE-Extensions ProtocolExtensionContainer { {UE-S1AP-ID-pair-ExtIEs} } OPTIONAL, + ... +} +UE-S1AP-ID-pair-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +UE-associatedLogicalS1-ConnectionItem ::= SEQUENCE { + mME-UE-S1AP-ID MME-UE-S1AP-ID OPTIONAL, + eNB-UE-S1AP-ID ENB-UE-S1AP-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { UE-associatedLogicalS1-ConnectionItemExtIEs} } OPTIONAL, + ... +} + + +UE-associatedLogicalS1-ConnectionItemExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UEIdentityIndexValue ::= BIT STRING (SIZE (10)) + +UE-HistoryInformation ::= SEQUENCE (SIZE(1..maxnoofCells)) OF LastVisitedCell-Item + +UE-HistoryInformationFromTheUE ::= OCTET STRING +-- This IE is a transparent container and shall be encoded as the VisitedCellInfoList field contained in the UEInformationResponse message as defined in TS 36.331 [16] + +UEPagingID ::= CHOICE { + s-TMSI S-TMSI, + iMSI IMSI, + ... + } + +UERadioCapability ::= OCTET STRING + +UERadioCapabilityForPaging ::= OCTET STRING + +UE-RLF-Report-Container ::= OCTET STRING +-- This IE is a transparent container and shall be encoded as the rlf-Report-r9 field contained in the UEInformationResponse message as defined in TS 36.331 [16] + +UE-RLF-Report-Container-for-extended-bands ::= OCTET STRING +-- This IE is a transparent container and shall be encoded as the rlf-Report-v9e0 contained in the UEInformationResponse message as defined in TS 36.331 [16] + +UESecurityCapabilities ::= SEQUENCE { + encryptionAlgorithms EncryptionAlgorithms, + integrityProtectionAlgorithms IntegrityProtectionAlgorithms, + iE-Extensions ProtocolExtensionContainer { { UESecurityCapabilities-ExtIEs} } OPTIONAL, +... +} + +UESecurityCapabilities-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UESidelinkAggregateMaximumBitrate ::= SEQUENCE { + uESidelinkAggregateMaximumBitRate BitRate, + iE-Extensions ProtocolExtensionContainer { {UE-Sidelink-Aggregate-MaximumBitrates-ExtIEs} } OPTIONAL, + ... +} + +UE-Sidelink-Aggregate-MaximumBitrates-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UE-Usage-Type ::= INTEGER (0..255) + +UL-CP-SecurityInformation ::= SEQUENCE { + ul-NAS-MAC UL-NAS-MAC, + ul-NAS-Count UL-NAS-Count, + iE-Extensions ProtocolExtensionContainer { { UL-CP-SecurityInformation-ExtIEs} } OPTIONAL, + ... +} + +UL-CP-SecurityInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UL-NAS-MAC ::= BIT STRING (SIZE (16)) + +UL-NAS-Count ::= BIT STRING (SIZE (5)) + + +UserLocationInformation ::= SEQUENCE { + eutran-cgi EUTRAN-CGI, + tai TAI, + iE-Extensions ProtocolExtensionContainer { { UserLocationInformation-ExtIEs} } OPTIONAL, + ... +} + +UserLocationInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UEUserPlaneCIoTSupportIndicator ::= ENUMERATED { + supported, + ... +} + +-- V + +VoiceSupportMatchIndicator ::= ENUMERATED { + supported, + not-supported, + ... +} + +V2XServicesAuthorized ::= SEQUENCE { + vehicleUE VehicleUE OPTIONAL, + pedestrianUE PedestrianUE OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {V2XServicesAuthorized-ExtIEs} } OPTIONAL, + ... +} + +V2XServicesAuthorized-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +VehicleUE ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +PedestrianUE ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +-- W + +WarningAreaList ::= CHOICE { + cellIDList ECGIList, + trackingAreaListforWarning TAIListforWarning, + emergencyAreaIDList EmergencyAreaIDList, + ... +} + + +WarningType ::= OCTET STRING (SIZE (2)) + +WarningSecurityInfo ::= OCTET STRING (SIZE (50)) + + +WarningMessageContents ::= OCTET STRING (SIZE(1..9600)) + + +-- X + + +X2TNLConfigurationInfo ::= SEQUENCE { + eNBX2TransportLayerAddresses ENBX2TLAs, + iE-Extensions ProtocolExtensionContainer { { X2TNLConfigurationInfo-ExtIEs} } OPTIONAL, + ... +} + +X2TNLConfigurationInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Release 10 to transfer the IPsec and U-plane addresses during ANR action -- + {ID id-eNBX2ExtendedTransportLayerAddresses CRITICALITY ignore EXTENSION ENBX2ExtTLAs PRESENCE optional}| +-- Extension for Release 12 to transfer the IP addresses of the X2 GW -- + {ID id-eNBIndirectX2TransportLayerAddresses CRITICALITY ignore EXTENSION ENBIndirectX2TransportLayerAddresses PRESENCE optional}, + ... +} + +ENBX2ExtTLAs ::= SEQUENCE (SIZE(1.. maxnoofeNBX2ExtTLAs)) OF ENBX2ExtTLA + +ENBX2ExtTLA ::= SEQUENCE { + iPsecTLA TransportLayerAddress OPTIONAL, + gTPTLAa ENBX2GTPTLAs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ENBX2ExtTLA-ExtIEs} } OPTIONAL, + ... +} + +ENBX2ExtTLA-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ENBX2GTPTLAs ::= SEQUENCE (SIZE(1.. maxnoofeNBX2GTPTLAs)) OF TransportLayerAddress + +ENBIndirectX2TransportLayerAddresses ::= SEQUENCE (SIZE(1..maxnoofeNBX2TLAs)) OF TransportLayerAddress + +-- Y +-- Z + +END + +-- ************************************************************** +-- +-- Common definitions +-- +-- ************************************************************** + +S1AP-CommonDataTypes { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-CommonDataTypes (3) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +Criticality ::= ENUMERATED { reject, ignore, notify } + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +PrivateIE-ID ::= CHOICE { + local INTEGER (0..65535), + global OBJECT IDENTIFIER +} + +ProcedureCode ::= INTEGER (0..255) + +ProtocolExtensionID ::= INTEGER (0..65535) + +ProtocolIE-ID ::= INTEGER (0..65535) + +TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome } + +END + +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + +S1AP-Constants { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Constants (4) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + ProcedureCode, + ProtocolIE-ID + +FROM S1AP-CommonDataTypes; + + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** + +id-HandoverPreparation ProcedureCode ::= 0 +id-HandoverResourceAllocation ProcedureCode ::= 1 +id-HandoverNotification ProcedureCode ::= 2 +id-PathSwitchRequest ProcedureCode ::= 3 +id-HandoverCancel ProcedureCode ::= 4 +id-E-RABSetup ProcedureCode ::= 5 +id-E-RABModify ProcedureCode ::= 6 +id-E-RABRelease ProcedureCode ::= 7 +id-E-RABReleaseIndication ProcedureCode ::= 8 +id-InitialContextSetup ProcedureCode ::= 9 +id-Paging ProcedureCode ::= 10 +id-downlinkNASTransport ProcedureCode ::= 11 +id-initialUEMessage ProcedureCode ::= 12 +id-uplinkNASTransport ProcedureCode ::= 13 +id-Reset ProcedureCode ::= 14 +id-ErrorIndication ProcedureCode ::= 15 +id-NASNonDeliveryIndication ProcedureCode ::= 16 +id-S1Setup ProcedureCode ::= 17 +id-UEContextReleaseRequest ProcedureCode ::= 18 +id-DownlinkS1cdma2000tunnelling ProcedureCode ::= 19 +id-UplinkS1cdma2000tunnelling ProcedureCode ::= 20 +id-UEContextModification ProcedureCode ::= 21 +id-UECapabilityInfoIndication ProcedureCode ::= 22 +id-UEContextRelease ProcedureCode ::= 23 +id-eNBStatusTransfer ProcedureCode ::= 24 +id-MMEStatusTransfer ProcedureCode ::= 25 +id-DeactivateTrace ProcedureCode ::= 26 +id-TraceStart ProcedureCode ::= 27 +id-TraceFailureIndication ProcedureCode ::= 28 +id-ENBConfigurationUpdate ProcedureCode ::= 29 +id-MMEConfigurationUpdate ProcedureCode ::= 30 +id-LocationReportingControl ProcedureCode ::= 31 +id-LocationReportingFailureIndication ProcedureCode ::= 32 +id-LocationReport ProcedureCode ::= 33 +id-OverloadStart ProcedureCode ::= 34 +id-OverloadStop ProcedureCode ::= 35 +id-WriteReplaceWarning ProcedureCode ::= 36 +id-eNBDirectInformationTransfer ProcedureCode ::= 37 +id-MMEDirectInformationTransfer ProcedureCode ::= 38 +id-PrivateMessage ProcedureCode ::= 39 +id-eNBConfigurationTransfer ProcedureCode ::= 40 +id-MMEConfigurationTransfer ProcedureCode ::= 41 +id-CellTrafficTrace ProcedureCode ::= 42 +id-Kill ProcedureCode ::= 43 +id-downlinkUEAssociatedLPPaTransport ProcedureCode ::= 44 +id-uplinkUEAssociatedLPPaTransport ProcedureCode ::= 45 +id-downlinkNonUEAssociatedLPPaTransport ProcedureCode ::= 46 +id-uplinkNonUEAssociatedLPPaTransport ProcedureCode ::= 47 +id-UERadioCapabilityMatch ProcedureCode ::= 48 +id-PWSRestartIndication ProcedureCode ::= 49 +id-E-RABModificationIndication ProcedureCode ::= 50 +id-PWSFailureIndication ProcedureCode ::= 51 +id-RerouteNASRequest ProcedureCode ::= 52 +id-UEContextModificationIndication ProcedureCode ::= 53 +id-ConnectionEstablishmentIndication ProcedureCode ::= 54 +id-UEContextSuspend ProcedureCode ::= 55 +id-UEContextResume ProcedureCode ::= 56 +id-NASDeliveryIndication ProcedureCode ::= 57 +id-RetrieveUEInformation ProcedureCode ::= 58 +id-UEInformationTransfer ProcedureCode ::= 59 +id-eNBCPRelocationIndication ProcedureCode ::= 60 +id-MMECPRelocationIndication ProcedureCode ::= 61 + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +maxPrivateIEs INTEGER ::= 65535 +maxProtocolExtensions INTEGER ::= 65535 +maxProtocolIEs INTEGER ::= 65535 +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + +maxnoofCSGs INTEGER ::= 256 +maxnoofE-RABs INTEGER ::= 256 +maxnoofTAIs INTEGER ::= 256 +maxnoofTACs INTEGER ::= 256 +maxnoofErrors INTEGER ::= 256 +maxnoofBPLMNs INTEGER ::= 6 +maxnoofPLMNsPerMME INTEGER ::= 32 +maxnoofEPLMNs INTEGER ::= 15 +maxnoofEPLMNsPlusOne INTEGER ::= 16 +maxnoofForbLACs INTEGER ::= 4096 +maxnoofForbTACs INTEGER ::= 4096 +maxnoofIndividualS1ConnectionsToReset INTEGER ::= 256 +maxnoofCells INTEGER ::= 16 +maxnoofCellsineNB INTEGER ::= 256 +maxnoofTAIforWarning INTEGER ::= 65535 +maxnoofCellID INTEGER ::= 65535 +maxnoofDCNs INTEGER ::= 32 +maxnoofEmergencyAreaID INTEGER ::= 65535 +maxnoofCellinTAI INTEGER ::= 65535 +maxnoofCellinEAI INTEGER ::= 65535 +maxnoofeNBX2TLAs INTEGER ::= 2 +maxnoofeNBX2ExtTLAs INTEGER ::= 16 +maxnoofeNBX2GTPTLAs INTEGER ::= 16 +maxnoofRATs INTEGER ::= 8 +maxnoofGroupIDs INTEGER ::= 65535 +maxnoofMMECs INTEGER ::= 256 +maxnoofCellIDforMDT INTEGER ::= 32 +maxnoofTAforMDT INTEGER ::= 8 +maxnoofMDTPLMNs INTEGER ::= 16 +maxnoofCellsforRestart INTEGER ::= 256 +maxnoofRestartTAIs INTEGER ::= 2048 +maxnoofRestartEmergencyAreaIDs INTEGER ::= 256 +maxEARFCN INTEGER ::= 262143 +maxnoofMBSFNAreaMDT INTEGER ::= 8 +maxnoofRecommendedCells INTEGER ::= 16 +maxnoofRecommendedENBs INTEGER ::= 16 + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** + +id-MME-UE-S1AP-ID ProtocolIE-ID ::= 0 +id-HandoverType ProtocolIE-ID ::= 1 +id-Cause ProtocolIE-ID ::= 2 +id-SourceID ProtocolIE-ID ::= 3 +id-TargetID ProtocolIE-ID ::= 4 +id-eNB-UE-S1AP-ID ProtocolIE-ID ::= 8 +id-E-RABSubjecttoDataForwardingList ProtocolIE-ID ::= 12 +id-E-RABtoReleaseListHOCmd ProtocolIE-ID ::= 13 +id-E-RABDataForwardingItem ProtocolIE-ID ::= 14 +id-E-RABReleaseItemBearerRelComp ProtocolIE-ID ::= 15 +id-E-RABToBeSetupListBearerSUReq ProtocolIE-ID ::= 16 +id-E-RABToBeSetupItemBearerSUReq ProtocolIE-ID ::= 17 +id-E-RABAdmittedList ProtocolIE-ID ::= 18 +id-E-RABFailedToSetupListHOReqAck ProtocolIE-ID ::= 19 +id-E-RABAdmittedItem ProtocolIE-ID ::= 20 +id-E-RABFailedtoSetupItemHOReqAck ProtocolIE-ID ::= 21 +id-E-RABToBeSwitchedDLList ProtocolIE-ID ::= 22 +id-E-RABToBeSwitchedDLItem ProtocolIE-ID ::= 23 +id-E-RABToBeSetupListCtxtSUReq ProtocolIE-ID ::= 24 +id-TraceActivation ProtocolIE-ID ::= 25 +id-NAS-PDU ProtocolIE-ID ::= 26 +id-E-RABToBeSetupItemHOReq ProtocolIE-ID ::= 27 +id-E-RABSetupListBearerSURes ProtocolIE-ID ::= 28 +id-E-RABFailedToSetupListBearerSURes ProtocolIE-ID ::= 29 +id-E-RABToBeModifiedListBearerModReq ProtocolIE-ID ::= 30 +id-E-RABModifyListBearerModRes ProtocolIE-ID ::= 31 +id-E-RABFailedToModifyList ProtocolIE-ID ::= 32 +id-E-RABToBeReleasedList ProtocolIE-ID ::= 33 +id-E-RABFailedToReleaseList ProtocolIE-ID ::= 34 +id-E-RABItem ProtocolIE-ID ::= 35 +id-E-RABToBeModifiedItemBearerModReq ProtocolIE-ID ::= 36 +id-E-RABModifyItemBearerModRes ProtocolIE-ID ::= 37 +id-E-RABReleaseItem ProtocolIE-ID ::= 38 +id-E-RABSetupItemBearerSURes ProtocolIE-ID ::= 39 +id-SecurityContext ProtocolIE-ID ::= 40 +id-HandoverRestrictionList ProtocolIE-ID ::= 41 +id-UEPagingID ProtocolIE-ID ::= 43 +id-pagingDRX ProtocolIE-ID ::= 44 +id-TAIList ProtocolIE-ID ::= 46 +id-TAIItem ProtocolIE-ID ::= 47 +id-E-RABFailedToSetupListCtxtSURes ProtocolIE-ID ::= 48 +id-E-RABReleaseItemHOCmd ProtocolIE-ID ::= 49 +id-E-RABSetupItemCtxtSURes ProtocolIE-ID ::= 50 +id-E-RABSetupListCtxtSURes ProtocolIE-ID ::= 51 +id-E-RABToBeSetupItemCtxtSUReq ProtocolIE-ID ::= 52 +id-E-RABToBeSetupListHOReq ProtocolIE-ID ::= 53 +id-GERANtoLTEHOInformationRes ProtocolIE-ID ::= 55 +id-UTRANtoLTEHOInformationRes ProtocolIE-ID ::= 57 +id-CriticalityDiagnostics ProtocolIE-ID ::= 58 +id-Global-ENB-ID ProtocolIE-ID ::= 59 +id-eNBname ProtocolIE-ID ::= 60 +id-MMEname ProtocolIE-ID ::= 61 +id-ServedPLMNs ProtocolIE-ID ::= 63 +id-SupportedTAs ProtocolIE-ID ::= 64 +id-TimeToWait ProtocolIE-ID ::= 65 +id-uEaggregateMaximumBitrate ProtocolIE-ID ::= 66 +id-TAI ProtocolIE-ID ::= 67 +id-E-RABReleaseListBearerRelComp ProtocolIE-ID ::= 69 +id-cdma2000PDU ProtocolIE-ID ::= 70 +id-cdma2000RATType ProtocolIE-ID ::= 71 +id-cdma2000SectorID ProtocolIE-ID ::= 72 +id-SecurityKey ProtocolIE-ID ::= 73 +id-UERadioCapability ProtocolIE-ID ::= 74 +id-GUMMEI-ID ProtocolIE-ID ::= 75 +id-E-RABInformationListItem ProtocolIE-ID ::= 78 +id-Direct-Forwarding-Path-Availability ProtocolIE-ID ::= 79 +id-UEIdentityIndexValue ProtocolIE-ID ::= 80 +id-cdma2000HOStatus ProtocolIE-ID ::= 83 +id-cdma2000HORequiredIndication ProtocolIE-ID ::= 84 +id-E-UTRAN-Trace-ID ProtocolIE-ID ::= 86 +id-RelativeMMECapacity ProtocolIE-ID ::= 87 +id-SourceMME-UE-S1AP-ID ProtocolIE-ID ::= 88 +id-Bearers-SubjectToStatusTransfer-Item ProtocolIE-ID ::= 89 +id-eNB-StatusTransfer-TransparentContainer ProtocolIE-ID ::= 90 +id-UE-associatedLogicalS1-ConnectionItem ProtocolIE-ID ::= 91 +id-ResetType ProtocolIE-ID ::= 92 +id-UE-associatedLogicalS1-ConnectionListResAck ProtocolIE-ID ::= 93 +id-E-RABToBeSwitchedULItem ProtocolIE-ID ::= 94 +id-E-RABToBeSwitchedULList ProtocolIE-ID ::= 95 +id-S-TMSI ProtocolIE-ID ::= 96 +id-cdma2000OneXRAND ProtocolIE-ID ::= 97 +id-RequestType ProtocolIE-ID ::= 98 +id-UE-S1AP-IDs ProtocolIE-ID ::= 99 +id-EUTRAN-CGI ProtocolIE-ID ::= 100 +id-OverloadResponse ProtocolIE-ID ::= 101 +id-cdma2000OneXSRVCCInfo ProtocolIE-ID ::= 102 +id-E-RABFailedToBeReleasedList ProtocolIE-ID ::= 103 +id-Source-ToTarget-TransparentContainer ProtocolIE-ID ::= 104 +id-ServedGUMMEIs ProtocolIE-ID ::= 105 +id-SubscriberProfileIDforRFP ProtocolIE-ID ::= 106 +id-UESecurityCapabilities ProtocolIE-ID ::= 107 +id-CSFallbackIndicator ProtocolIE-ID ::= 108 +id-CNDomain ProtocolIE-ID ::= 109 +id-E-RABReleasedList ProtocolIE-ID ::= 110 +id-MessageIdentifier ProtocolIE-ID ::= 111 +id-SerialNumber ProtocolIE-ID ::= 112 +id-WarningAreaList ProtocolIE-ID ::= 113 +id-RepetitionPeriod ProtocolIE-ID ::= 114 +id-NumberofBroadcastRequest ProtocolIE-ID ::= 115 +id-WarningType ProtocolIE-ID ::= 116 +id-WarningSecurityInfo ProtocolIE-ID ::= 117 +id-DataCodingScheme ProtocolIE-ID ::= 118 +id-WarningMessageContents ProtocolIE-ID ::= 119 +id-BroadcastCompletedAreaList ProtocolIE-ID ::= 120 +id-Inter-SystemInformationTransferTypeEDT ProtocolIE-ID ::= 121 +id-Inter-SystemInformationTransferTypeMDT ProtocolIE-ID ::= 122 +id-Target-ToSource-TransparentContainer ProtocolIE-ID ::= 123 +id-SRVCCOperationPossible ProtocolIE-ID ::= 124 +id-SRVCCHOIndication ProtocolIE-ID ::= 125 +id-NAS-DownlinkCount ProtocolIE-ID ::= 126 +id-CSG-Id ProtocolIE-ID ::= 127 +id-CSG-IdList ProtocolIE-ID ::= 128 +id-SONConfigurationTransferECT ProtocolIE-ID ::= 129 +id-SONConfigurationTransferMCT ProtocolIE-ID ::= 130 +id-TraceCollectionEntityIPAddress ProtocolIE-ID ::= 131 +id-MSClassmark2 ProtocolIE-ID ::= 132 +id-MSClassmark3 ProtocolIE-ID ::= 133 +id-RRC-Establishment-Cause ProtocolIE-ID ::= 134 +id-NASSecurityParametersfromE-UTRAN ProtocolIE-ID ::= 135 +id-NASSecurityParameterstoE-UTRAN ProtocolIE-ID ::= 136 +id-DefaultPagingDRX ProtocolIE-ID ::= 137 +id-Source-ToTarget-TransparentContainer-Secondary ProtocolIE-ID ::= 138 +id-Target-ToSource-TransparentContainer-Secondary ProtocolIE-ID ::= 139 +id-EUTRANRoundTripDelayEstimationInfo ProtocolIE-ID ::= 140 +id-BroadcastCancelledAreaList ProtocolIE-ID ::= 141 +id-ConcurrentWarningMessageIndicator ProtocolIE-ID ::= 142 +id-Data-Forwarding-Not-Possible ProtocolIE-ID ::= 143 +id-ExtendedRepetitionPeriod ProtocolIE-ID ::= 144 +id-CellAccessMode ProtocolIE-ID ::= 145 +id-CSGMembershipStatus ProtocolIE-ID ::= 146 +id-LPPa-PDU ProtocolIE-ID ::= 147 +id-Routing-ID ProtocolIE-ID ::= 148 +id-Time-Synchronisation-Info ProtocolIE-ID ::= 149 +id-PS-ServiceNotAvailable ProtocolIE-ID ::= 150 +id-PagingPriority ProtocolIE-ID ::= 151 +id-x2TNLConfigurationInfo ProtocolIE-ID ::= 152 +id-eNBX2ExtendedTransportLayerAddresses ProtocolIE-ID ::= 153 +id-GUMMEIList ProtocolIE-ID ::= 154 +id-GW-TransportLayerAddress ProtocolIE-ID ::= 155 +id-Correlation-ID ProtocolIE-ID ::= 156 +id-SourceMME-GUMMEI ProtocolIE-ID ::= 157 +id-MME-UE-S1AP-ID-2 ProtocolIE-ID ::= 158 +id-RegisteredLAI ProtocolIE-ID ::= 159 +id-RelayNode-Indicator ProtocolIE-ID ::= 160 +id-TrafficLoadReductionIndication ProtocolIE-ID ::= 161 +id-MDTConfiguration ProtocolIE-ID ::= 162 +id-MMERelaySupportIndicator ProtocolIE-ID ::= 163 +id-GWContextReleaseIndication ProtocolIE-ID ::= 164 +id-ManagementBasedMDTAllowed ProtocolIE-ID ::= 165 +id-PrivacyIndicator ProtocolIE-ID ::= 166 +id-Time-UE-StayedInCell-EnhancedGranularity ProtocolIE-ID ::= 167 +id-HO-Cause ProtocolIE-ID ::= 168 +id-VoiceSupportMatchIndicator ProtocolIE-ID ::= 169 +id-GUMMEIType ProtocolIE-ID ::= 170 +id-M3Configuration ProtocolIE-ID ::= 171 +id-M4Configuration ProtocolIE-ID ::= 172 +id-M5Configuration ProtocolIE-ID ::= 173 +id-MDT-Location-Info ProtocolIE-ID ::= 174 +id-MobilityInformation ProtocolIE-ID ::= 175 +id-Tunnel-Information-for-BBF ProtocolIE-ID ::= 176 +id-ManagementBasedMDTPLMNList ProtocolIE-ID ::= 177 +id-SignallingBasedMDTPLMNList ProtocolIE-ID ::= 178 +id-ULCOUNTValueExtended ProtocolIE-ID ::= 179 +id-DLCOUNTValueExtended ProtocolIE-ID ::= 180 +id-ReceiveStatusOfULPDCPSDUsExtended ProtocolIE-ID ::= 181 +id-ECGIListForRestart ProtocolIE-ID ::= 182 +id-SIPTO-Correlation-ID ProtocolIE-ID ::= 183 +id-SIPTO-L-GW-TransportLayerAddress ProtocolIE-ID ::= 184 +id-TransportInformation ProtocolIE-ID ::= 185 +id-LHN-ID ProtocolIE-ID ::= 186 +id-AdditionalCSFallbackIndicator ProtocolIE-ID ::= 187 +id-TAIListForRestart ProtocolIE-ID ::= 188 +id-UserLocationInformation ProtocolIE-ID ::= 189 +id-EmergencyAreaIDListForRestart ProtocolIE-ID ::= 190 +id-KillAllWarningMessages ProtocolIE-ID ::= 191 +id-Masked-IMEISV ProtocolIE-ID ::= 192 +id-eNBIndirectX2TransportLayerAddresses ProtocolIE-ID ::= 193 +id-uE-HistoryInformationFromTheUE ProtocolIE-ID ::= 194 +id-ProSeAuthorized ProtocolIE-ID ::= 195 +id-ExpectedUEBehaviour ProtocolIE-ID ::= 196 +id-LoggedMBSFNMDT ProtocolIE-ID ::= 197 +id-UERadioCapabilityForPaging ProtocolIE-ID ::= 198 +id-E-RABToBeModifiedListBearerModInd ProtocolIE-ID ::= 199 +id-E-RABToBeModifiedItemBearerModInd ProtocolIE-ID ::= 200 +id-E-RABNotToBeModifiedListBearerModInd ProtocolIE-ID ::= 201 +id-E-RABNotToBeModifiedItemBearerModInd ProtocolIE-ID ::= 202 +id-E-RABModifyListBearerModConf ProtocolIE-ID ::= 203 +id-E-RABModifyItemBearerModConf ProtocolIE-ID ::= 204 +id-E-RABFailedToModifyListBearerModConf ProtocolIE-ID ::= 205 +id-SON-Information-Report ProtocolIE-ID ::= 206 +id-Muting-Availability-Indication ProtocolIE-ID ::= 207 +id-Muting-Pattern-Information ProtocolIE-ID ::= 208 +id-Synchronisation-Information ProtocolIE-ID ::= 209 +id-E-RABToBeReleasedListBearerModConf ProtocolIE-ID ::= 210 +id-AssistanceDataForPaging ProtocolIE-ID ::= 211 +id-CellIdentifierAndCELevelForCECapableUEs ProtocolIE-ID ::= 212 +id-InformationOnRecommendedCellsAndENBsForPaging ProtocolIE-ID ::= 213 +id-RecommendedCellItem ProtocolIE-ID ::= 214 +id-RecommendedENBItem ProtocolIE-ID ::= 215 +id-ProSeUEtoNetworkRelaying ProtocolIE-ID ::= 216 +id-ULCOUNTValuePDCP-SNlength18 ProtocolIE-ID ::= 217 +id-DLCOUNTValuePDCP-SNlength18 ProtocolIE-ID ::= 218 +id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 ProtocolIE-ID ::= 219 +id-M6Configuration ProtocolIE-ID ::= 220 +id-M7Configuration ProtocolIE-ID ::= 221 +id-PWSfailedECGIList ProtocolIE-ID ::= 222 +id-MME-Group-ID ProtocolIE-ID ::= 223 +id-Additional-GUTI ProtocolIE-ID ::= 224 +id-S1-Message ProtocolIE-ID ::= 225 +id-CSGMembershipInfo ProtocolIE-ID ::= 226 +id-Paging-eDRXInformation ProtocolIE-ID ::= 227 +id-UE-RetentionInformation ProtocolIE-ID ::= 228 +id-UE-Usage-Type ProtocolIE-ID ::= 230 +id-extended-UEIdentityIndexValue ProtocolIE-ID ::= 231 +id-RAT-Type ProtocolIE-ID ::= 232 +id-BearerType ProtocolIE-ID ::= 233 +id-NB-IoT-DefaultPagingDRX ProtocolIE-ID ::= 234 +id-E-RABFailedToResumeListResumeReq ProtocolIE-ID ::= 235 +id-E-RABFailedToResumeItemResumeReq ProtocolIE-ID ::= 236 +id-E-RABFailedToResumeListResumeRes ProtocolIE-ID ::= 237 +id-E-RABFailedToResumeItemResumeRes ProtocolIE-ID ::= 238 +id-NB-IoT-Paging-eDRXInformation ProtocolIE-ID ::= 239 +id-V2XServicesAuthorized ProtocolIE-ID ::= 240 +id-UEUserPlaneCIoTSupportIndicator ProtocolIE-ID ::= 241 +id-CE-mode-B-SupportIndicator ProtocolIE-ID ::= 242 +id-SRVCCOperationNotPossible ProtocolIE-ID ::= 243 +id-NB-IoT-UEIdentityIndexValue ProtocolIE-ID ::= 244 +id-RRC-Resume-Cause ProtocolIE-ID ::= 245 +id-DCN-ID ProtocolIE-ID ::= 246 +id-ServedDCNs ProtocolIE-ID ::= 247 +id-UESidelinkAggregateMaximumBitrate ProtocolIE-ID ::= 248 +id-DLNASPDUDeliveryAckRequest ProtocolIE-ID ::= 249 +id-Coverage-Level ProtocolIE-ID ::= 250 +id-EnhancedCoverageRestricted ProtocolIE-ID ::= 251 +id-UE-Level-QoS-Parameters ProtocolIE-ID ::= 252 +id-DL-CP-SecurityInformation ProtocolIE-ID ::= 253 +id-UL-CP-SecurityInformation ProtocolIE-ID ::= 254 + +END + +-- ************************************************************** +-- +-- Container definitions +-- +-- ************************************************************** + +S1AP-Containers { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Containers (5) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + Presence, + PrivateIE-ID, + ProtocolExtensionID, + ProtocolIE-ID +FROM S1AP-CommonDataTypes + + maxPrivateIEs, + maxProtocolExtensions, + maxProtocolIEs +FROM S1AP-Constants; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +S1AP-PROTOCOL-IES ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +S1AP-PROTOCOL-IES-PAIR ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &firstCriticality Criticality, + &FirstValue, + &secondCriticality Criticality, + &SecondValue, + &presence Presence +} +WITH SYNTAX { + ID &id + FIRST CRITICALITY &firstCriticality + FIRST TYPE &FirstValue + SECOND CRITICALITY &secondCriticality + SECOND TYPE &SecondValue + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol Extensions +-- +-- ************************************************************** + +S1AP-PROTOCOL-EXTENSION ::= CLASS { + &id ProtocolExtensionID UNIQUE, + &criticality Criticality, + &Extension, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Private IEs +-- +-- ************************************************************** + +S1AP-PRIVATE-IES ::= CLASS { + &id PrivateIE-ID, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + +ProtocolIE-Container {S1AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-SingleContainer {S1AP-PROTOCOL-IES : IEsSetParam} ::= + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field {S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id S1AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality S1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value S1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Protocol IE Pairs +-- +-- ************************************************************** + +ProtocolIE-ContainerPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-FieldPair {{IEsSetParam}} + +ProtocolIE-FieldPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE { + id S1AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}), + firstCriticality S1AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}), + firstValue S1AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}), + secondCriticality S1AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}), + secondValue S1AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-SingleContainer {{IEsSetParam}} + +ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-ContainerPair {{IEsSetParam}} + +-- ************************************************************** +-- +-- Container for Protocol Extensions +-- +-- ************************************************************** + +ProtocolExtensionContainer {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= + SEQUENCE (SIZE (1..maxProtocolExtensions)) OF + ProtocolExtensionField {{ExtensionSetParam}} + +ProtocolExtensionField {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { + id S1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality S1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + extensionValue S1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Private IEs +-- +-- ************************************************************** + +PrivateIE-Container {S1AP-PRIVATE-IES : IEsSetParam } ::= + SEQUENCE (SIZE (1.. maxPrivateIEs)) OF + PrivateIE-Field {{IEsSetParam}} + +PrivateIE-Field {S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE { + id S1AP-PRIVATE-IES.&id ({IEsSetParam}), + criticality S1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}), + value S1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id}) +} + +END diff --git a/lib/s1ap3/support/r14.4.0/36413-e40.txt b/lib/s1ap3/support/r14.4.0/36413-e40.txt new file mode 100644 index 0000000000..55ea729d4d --- /dev/null +++ b/lib/s1ap3/support/r14.4.0/36413-e40.txt @@ -0,0 +1,6966 @@ + +9.3.2 Elementary Procedure Definitions +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** + +S1AP-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-PDU-Descriptions (0)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureCode +FROM S1AP-CommonDataTypes + + CellTrafficTrace, + DeactivateTrace, + DownlinkUEAssociatedLPPaTransport, + DownlinkNASTransport, + DownlinkNonUEAssociatedLPPaTransport, + DownlinkS1cdma2000tunnelling, + ENBDirectInformationTransfer, + ENBStatusTransfer, + ENBConfigurationUpdate, + ENBConfigurationUpdateAcknowledge, + ENBConfigurationUpdateFailure, + ErrorIndication, + HandoverCancel, + HandoverCancelAcknowledge, + HandoverCommand, + HandoverFailure, + HandoverNotify, + HandoverPreparationFailure, + HandoverRequest, + HandoverRequestAcknowledge, + HandoverRequired, + InitialContextSetupFailure, + InitialContextSetupRequest, + InitialContextSetupResponse, + InitialUEMessage, + KillRequest, + KillResponse, + LocationReportingControl, + LocationReportingFailureIndication, + LocationReport, + MMEConfigurationUpdate, + MMEConfigurationUpdateAcknowledge, + MMEConfigurationUpdateFailure, + MMEDirectInformationTransfer, + MMEStatusTransfer, + NASNonDeliveryIndication, + OverloadStart, + OverloadStop, + Paging, + PathSwitchRequest, + PathSwitchRequestAcknowledge, + PathSwitchRequestFailure, + PrivateMessage, + Reset, + ResetAcknowledge, + S1SetupFailure, + S1SetupRequest, + S1SetupResponse, + E-RABModifyRequest, + E-RABModifyResponse, + E-RABModificationIndication, + E-RABModificationConfirm, + E-RABReleaseCommand, + E-RABReleaseResponse, + E-RABReleaseIndication, + E-RABSetupRequest, + E-RABSetupResponse, + TraceFailureIndication, + TraceStart, + UECapabilityInfoIndication, + UEContextModificationFailure, + UEContextModificationRequest, + UEContextModificationResponse, + UEContextReleaseCommand, + UEContextReleaseComplete, + UEContextReleaseRequest, + UERadioCapabilityMatchRequest, + UERadioCapabilityMatchResponse, + UplinkUEAssociatedLPPaTransport, + UplinkNASTransport, + UplinkNonUEAssociatedLPPaTransport, + UplinkS1cdma2000tunnelling, + WriteReplaceWarningRequest, + WriteReplaceWarningResponse, + ENBConfigurationTransfer, + MMEConfigurationTransfer, + PWSRestartIndication, + UEContextModificationIndication, + UEContextModificationConfirm, + RerouteNASRequest, + PWSFailureIndication, + UEContextSuspendRequest, + UEContextSuspendResponse, + UEContextResumeRequest, + UEContextResumeResponse, + UEContextResumeFailure, + ConnectionEstablishmentIndication, + NASDeliveryIndication, + RetrieveUEInformation, + UEInformationTransfer, + ENBCPRelocationIndication, + MMECPRelocationIndication + + +FROM S1AP-PDU-Contents + + id-CellTrafficTrace, + id-DeactivateTrace, + id-downlinkUEAssociatedLPPaTransport, + id-downlinkNASTransport, + id-downlinkNonUEAssociatedLPPaTransport, + id-DownlinkS1cdma2000tunnelling, + id-eNBStatusTransfer, + id-ErrorIndication, + id-HandoverCancel, + id-HandoverNotification, + id-HandoverPreparation, + id-HandoverResourceAllocation, + id-InitialContextSetup, + id-initialUEMessage, + id-ENBConfigurationUpdate, + id-Kill, + id-LocationReportingControl, + id-LocationReportingFailureIndication, + id-LocationReport, + id-eNBDirectInformationTransfer, + id-MMEConfigurationUpdate, + id-MMEDirectInformationTransfer, + id-MMEStatusTransfer, + id-NASNonDeliveryIndication, + id-OverloadStart, + id-OverloadStop, + id-Paging, + id-PathSwitchRequest, + id-PrivateMessage, + id-Reset, + id-S1Setup, + id-E-RABModify, + id-E-RABModificationIndication, + id-E-RABRelease, + id-E-RABReleaseIndication, + id-E-RABSetup, + id-TraceFailureIndication, + id-TraceStart, + id-UECapabilityInfoIndication, + id-UEContextModification, + id-UEContextRelease, + id-UEContextReleaseRequest, + id-UERadioCapabilityMatch, + id-uplinkUEAssociatedLPPaTransport, + id-uplinkNASTransport, + id-uplinkNonUEAssociatedLPPaTransport, + id-UplinkS1cdma2000tunnelling, + id-WriteReplaceWarning, + id-eNBConfigurationTransfer, + id-MMEConfigurationTransfer, + id-PWSRestartIndication, + id-UEContextModificationIndication, + id-RerouteNASRequest, + id-PWSFailureIndication, + id-UEContextSuspend, + id-UEContextResume, + id-ConnectionEstablishmentIndication, + id-NASDeliveryIndication, + id-RetrieveUEInformation, + id-UEInformationTransfer, + id-eNBCPRelocationIndication, + id-MMECPRelocationIndication + + +FROM S1AP-Constants; + + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +S1AP-ELEMENTARY-PROCEDURE ::= CLASS { + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL, + &UnsuccessfulOutcome OPTIONAL, + &procedureCode ProcedureCode UNIQUE, + &criticality Criticality DEFAULT ignore +} +WITH SYNTAX { + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] +} + +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** + +S1AP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), + criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value S1AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), + criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value S1AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode S1AP-ELEMENTARY-PROCEDURE.&procedureCode ({S1AP-ELEMENTARY-PROCEDURES}), + criticality S1AP-ELEMENTARY-PROCEDURE.&criticality ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value S1AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({S1AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +S1AP-ELEMENTARY-PROCEDURES S1AP-ELEMENTARY-PROCEDURE ::= { + S1AP-ELEMENTARY-PROCEDURES-CLASS-1 | + S1AP-ELEMENTARY-PROCEDURES-CLASS-2, + ... +} + + +S1AP-ELEMENTARY-PROCEDURES-CLASS-1 S1AP-ELEMENTARY-PROCEDURE ::= { + handoverPreparation | + handoverResourceAllocation | + pathSwitchRequest | + e-RABSetup | + e-RABModify | + e-RABRelease | + initialContextSetup | + handoverCancel | + kill | + reset | + s1Setup | + uEContextModification | + uEContextRelease | + eNBConfigurationUpdate | + mMEConfigurationUpdate | + writeReplaceWarning , + ..., + uERadioCapabilityMatch | + e-RABModificationIndication | + uEContextModificationIndication | + uEContextSuspend | + uEContextResume +} + +S1AP-ELEMENTARY-PROCEDURES-CLASS-2 S1AP-ELEMENTARY-PROCEDURE ::= { + handoverNotification | + e-RABReleaseIndication | + paging | + downlinkNASTransport | + initialUEMessage | + uplinkNASTransport | + errorIndication | + nASNonDeliveryIndication | + uEContextReleaseRequest | + downlinkS1cdma2000tunnelling | + uplinkS1cdma2000tunnelling | + uECapabilityInfoIndication | + eNBStatusTransfer | + mMEStatusTransfer | + deactivateTrace | + traceStart | + traceFailureIndication | + cellTrafficTrace | + locationReportingControl | + locationReportingFailureIndication | + locationReport | + overloadStart | + overloadStop | + eNBDirectInformationTransfer | + mMEDirectInformationTransfer | + eNBConfigurationTransfer | + mMEConfigurationTransfer | + privateMessage , + ..., + downlinkUEAssociatedLPPaTransport | + uplinkUEAssociatedLPPaTransport | + downlinkNonUEAssociatedLPPaTransport | + uplinkNonUEAssociatedLPPaTransport | + pWSRestartIndication | + rerouteNASRequest | + pWSFailureIndication | + connectionEstablishmentIndication | + nASDeliveryIndication | + retrieveUEInformation | + uEInformationTransfer | + eNBCPRelocationIndication | + mMECPRelocationIndication +} + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + +handoverPreparation S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverRequired + SUCCESSFUL OUTCOME HandoverCommand + UNSUCCESSFUL OUTCOME HandoverPreparationFailure + PROCEDURE CODE id-HandoverPreparation + CRITICALITY reject +} + +handoverResourceAllocation S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverRequest + SUCCESSFUL OUTCOME HandoverRequestAcknowledge + UNSUCCESSFUL OUTCOME HandoverFailure + PROCEDURE CODE id-HandoverResourceAllocation + CRITICALITY reject +} + +handoverNotification S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverNotify + PROCEDURE CODE id-HandoverNotification + CRITICALITY ignore +} + +pathSwitchRequest S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PathSwitchRequest + SUCCESSFUL OUTCOME PathSwitchRequestAcknowledge + UNSUCCESSFUL OUTCOME PathSwitchRequestFailure + PROCEDURE CODE id-PathSwitchRequest + CRITICALITY reject +} + +e-RABSetup S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABSetupRequest + SUCCESSFUL OUTCOME E-RABSetupResponse + PROCEDURE CODE id-E-RABSetup + CRITICALITY reject +} + +e-RABModify S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABModifyRequest + SUCCESSFUL OUTCOME E-RABModifyResponse + PROCEDURE CODE id-E-RABModify + CRITICALITY reject +} + +e-RABRelease S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABReleaseCommand + SUCCESSFUL OUTCOME E-RABReleaseResponse + PROCEDURE CODE id-E-RABRelease + CRITICALITY reject +} + +e-RABReleaseIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABReleaseIndication + PROCEDURE CODE id-E-RABReleaseIndication + CRITICALITY ignore +} + +initialContextSetup S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InitialContextSetupRequest + SUCCESSFUL OUTCOME InitialContextSetupResponse + UNSUCCESSFUL OUTCOME InitialContextSetupFailure + PROCEDURE CODE id-InitialContextSetup + CRITICALITY reject +} + +uEContextReleaseRequest S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextReleaseRequest + PROCEDURE CODE id-UEContextReleaseRequest + CRITICALITY ignore +} + +paging S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Paging + PROCEDURE CODE id-Paging + CRITICALITY ignore +} + +downlinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkNASTransport + PROCEDURE CODE id-downlinkNASTransport + CRITICALITY ignore +} + +initialUEMessage S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE InitialUEMessage + PROCEDURE CODE id-initialUEMessage + CRITICALITY ignore +} + +uplinkNASTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkNASTransport + PROCEDURE CODE id-uplinkNASTransport + CRITICALITY ignore +} +nASNonDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE NASNonDeliveryIndication + PROCEDURE CODE id-NASNonDeliveryIndication + CRITICALITY ignore +} + +handoverCancel S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE HandoverCancel + SUCCESSFUL OUTCOME HandoverCancelAcknowledge + PROCEDURE CODE id-HandoverCancel + CRITICALITY reject +} + +reset S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Reset + SUCCESSFUL OUTCOME ResetAcknowledge + PROCEDURE CODE id-Reset + CRITICALITY reject +} + +errorIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + PROCEDURE CODE id-ErrorIndication + CRITICALITY ignore +} + +s1Setup S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE S1SetupRequest + SUCCESSFUL OUTCOME S1SetupResponse + UNSUCCESSFUL OUTCOME S1SetupFailure + PROCEDURE CODE id-S1Setup + CRITICALITY reject +} + +eNBConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBConfigurationUpdate + SUCCESSFUL OUTCOME ENBConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME ENBConfigurationUpdateFailure + PROCEDURE CODE id-ENBConfigurationUpdate + CRITICALITY reject +} + +mMEConfigurationUpdate S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMEConfigurationUpdate + SUCCESSFUL OUTCOME MMEConfigurationUpdateAcknowledge + UNSUCCESSFUL OUTCOME MMEConfigurationUpdateFailure + PROCEDURE CODE id-MMEConfigurationUpdate + CRITICALITY reject +} + +downlinkS1cdma2000tunnelling S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkS1cdma2000tunnelling + PROCEDURE CODE id-DownlinkS1cdma2000tunnelling + CRITICALITY ignore +} + +uplinkS1cdma2000tunnelling S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkS1cdma2000tunnelling + PROCEDURE CODE id-UplinkS1cdma2000tunnelling + CRITICALITY ignore +} + +uEContextModification S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextModificationRequest + SUCCESSFUL OUTCOME UEContextModificationResponse + UNSUCCESSFUL OUTCOME UEContextModificationFailure + PROCEDURE CODE id-UEContextModification + CRITICALITY reject +} + +uECapabilityInfoIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UECapabilityInfoIndication + PROCEDURE CODE id-UECapabilityInfoIndication + CRITICALITY ignore +} + +uEContextRelease S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextReleaseCommand + SUCCESSFUL OUTCOME UEContextReleaseComplete + PROCEDURE CODE id-UEContextRelease + CRITICALITY reject +} + +eNBStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBStatusTransfer + PROCEDURE CODE id-eNBStatusTransfer + CRITICALITY ignore +} + +mMEStatusTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMEStatusTransfer + PROCEDURE CODE id-MMEStatusTransfer + CRITICALITY ignore +} + +deactivateTrace S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DeactivateTrace + PROCEDURE CODE id-DeactivateTrace + CRITICALITY ignore +} + +traceStart S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE TraceStart + PROCEDURE CODE id-TraceStart + CRITICALITY ignore +} + +traceFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE TraceFailureIndication + PROCEDURE CODE id-TraceFailureIndication + CRITICALITY ignore +} +cellTrafficTrace S1AP-ELEMENTARY-PROCEDURE ::={ +INITIATING MESSAGE CellTrafficTrace +PROCEDURE CODE id-CellTrafficTrace +CRITICALITY ignore +} + +locationReportingControl S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE LocationReportingControl + PROCEDURE CODE id-LocationReportingControl + CRITICALITY ignore +} + +locationReportingFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE LocationReportingFailureIndication + PROCEDURE CODE id-LocationReportingFailureIndication + CRITICALITY ignore +} + +locationReport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE LocationReport + PROCEDURE CODE id-LocationReport + CRITICALITY ignore +} + +overloadStart S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE OverloadStart + PROCEDURE CODE id-OverloadStart + CRITICALITY ignore +} + +overloadStop S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE OverloadStop + PROCEDURE CODE id-OverloadStop + CRITICALITY reject +} + +writeReplaceWarning S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE WriteReplaceWarningRequest + SUCCESSFUL OUTCOME WriteReplaceWarningResponse + PROCEDURE CODE id-WriteReplaceWarning + CRITICALITY reject +} + +eNBDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBDirectInformationTransfer + PROCEDURE CODE id-eNBDirectInformationTransfer + CRITICALITY ignore +} + +mMEDirectInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMEDirectInformationTransfer + PROCEDURE CODE id-MMEDirectInformationTransfer + CRITICALITY ignore +} + +eNBConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBConfigurationTransfer + PROCEDURE CODE id-eNBConfigurationTransfer + CRITICALITY ignore +} + +mMEConfigurationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMEConfigurationTransfer + PROCEDURE CODE id-MMEConfigurationTransfer + CRITICALITY ignore +} + + +privateMessage S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PrivateMessage + PROCEDURE CODE id-PrivateMessage + CRITICALITY ignore +} + +pWSRestartIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PWSRestartIndication + PROCEDURE CODE id-PWSRestartIndication + CRITICALITY ignore +} + +kill S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE KillRequest + SUCCESSFUL OUTCOME KillResponse + PROCEDURE CODE id-Kill + CRITICALITY reject +} + +downlinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkUEAssociatedLPPaTransport + PROCEDURE CODE id-downlinkUEAssociatedLPPaTransport + CRITICALITY ignore +} + +uplinkUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkUEAssociatedLPPaTransport + PROCEDURE CODE id-uplinkUEAssociatedLPPaTransport + CRITICALITY ignore +} +downlinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE DownlinkNonUEAssociatedLPPaTransport + PROCEDURE CODE id-downlinkNonUEAssociatedLPPaTransport + CRITICALITY ignore +} + +uplinkNonUEAssociatedLPPaTransport S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UplinkNonUEAssociatedLPPaTransport + PROCEDURE CODE id-uplinkNonUEAssociatedLPPaTransport + CRITICALITY ignore +} + +uERadioCapabilityMatch S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UERadioCapabilityMatchRequest + SUCCESSFUL OUTCOME UERadioCapabilityMatchResponse + PROCEDURE CODE id-UERadioCapabilityMatch + CRITICALITY reject +} + +e-RABModificationIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E-RABModificationIndication + SUCCESSFUL OUTCOME E-RABModificationConfirm + PROCEDURE CODE id-E-RABModificationIndication + CRITICALITY reject +} + +uEContextModificationIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextModificationIndication + SUCCESSFUL OUTCOME UEContextModificationConfirm + PROCEDURE CODE id-UEContextModificationIndication + CRITICALITY reject +} + +rerouteNASRequest S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RerouteNASRequest + PROCEDURE CODE id-RerouteNASRequest + CRITICALITY reject +} + +pWSFailureIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE PWSFailureIndication + PROCEDURE CODE id-PWSFailureIndication + CRITICALITY ignore +} + +uEContextSuspend S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextSuspendRequest + SUCCESSFUL OUTCOME UEContextSuspendResponse + PROCEDURE CODE id-UEContextSuspend + CRITICALITY reject +} + +uEContextResume S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEContextResumeRequest + SUCCESSFUL OUTCOME UEContextResumeResponse + UNSUCCESSFUL OUTCOME UEContextResumeFailure + PROCEDURE CODE id-UEContextResume + CRITICALITY reject +} + +connectionEstablishmentIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ConnectionEstablishmentIndication + PROCEDURE CODE id-ConnectionEstablishmentIndication + CRITICALITY reject +} + +nASDeliveryIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE NASDeliveryIndication + PROCEDURE CODE id-NASDeliveryIndication + CRITICALITY ignore +} + +retrieveUEInformation S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RetrieveUEInformation + PROCEDURE CODE id-RetrieveUEInformation + CRITICALITY reject +} + +uEInformationTransfer S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE UEInformationTransfer + PROCEDURE CODE id-UEInformationTransfer + CRITICALITY reject +} + +eNBCPRelocationIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ENBCPRelocationIndication + PROCEDURE CODE id-eNBCPRelocationIndication + CRITICALITY reject +} + +mMECPRelocationIndication S1AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE MMECPRelocationIndication + PROCEDURE CODE id-MMECPRelocationIndication + CRITICALITY reject +} + + +END + +9.3.3 PDU Definitions +-- ************************************************************** +-- +-- PDU definitions for S1AP. +-- +-- ************************************************************** + +S1AP-PDU-Contents { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-PDU-Contents (1) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + UEAggregateMaximumBitrate, + BearerType, + Cause, + CellAccessMode, + Cdma2000HORequiredIndication, + Cdma2000HOStatus, + Cdma2000OneXSRVCCInfo, + Cdma2000OneXRAND, + Cdma2000PDU, + Cdma2000RATType, + Cdma2000SectorID, + EUTRANRoundTripDelayEstimationInfo, + CNDomain, + ConcurrentWarningMessageIndicator, + CriticalityDiagnostics, + CSFallbackIndicator, + CSG-Id, + CSG-IdList, + CSGMembershipStatus, + Data-Forwarding-Not-Possible, + Direct-Forwarding-Path-Availability, + Global-ENB-ID, + EUTRAN-CGI, + ENBname, + ENB-StatusTransfer-TransparentContainer, + ENB-UE-S1AP-ID, + ExtendedRepetitionPeriod, + GTP-TEID, + GUMMEI, + GUMMEIType, + HandoverRestrictionList, + HandoverType, + Masked-IMEISV, + LAI, + LPPa-PDU, + ManagementBasedMDTAllowed, + MDTPLMNList, + MMEname, + MMERelaySupportIndicator, + MME-UE-S1AP-ID, + MSClassmark2, + MSClassmark3, + NAS-PDU, + NASSecurityParametersfromE-UTRAN, + NASSecurityParameterstoE-UTRAN, + OverloadResponse, + PagingDRX, + PagingPriority, + PLMNidentity, + ProSeAuthorized, + RIMTransfer, + RelativeMMECapacity, + RequestType, + E-RAB-ID, + E-RABLevelQoSParameters, + E-RABList, + RelayNode-Indicator, + Routing-ID, + SecurityKey, + SecurityContext, + ServedGUMMEIs, + SONConfigurationTransfer, + Source-ToTarget-TransparentContainer, + SourceBSS-ToTargetBSS-TransparentContainer, + SourceeNB-ToTargeteNB-TransparentContainer, + SourceRNC-ToTargetRNC-TransparentContainer, + SubscriberProfileIDforRFP, + SRVCCOperationNotPossible, + SRVCCOperationPossible, + SRVCCHOIndication, + SupportedTAs, + TAI, + Target-ToSource-TransparentContainer, + TargetBSS-ToSourceBSS-TransparentContainer, + TargeteNB-ToSourceeNB-TransparentContainer, + TargetID, + TargetRNC-ToSourceRNC-TransparentContainer, + TimeToWait, + TraceActivation, + TrafficLoadReductionIndication, + E-UTRAN-Trace-ID, + TransportLayerAddress, + UEIdentityIndexValue, + UEPagingID, + UERadioCapability, + UERadioCapabilityForPaging, + UE-RetentionInformation, + UE-S1AP-IDs, + UE-associatedLogicalS1-ConnectionItem, + UESecurityCapabilities, + S-TMSI, + MessageIdentifier, + SerialNumber, + WarningAreaList, + RepetitionPeriod, + NumberofBroadcastRequest, + WarningType, + WarningSecurityInfo, + DataCodingScheme, + WarningMessageContents, + BroadcastCompletedAreaList, + RRC-Establishment-Cause, + BroadcastCancelledAreaList, + PS-ServiceNotAvailable, + GUMMEIList, + Correlation-ID, + GWContextReleaseIndication, + PrivacyIndicator, + VoiceSupportMatchIndicator, + TunnelInformation, + KillAllWarningMessages, + TransportInformation, + LHN-ID, + UserLocationInformation, + AdditionalCSFallbackIndicator, + ECGIListForRestart, + TAIListForRestart, + EmergencyAreaIDListForRestart, + ExpectedUEBehaviour, + Paging-eDRXInformation, + Extended-UEIdentityIndexValue, + MME-Group-ID, + Additional-GUTI, + PWSfailedECGIList, + CellIdentifierAndCELevelForCECapableUEs, + AssistanceDataForPaging, + InformationOnRecommendedCellsAndENBsForPaging, + UE-Usage-Type, + UEUserPlaneCIoTSupportIndicator, + NB-IoT-DefaultPagingDRX, + NB-IoT-Paging-eDRXInformation, + CE-mode-B-SupportIndicator, + NB-IoT-UEIdentityIndexValue, + V2XServicesAuthorized, + DCN-ID, + ServedDCNs, + UESidelinkAggregateMaximumBitrate, + DLNASPDUDeliveryAckRequest, + Coverage-Level, + EnhancedCoverageRestricted, + DL-CP-SecurityInformation, + UL-CP-SecurityInformation + + + +FROM S1AP-IEs + + PrivateIE-Container{}, + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + ProtocolIE-ContainerList{}, + ProtocolIE-ContainerPair{}, + ProtocolIE-ContainerPairList{}, + ProtocolIE-SingleContainer{}, + S1AP-PRIVATE-IES, + S1AP-PROTOCOL-EXTENSION, + S1AP-PROTOCOL-IES, + S1AP-PROTOCOL-IES-PAIR +FROM S1AP-Containers + + + id-AssistanceDataForPaging, + id-uEaggregateMaximumBitrate, + id-BearerType, + id-Cause, + id-CellAccessMode, + id-CellIdentifierAndCELevelForCECapableUEs, + id-cdma2000HORequiredIndication, + id-cdma2000HOStatus, + id-cdma2000OneXSRVCCInfo, + id-cdma2000OneXRAND, + id-cdma2000PDU, + id-cdma2000RATType, + id-cdma2000SectorID, + id-EUTRANRoundTripDelayEstimationInfo, + id-CNDomain, + id-ConcurrentWarningMessageIndicator, + id-CriticalityDiagnostics, + id-CSFallbackIndicator, + id-CSG-Id, + id-CSG-IdList, + id-CSGMembershipStatus, + id-Data-Forwarding-Not-Possible, + id-DefaultPagingDRX, + id-Direct-Forwarding-Path-Availability, + id-Global-ENB-ID, + id-EUTRAN-CGI, + id-eNBname, + id-eNB-StatusTransfer-TransparentContainer, + id-eNB-UE-S1AP-ID, + id-GERANtoLTEHOInformationRes, + id-GUMMEI-ID, + id-GUMMEIType, + id-HandoverRestrictionList, + id-HandoverType, + id-Masked-IMEISV, + id-InformationOnRecommendedCellsAndENBsForPaging, + id-InitialContextSetup, + id-Inter-SystemInformationTransferTypeEDT, + id-Inter-SystemInformationTransferTypeMDT, + id-LPPa-PDU, + id-NAS-DownlinkCount, + id-ManagementBasedMDTAllowed, + id-ManagementBasedMDTPLMNList, + id-MMEname, + id-MME-UE-S1AP-ID, + id-MSClassmark2, + id-MSClassmark3, + id-NAS-PDU, + id-NASSecurityParametersfromE-UTRAN, + id-NASSecurityParameterstoE-UTRAN, + id-OverloadResponse, + id-pagingDRX, + id-PagingPriority, + id-RelativeMMECapacity, + id-RequestType, + id-Routing-ID, + id-E-RABAdmittedItem, + id-E-RABAdmittedList, + id-E-RABDataForwardingItem, + id-E-RABFailedToModifyList, + id-E-RABFailedToReleaseList, + id-E-RABFailedtoSetupItemHOReqAck, + id-E-RABFailedToSetupListBearerSURes, + id-E-RABFailedToSetupListCtxtSURes, + id-E-RABFailedToSetupListHOReqAck, + id-E-RABFailedToBeReleasedList, + id-E-RABFailedToResumeListResumeReq, + id-E-RABFailedToResumeItemResumeReq, + id-E-RABFailedToResumeListResumeRes, + id-E-RABFailedToResumeItemResumeRes, + id-E-RABModify, + id-E-RABModifyItemBearerModRes, + id-E-RABModifyListBearerModRes, + id-E-RABRelease, + id-E-RABReleaseItemBearerRelComp, + id-E-RABReleaseItemHOCmd, + id-E-RABReleaseListBearerRelComp, + id-E-RABReleaseIndication, + id-E-RABSetup, + id-E-RABSetupItemBearerSURes, + id-E-RABSetupItemCtxtSURes, + id-E-RABSetupListBearerSURes, + id-E-RABSetupListCtxtSURes, + id-E-RABSubjecttoDataForwardingList, + id-E-RABToBeModifiedItemBearerModReq, + id-E-RABToBeModifiedListBearerModReq, + id-E-RABToBeModifiedListBearerModInd, + id-E-RABToBeModifiedItemBearerModInd, + id-E-RABNotToBeModifiedListBearerModInd, + id-E-RABNotToBeModifiedItemBearerModInd, + id-E-RABModifyListBearerModConf, + id-E-RABModifyItemBearerModConf, + id-E-RABFailedToModifyListBearerModConf, + id-E-RABToBeReleasedListBearerModConf, + id-E-RABToBeReleasedList, + id-E-RABReleasedList, + id-E-RABToBeSetupItemBearerSUReq, + id-E-RABToBeSetupItemCtxtSUReq, + id-E-RABToBeSetupItemHOReq, + id-E-RABToBeSetupListBearerSUReq, + id-E-RABToBeSetupListCtxtSUReq, + id-E-RABToBeSetupListHOReq, + id-E-RABToBeSwitchedDLItem, + id-E-RABToBeSwitchedDLList, + id-E-RABToBeSwitchedULList, + id-E-RABToBeSwitchedULItem, + id-E-RABtoReleaseListHOCmd, + id-ProSeAuthorized, + id-SecurityKey, + id-SecurityContext, + id-ServedGUMMEIs, + id-SONConfigurationTransferECT, + id-SONConfigurationTransferMCT, + id-Source-ToTarget-TransparentContainer, + id-Source-ToTarget-TransparentContainer-Secondary, + id-SourceMME-UE-S1AP-ID, + id-SRVCCOperationNotPossible, + id-SRVCCOperationPossible, + id-SRVCCHOIndication, + id-SubscriberProfileIDforRFP, + id-SupportedTAs, + id-S-TMSI, + id-TAI, + id-TAIItem, + id-TAIList, + id-Target-ToSource-TransparentContainer, + id-Target-ToSource-TransparentContainer-Secondary, + id-TargetID, + id-TimeToWait, + id-TraceActivation, + id-TrafficLoadReductionIndication, + id-E-UTRAN-Trace-ID, + id-UEIdentityIndexValue, + id-UEPagingID, + id-UERadioCapability, + id-UERadioCapabilityForPaging, + id-UTRANtoLTEHOInformationRes, + id-UE-associatedLogicalS1-ConnectionListResAck, + id-UE-associatedLogicalS1-ConnectionItem, + id-UE-RetentionInformation, + id-UESecurityCapabilities, + id-UE-S1AP-IDs, + id-V2XServicesAuthorized, + id-ResetType, + id-MessageIdentifier, + id-SerialNumber, + id-WarningAreaList, + id-RepetitionPeriod, + id-NumberofBroadcastRequest, + id-WarningType, + id-WarningSecurityInfo, + id-DataCodingScheme, + id-WarningMessageContents, + id-BroadcastCompletedAreaList, + id-BroadcastCancelledAreaList, + id-RRC-Establishment-Cause, + id-TraceCollectionEntityIPAddress, + maxnoofTAIs, + maxnoofErrors, + maxnoofE-RABs, + maxnoofIndividualS1ConnectionsToReset, + maxnoofEmergencyAreaID, + maxnoofCellID, + maxnoofTAIforWarning, + maxnoofCellinTAI, + maxnoofCellinEAI, + id-ExtendedRepetitionPeriod, + id-PS-ServiceNotAvailable, + id-RegisteredLAI, + id-GUMMEIList, + id-SourceMME-GUMMEI, + id-MME-UE-S1AP-ID-2, + id-GW-TransportLayerAddress, + id-RelayNode-Indicator, + id-Correlation-ID, + id-MMERelaySupportIndicator, + id-GWContextReleaseIndication, + id-PrivacyIndicator, + id-VoiceSupportMatchIndicator, + id-Tunnel-Information-for-BBF, + id-SIPTO-Correlation-ID, + id-SIPTO-L-GW-TransportLayerAddress, + id-KillAllWarningMessages, + id-TransportInformation, + id-LHN-ID, + id-UserLocationInformation, + id-AdditionalCSFallbackIndicator, + id-ECGIListForRestart, + id-TAIListForRestart, + id-EmergencyAreaIDListForRestart, + id-ExpectedUEBehaviour, + id-Paging-eDRXInformation, + id-extended-UEIdentityIndexValue, + id-CSGMembershipInfo, + id-MME-Group-ID, + id-Additional-GUTI, + id-S1-Message, + id-PWSfailedECGIList, + id-PWSFailureIndication, + id-UE-Usage-Type, + id-UEUserPlaneCIoTSupportIndicator, + id-NB-IoT-DefaultPagingDRX, + id-NB-IoT-Paging-eDRXInformation, + id-CE-mode-B-SupportIndicator, + id-NB-IoT-UEIdentityIndexValue, + id-RRC-Resume-Cause, + id-DCN-ID, + id-ServedDCNs, + id-UESidelinkAggregateMaximumBitrate, + id-DLNASPDUDeliveryAckRequest, + id-Coverage-Level, + id-EnhancedCoverageRestricted, + id-UE-Level-QoS-Parameters, + id-DL-CP-SecurityInformation, + id-UL-CP-SecurityInformation + + +FROM S1AP-Constants; + +-- ************************************************************** +-- +-- Common Container Lists +-- +-- ************************************************************** + +E-RAB-IE-ContainerList { S1AP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofE-RABs, {IEsSetParam} } +E-RAB-IE-ContainerPairList { S1AP-PROTOCOL-IES-PAIR : IEsSetParam } ::= ProtocolIE-ContainerPairList { 1, maxnoofE-RABs, {IEsSetParam} } +ProtocolError-IE-ContainerList { S1AP-PROTOCOL-IES : IEsSetParam } ::= ProtocolIE-ContainerList { 1, maxnoofE-RABs, {IEsSetParam} } + +-- ************************************************************** +-- +-- HANDOVER PREPARATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Handover Required +-- +-- ************************************************************** + +HandoverRequired ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverRequiredIEs} }, + ... +} + +HandoverRequiredIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| + { ID id-TargetID CRITICALITY reject TYPE TargetID PRESENCE mandatory}| + { ID id-Direct-Forwarding-Path-Availability CRITICALITY ignore TYPE Direct-Forwarding-Path-Availability PRESENCE optional}| + { ID id-SRVCCHOIndication CRITICALITY reject TYPE SRVCCHOIndication PRESENCE optional}| + { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE mandatory}| + { ID id-Source-ToTarget-TransparentContainer-Secondary CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE optional}| + { ID id-MSClassmark2 CRITICALITY reject TYPE MSClassmark2 PRESENCE conditional}| + { ID id-MSClassmark3 CRITICALITY ignore TYPE MSClassmark3 PRESENCE conditional}| + { ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional}| + { ID id-CellAccessMode CRITICALITY reject TYPE CellAccessMode PRESENCE optional}| + { ID id-PS-ServiceNotAvailable CRITICALITY ignore TYPE PS-ServiceNotAvailable PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- Handover Command +-- +-- ************************************************************** + +HandoverCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverCommandIEs} }, + ... +} + +HandoverCommandIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory}| + { ID id-NASSecurityParametersfromE-UTRAN CRITICALITY reject TYPE NASSecurityParametersfromE-UTRAN PRESENCE conditional + -- This IE shall be present if HandoverType IE is set to value "LTEtoUTRAN" or "LTEtoGERAN" --}| + { ID id-E-RABSubjecttoDataForwardingList CRITICALITY ignore TYPE E-RABSubjecttoDataForwardingList PRESENCE optional}| + { ID id-E-RABtoReleaseListHOCmd CRITICALITY ignore TYPE E-RABList PRESENCE optional}| + { ID id-Target-ToSource-TransparentContainer CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE mandatory}| + { ID id-Target-ToSource-TransparentContainer-Secondary CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +E-RABSubjecttoDataForwardingList ::= E-RAB-IE-ContainerList { {E-RABDataForwardingItemIEs} } + +E-RABDataForwardingItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABDataForwardingItem CRITICALITY ignore TYPE E-RABDataForwardingItem PRESENCE mandatory }, + ... +} + +E-RABDataForwardingItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + dL-transportLayerAddress TransportLayerAddress OPTIONAL, + dL-gTP-TEID GTP-TEID OPTIONAL, + uL-TransportLayerAddress TransportLayerAddress OPTIONAL, + uL-GTP-TEID GTP-TEID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { E-RABDataForwardingItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABDataForwardingItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +-- ************************************************************** +-- +-- Handover Preparation Failure +-- +-- ************************************************************** + +HandoverPreparationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverPreparationFailureIEs} }, + ... +} + +HandoverPreparationFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER RESOURCE ALLOCATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Handover Request +-- +-- ************************************************************** + +HandoverRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {HandoverRequestIEs} }, + ... +} + +HandoverRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-HandoverType CRITICALITY reject TYPE HandoverType PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE mandatory}| + { ID id-E-RABToBeSetupListHOReq CRITICALITY reject TYPE E-RABToBeSetupListHOReq PRESENCE mandatory}| + { ID id-Source-ToTarget-TransparentContainer CRITICALITY reject TYPE Source-ToTarget-TransparentContainer PRESENCE mandatory}| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE mandatory}| + { ID id-HandoverRestrictionList CRITICALITY ignore TYPE HandoverRestrictionList PRESENCE optional}| + { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional}| + { ID id-RequestType CRITICALITY ignore TYPE RequestType PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE mandatory}| + { ID id-NASSecurityParameterstoE-UTRAN CRITICALITY reject TYPE NASSecurityParameterstoE-UTRAN PRESENCE conditional + -- This IE shall be present if the Handover Type IE is set to the value "UTRANtoLTE" or "GERANtoLTE" -- }| + { ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-GUMMEI-ID CRITICALITY ignore TYPE GUMMEI PRESENCE optional}| + { ID id-MME-UE-S1AP-ID-2 CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional}| + { ID id-ManagementBasedMDTAllowed CRITICALITY ignore TYPE ManagementBasedMDTAllowed PRESENCE optional}| + { ID id-ManagementBasedMDTPLMNList CRITICALITY ignore TYPE MDTPLMNList PRESENCE optional}| + { ID id-Masked-IMEISV CRITICALITY ignore TYPE Masked-IMEISV PRESENCE optional}| + { ID id-ExpectedUEBehaviour CRITICALITY ignore TYPE ExpectedUEBehaviour PRESENCE optional}| + { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| + { ID id-UEUserPlaneCIoTSupportIndicator CRITICALITY ignore TYPE UEUserPlaneCIoTSupportIndicator PRESENCE optional}| + { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| + { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + ... +} + +E-RABToBeSetupListHOReq ::= E-RAB-IE-ContainerList { {E-RABToBeSetupItemHOReqIEs} } + +E-RABToBeSetupItemHOReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSetupItemHOReq CRITICALITY reject TYPE E-RABToBeSetupItemHOReq PRESENCE mandatory }, + ... +} + +E-RABToBeSetupItemHOReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + e-RABlevelQosParameters E-RABLevelQoSParameters, + iE-Extensions ProtocolExtensionContainer { {E-RABToBeSetupItemHOReq-ExtIEs} } OPTIONAL, + ... +} + +E-RABToBeSetupItemHOReq-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-Data-Forwarding-Not-Possible CRITICALITY ignore EXTENSION Data-Forwarding-Not-Possible PRESENCE optional}| + { ID id-BearerType CRITICALITY reject EXTENSION BearerType PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- Handover Request Acknowledge +-- +-- ************************************************************** + +HandoverRequestAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {HandoverRequestAcknowledgeIEs} }, + ... +} + +HandoverRequestAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABAdmittedList CRITICALITY ignore TYPE E-RABAdmittedList PRESENCE mandatory}| + { ID id-E-RABFailedToSetupListHOReqAck CRITICALITY ignore TYPE E-RABFailedtoSetupListHOReqAck PRESENCE optional}| + { ID id-Target-ToSource-TransparentContainer CRITICALITY reject TYPE Target-ToSource-TransparentContainer PRESENCE mandatory}| + { ID id-CSG-Id CRITICALITY ignore TYPE CSG-Id PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-CellAccessMode CRITICALITY ignore TYPE CellAccessMode PRESENCE optional}| + { ID id-CE-mode-B-SupportIndicator CRITICALITY ignore TYPE CE-mode-B-SupportIndicator PRESENCE optional}, + ... +} + +E-RABAdmittedList ::= E-RAB-IE-ContainerList { {E-RABAdmittedItemIEs} } + +E-RABAdmittedItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABAdmittedItem CRITICALITY ignore TYPE E-RABAdmittedItem PRESENCE mandatory }, + ... +} + +E-RABAdmittedItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + dL-transportLayerAddress TransportLayerAddress OPTIONAL, + dL-gTP-TEID GTP-TEID OPTIONAL, + uL-TransportLayerAddress TransportLayerAddress OPTIONAL, + uL-GTP-TEID GTP-TEID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABAdmittedItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABAdmittedItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +E-RABFailedtoSetupListHOReqAck ::= E-RAB-IE-ContainerList { {E-RABFailedtoSetupItemHOReqAckIEs} } + +E-RABFailedtoSetupItemHOReqAckIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABFailedtoSetupItemHOReqAck CRITICALITY ignore TYPE E-RABFailedToSetupItemHOReqAck PRESENCE mandatory }, + ... +} + +E-RABFailedToSetupItemHOReqAck ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { E-RABFailedToSetupItemHOReqAckExtIEs} } OPTIONAL, + ... +} + +E-RABFailedToSetupItemHOReqAckExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Handover Failure +-- +-- ************************************************************** + +HandoverFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverFailureIEs} }, + ... +} + +HandoverFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER NOTIFICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Handover Notify +-- +-- ************************************************************** + +HandoverNotify ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverNotifyIEs} }, + ... +} + +HandoverNotifyIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory}| +-- Extension for Release 11 to support BBAI -- + { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}| + { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- PATH SWITCH REQUEST ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Path Switch Request +-- +-- ************************************************************** + +PathSwitchRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { PathSwitchRequestIEs} }, + ... +} + +PathSwitchRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABToBeSwitchedDLList CRITICALITY reject TYPE E-RABToBeSwitchedDLList PRESENCE mandatory}| + { ID id-SourceMME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory}| + { ID id-UESecurityCapabilities CRITICALITY ignore TYPE UESecurityCapabilities PRESENCE mandatory}| + { ID id-CSG-Id CRITICALITY ignore TYPE CSG-Id PRESENCE optional}| + { ID id-CellAccessMode CRITICALITY ignore TYPE CellAccessMode PRESENCE optional}| + { ID id-SourceMME-GUMMEI CRITICALITY ignore TYPE GUMMEI PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| +-- Extension for Release 11 to support BBAI -- + { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}| + { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}| + { ID id-RRC-Resume-Cause CRITICALITY ignore TYPE RRC-Establishment-Cause PRESENCE optional }, + ... +} + +E-RABToBeSwitchedDLList ::= E-RAB-IE-ContainerList { {E-RABToBeSwitchedDLItemIEs} } + +E-RABToBeSwitchedDLItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSwitchedDLItem CRITICALITY reject TYPE E-RABToBeSwitchedDLItem PRESENCE mandatory }, + ... +} + +E-RABToBeSwitchedDLItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { E-RABToBeSwitchedDLItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABToBeSwitchedDLItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- Path Switch Request Acknowledge +-- +-- ************************************************************** + +PathSwitchRequestAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { PathSwitchRequestAcknowledgeIEs} }, + ... +} + +PathSwitchRequestAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-uEaggregateMaximumBitrate CRITICALITY ignore TYPE UEAggregateMaximumBitrate PRESENCE optional}| + { ID id-E-RABToBeSwitchedULList CRITICALITY ignore TYPE E-RABToBeSwitchedULList PRESENCE optional}| + { ID id-E-RABToBeReleasedList CRITICALITY ignore TYPE E-RABList PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-MME-UE-S1AP-ID-2 CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| + { ID id-UEUserPlaneCIoTSupportIndicator CRITICALITY ignore TYPE UEUserPlaneCIoTSupportIndicator PRESENCE optional}| + { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| + { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + ... +} + +E-RABToBeSwitchedULList ::= E-RAB-IE-ContainerList { {E-RABToBeSwitchedULItemIEs} } + +E-RABToBeSwitchedULItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSwitchedULItem CRITICALITY ignore TYPE E-RABToBeSwitchedULItem PRESENCE mandatory }, + ... +} + +E-RABToBeSwitchedULItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { E-RABToBeSwitchedULItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABToBeSwitchedULItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Path Switch Request Failure +-- +-- ************************************************************** + +PathSwitchRequestFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { PathSwitchRequestFailureIEs} }, + ... +} + +PathSwitchRequestFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- HANDOVER CANCEL ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Handover Cancel +-- +-- ************************************************************** + +HandoverCancel ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverCancelIEs} }, + ... +} + +HandoverCancelIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Handover Cancel Request Acknowledge +-- +-- ************************************************************** + +HandoverCancelAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { HandoverCancelAcknowledgeIEs} }, + ... +} + +HandoverCancelAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E-RAB SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Setup Request +-- +-- ************************************************************** + +E-RABSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABSetupRequestIEs} }, + ... +} + +E-RABSetupRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE optional }| + { ID id-E-RABToBeSetupListBearerSUReq CRITICALITY reject TYPE E-RABToBeSetupListBearerSUReq PRESENCE mandatory }, + ... +} + +E-RABToBeSetupListBearerSUReq ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABToBeSetupItemBearerSUReqIEs} } + +E-RABToBeSetupItemBearerSUReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSetupItemBearerSUReq CRITICALITY reject TYPE E-RABToBeSetupItemBearerSUReq PRESENCE mandatory }, + ... +} + +E-RABToBeSetupItemBearerSUReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + e-RABlevelQoSParameters E-RABLevelQoSParameters, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + nAS-PDU NAS-PDU, + iE-Extensions ProtocolExtensionContainer { {E-RABToBeSetupItemBearerSUReqExtIEs} } OPTIONAL, + ... +} + + +E-RABToBeSetupItemBearerSUReqExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| + { ID id-SIPTO-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| + { ID id-BearerType CRITICALITY reject EXTENSION BearerType PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- E-RAB Setup Response +-- +-- ************************************************************** + +E-RABSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABSetupResponseIEs} }, + ... +} + +E-RABSetupResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABSetupListBearerSURes CRITICALITY ignore TYPE E-RABSetupListBearerSURes PRESENCE optional }| + { ID id-E-RABFailedToSetupListBearerSURes CRITICALITY ignore TYPE E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +E-RABSetupListBearerSURes ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABSetupItemBearerSUResIEs} } + +E-RABSetupItemBearerSUResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABSetupItemBearerSURes CRITICALITY ignore TYPE E-RABSetupItemBearerSURes PRESENCE mandatory }, + ... +} + +E-RABSetupItemBearerSURes ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { {E-RABSetupItemBearerSUResExtIEs} } OPTIONAL, + ... +} + + +E-RABSetupItemBearerSUResExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +-- ************************************************************** +-- +-- E-RAB MODIFY ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Modify Request +-- +-- ************************************************************** + +E-RABModifyRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABModifyRequestIEs} }, + ... +} + +E-RABModifyRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE optional }| + { ID id-E-RABToBeModifiedListBearerModReq CRITICALITY reject TYPE E-RABToBeModifiedListBearerModReq PRESENCE mandatory }, + ... +} + +E-RABToBeModifiedListBearerModReq ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABToBeModifiedItemBearerModReqIEs} } + +E-RABToBeModifiedItemBearerModReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeModifiedItemBearerModReq CRITICALITY reject TYPE E-RABToBeModifiedItemBearerModReq PRESENCE mandatory }, + ... +} + +E-RABToBeModifiedItemBearerModReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + e-RABLevelQoSParameters E-RABLevelQoSParameters, + nAS-PDU NAS-PDU, + iE-Extensions ProtocolExtensionContainer { {E-RABToBeModifyItemBearerModReqExtIEs} } OPTIONAL, + ... +} + + +E-RABToBeModifyItemBearerModReqExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-TransportInformation CRITICALITY reject EXTENSION TransportInformation PRESENCE optional}, + ... +} + + + +-- ************************************************************** +-- +-- E-RAB Modify Response +-- +-- ************************************************************** + +E-RABModifyResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABModifyResponseIEs} }, + ... +} + +E-RABModifyResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABModifyListBearerModRes CRITICALITY ignore TYPE E-RABModifyListBearerModRes PRESENCE optional }| + { ID id-E-RABFailedToModifyList CRITICALITY ignore TYPE E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +E-RABModifyListBearerModRes ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABModifyItemBearerModResIEs} } + +E-RABModifyItemBearerModResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABModifyItemBearerModRes CRITICALITY ignore TYPE E-RABModifyItemBearerModRes PRESENCE mandatory}, + ... +} + +E-RABModifyItemBearerModRes ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + iE-Extensions ProtocolExtensionContainer { {E-RABModifyItemBearerModResExtIEs} } OPTIONAL, + ... +} + + +E-RABModifyItemBearerModResExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + + +-- ************************************************************** +-- +-- E-RAB RELEASE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Release Command +-- +-- ************************************************************** + +E-RABReleaseCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABReleaseCommandIEs} }, + ... +} + +E-RABReleaseCommandIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE optional }| + { ID id-E-RABToBeReleasedList CRITICALITY ignore TYPE E-RABList PRESENCE mandatory }| + { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE optional }, + ... +} + + +-- ************************************************************** +-- +-- E-RAB Release Response +-- +-- ************************************************************** + +E-RABReleaseResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { E-RABReleaseResponseIEs } }, + ... +} + +E-RABReleaseResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABReleaseListBearerRelComp CRITICALITY ignore TYPE E-RABReleaseListBearerRelComp PRESENCE optional }| + { ID id-E-RABFailedToReleaseList CRITICALITY ignore TYPE E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }| +-- Extension for Release 12 to support User Location Information -- + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + ... +} + + +E-RABReleaseListBearerRelComp ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABReleaseItemBearerRelCompIEs} } + +E-RABReleaseItemBearerRelCompIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABReleaseItemBearerRelComp CRITICALITY ignore TYPE E-RABReleaseItemBearerRelComp PRESENCE mandatory }, + ... +} + +E-RABReleaseItemBearerRelComp ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + iE-Extensions ProtocolExtensionContainer { {E-RABReleaseItemBearerRelCompExtIEs} } OPTIONAL, + ... +} + + +E-RABReleaseItemBearerRelCompExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + + +-- ************************************************************** +-- +-- E-RAB RELEASE INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Release Indication +-- +-- ************************************************************** + +E-RABReleaseIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABReleaseIndicationIEs} }, + ... +} + +E-RABReleaseIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABReleasedList CRITICALITY ignore TYPE E-RABList PRESENCE mandatory }| +-- Extension for Release 12 to support User Location Information -- + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- INITIAL CONTEXT SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Initial Context Setup Request +-- +-- ************************************************************** + +InitialContextSetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialContextSetupRequestIEs} }, + ... +} + +InitialContextSetupRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-uEaggregateMaximumBitrate CRITICALITY reject TYPE UEAggregateMaximumBitrate PRESENCE mandatory}| + { ID id-E-RABToBeSetupListCtxtSUReq CRITICALITY reject TYPE E-RABToBeSetupListCtxtSUReq PRESENCE mandatory}| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE mandatory}| + { ID id-SecurityKey CRITICALITY reject TYPE SecurityKey PRESENCE mandatory}| + { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE optional}| + { ID id-HandoverRestrictionList CRITICALITY ignore TYPE HandoverRestrictionList PRESENCE optional}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional}| + { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE SubscriberProfileIDforRFP PRESENCE optional}| + { ID id-CSFallbackIndicator CRITICALITY reject TYPE CSFallbackIndicator PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-RegisteredLAI CRITICALITY ignore TYPE LAI PRESENCE optional}| + { ID id-GUMMEI-ID CRITICALITY ignore TYPE GUMMEI PRESENCE optional}| + { ID id-MME-UE-S1AP-ID-2 CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional}| + { ID id-ManagementBasedMDTAllowed CRITICALITY ignore TYPE ManagementBasedMDTAllowed PRESENCE optional}| + { ID id-ManagementBasedMDTPLMNList CRITICALITY ignore TYPE MDTPLMNList PRESENCE optional}| + { ID id-AdditionalCSFallbackIndicator CRITICALITY ignore TYPE AdditionalCSFallbackIndicator PRESENCE conditional}| + { ID id-Masked-IMEISV CRITICALITY ignore TYPE Masked-IMEISV PRESENCE optional}| + { ID id-ExpectedUEBehaviour CRITICALITY ignore TYPE ExpectedUEBehaviour PRESENCE optional}| + { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| + { ID id-UEUserPlaneCIoTSupportIndicator CRITICALITY ignore TYPE UEUserPlaneCIoTSupportIndicator PRESENCE optional}| + { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| + { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + ... +} + + + + +E-RABToBeSetupListCtxtSUReq ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABToBeSetupItemCtxtSUReqIEs} } + +E-RABToBeSetupItemCtxtSUReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeSetupItemCtxtSUReq CRITICALITY reject TYPE E-RABToBeSetupItemCtxtSUReq PRESENCE mandatory }, + ... +} + +E-RABToBeSetupItemCtxtSUReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + e-RABlevelQoSParameters E-RABLevelQoSParameters, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + nAS-PDU NAS-PDU OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABToBeSetupItemCtxtSUReqExtIEs} } OPTIONAL, + ... +} + + +E-RABToBeSetupItemCtxtSUReqExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| + { ID id-SIPTO-Correlation-ID CRITICALITY ignore EXTENSION Correlation-ID PRESENCE optional}| + { ID id-BearerType CRITICALITY reject EXTENSION BearerType PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- Initial Context Setup Response +-- +-- ************************************************************** + +InitialContextSetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialContextSetupResponseIEs} }, + ... +} + +InitialContextSetupResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABSetupListCtxtSURes CRITICALITY ignore TYPE E-RABSetupListCtxtSURes PRESENCE mandatory }| + { ID id-E-RABFailedToSetupListCtxtSURes CRITICALITY ignore TYPE E-RABList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + + +E-RABSetupListCtxtSURes ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABSetupItemCtxtSUResIEs} } + +E-RABSetupItemCtxtSUResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABSetupItemCtxtSURes CRITICALITY ignore TYPE E-RABSetupItemCtxtSURes PRESENCE mandatory }, + ... +} + +E-RABSetupItemCtxtSURes ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + gTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { {E-RABSetupItemCtxtSUResExtIEs} } OPTIONAL, + ... +} + + +E-RABSetupItemCtxtSUResExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- Initial Context Setup Failure +-- +-- ************************************************************** + +InitialContextSetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {InitialContextSetupFailureIEs} }, + ... +} + +InitialContextSetupFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PAGING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + + +-- ************************************************************** +-- +-- Paging +-- +-- ************************************************************** + +Paging ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{PagingIEs}}, + ... +} + +PagingIEs S1AP-PROTOCOL-IES ::= { + { ID id-UEIdentityIndexValue CRITICALITY ignore TYPE UEIdentityIndexValue PRESENCE mandatory}| + { ID id-UEPagingID CRITICALITY ignore TYPE UEPagingID PRESENCE mandatory}| + { ID id-pagingDRX CRITICALITY ignore TYPE PagingDRX PRESENCE optional}| + { ID id-CNDomain CRITICALITY ignore TYPE CNDomain PRESENCE mandatory}| + { ID id-TAIList CRITICALITY ignore TYPE TAIList PRESENCE mandatory}| + { ID id-CSG-IdList CRITICALITY ignore TYPE CSG-IdList PRESENCE optional}| + { ID id-PagingPriority CRITICALITY ignore TYPE PagingPriority PRESENCE optional}| + { ID id-UERadioCapabilityForPaging CRITICALITY ignore TYPE UERadioCapabilityForPaging PRESENCE optional}| +-- Extension for Release 13 to support Paging Optimisation and Coverage Enhancement paging -- + { ID id-AssistanceDataForPaging CRITICALITY ignore TYPE AssistanceDataForPaging PRESENCE optional}| + { ID id-Paging-eDRXInformation CRITICALITY ignore TYPE Paging-eDRXInformation PRESENCE optional}| + { ID id-extended-UEIdentityIndexValue CRITICALITY ignore TYPE Extended-UEIdentityIndexValue PRESENCE optional}| + { ID id-NB-IoT-Paging-eDRXInformation CRITICALITY ignore TYPE NB-IoT-Paging-eDRXInformation PRESENCE optional}| + { ID id-NB-IoT-UEIdentityIndexValue CRITICALITY ignore TYPE NB-IoT-UEIdentityIndexValue PRESENCE optional}, + ... +} + +TAIList::= SEQUENCE (SIZE(1.. maxnoofTAIs)) OF ProtocolIE-SingleContainer {{TAIItemIEs}} + +TAIItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-TAIItem CRITICALITY ignore TYPE TAIItem PRESENCE mandatory }, + ... +} + +TAIItem ::= SEQUENCE { + tAI TAI, + iE-Extensions ProtocolExtensionContainer { {TAIItemExtIEs} } OPTIONAL, + ... +} + + +TAIItemExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT RELEASE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Release Request +-- +-- ************************************************************** + +UEContextReleaseRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UEContextReleaseRequest-IEs}}, + ... +} + +UEContextReleaseRequest-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-GWContextReleaseIndication CRITICALITY reject TYPE GWContextReleaseIndication PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Context Release Command +-- +-- ************************************************************** + +UEContextReleaseCommand ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UEContextReleaseCommand-IEs}}, + ... +} + +UEContextReleaseCommand-IEs S1AP-PROTOCOL-IES ::= { + { ID id-UE-S1AP-IDs CRITICALITY reject TYPE UE-S1AP-IDs PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UE Context Release Complete +-- +-- ************************************************************** + +UEContextReleaseComplete ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UEContextReleaseComplete-IEs}}, + ... +} + +UEContextReleaseComplete-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| +-- Extension for Release 12 to support User Location Information -- + { ID id-UserLocationInformation CRITICALITY ignore TYPE UserLocationInformation PRESENCE optional}| +-- Extension for Release 13 to support Paging Optimisation + { ID id-InformationOnRecommendedCellsAndENBsForPaging CRITICALITY ignore TYPE InformationOnRecommendedCellsAndENBsForPaging PRESENCE optional}| +-- Extension for Release 13 to support coverage enhancement paging - + { ID id-CellIdentifierAndCELevelForCECapableUEs CRITICALITY ignore TYPE CellIdentifierAndCELevelForCECapableUEs PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Modification Request +-- +-- ************************************************************** + +UEContextModificationRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationRequestIEs} }, + ... +} + +UEContextModificationRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-SecurityKey CRITICALITY reject TYPE SecurityKey PRESENCE optional}| + { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE SubscriberProfileIDforRFP PRESENCE optional}| + { ID id-uEaggregateMaximumBitrate CRITICALITY ignore TYPE UEAggregateMaximumBitrate PRESENCE optional}| + { ID id-CSFallbackIndicator CRITICALITY reject TYPE CSFallbackIndicator PRESENCE optional}| + { ID id-UESecurityCapabilities CRITICALITY reject TYPE UESecurityCapabilities PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-RegisteredLAI CRITICALITY ignore TYPE LAI PRESENCE optional}| + { ID id-AdditionalCSFallbackIndicator CRITICALITY ignore TYPE AdditionalCSFallbackIndicator PRESENCE conditional}| + { ID id-ProSeAuthorized CRITICALITY ignore TYPE ProSeAuthorized PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| + { ID id-SRVCCOperationNotPossible CRITICALITY ignore TYPE SRVCCOperationNotPossible PRESENCE optional}| + { ID id-V2XServicesAuthorized CRITICALITY ignore TYPE V2XServicesAuthorized PRESENCE optional}| + { ID id-UESidelinkAggregateMaximumBitrate CRITICALITY ignore TYPE UESidelinkAggregateMaximumBitrate PRESENCE optional}, + ... +} +-- ************************************************************** +-- +-- UE Context Modification Response +-- +-- ************************************************************** + +UEContextModificationResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationResponseIEs} }, + ... +} + +UEContextModificationResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- UE Context Modification Failure +-- +-- ************************************************************** + +UEContextModificationFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationFailureIEs} }, + ... +} + +UEContextModificationFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE RADIO CAPABILITY MATCH ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Radio Capability Match Request +-- +-- ************************************************************** + +UERadioCapabilityMatchRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UERadioCapabilityMatchRequestIEs} }, + ... +} + +UERadioCapabilityMatchRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- UE Radio Capability Match Response +-- +-- ************************************************************** + +UERadioCapabilityMatchResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UERadioCapabilityMatchResponseIEs} }, + ... +} + +UERadioCapabilityMatchResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-VoiceSupportMatchIndicator CRITICALITY reject TYPE VoiceSupportMatchIndicator PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- NAS TRANSPORT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DOWNLINK NAS TRANSPORT +-- +-- ************************************************************** + +DownlinkNASTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{DownlinkNASTransport-IEs}}, + ... +} + +DownlinkNASTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE mandatory}| + { ID id-HandoverRestrictionList CRITICALITY ignore TYPE HandoverRestrictionList PRESENCE optional}| + { ID id-SubscriberProfileIDforRFP CRITICALITY ignore TYPE SubscriberProfileIDforRFP PRESENCE optional}| + { ID id-SRVCCOperationPossible CRITICALITY ignore TYPE SRVCCOperationPossible PRESENCE optional}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional}| + { ID id-DLNASPDUDeliveryAckRequest CRITICALITY ignore TYPE DLNASPDUDeliveryAckRequest PRESENCE optional}| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- INITIAL UE MESSAGE +-- +-- ************************************************************** + +InitialUEMessage ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{InitialUEMessage-IEs}}, + ... +} + +InitialUEMessage-IEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE mandatory}| + { ID id-TAI CRITICALITY reject TYPE TAI PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-RRC-Establishment-Cause CRITICALITY ignore TYPE RRC-Establishment-Cause PRESENCE mandatory}| + { ID id-S-TMSI CRITICALITY reject TYPE S-TMSI PRESENCE optional}| + { ID id-CSG-Id CRITICALITY reject TYPE CSG-Id PRESENCE optional}| + { ID id-GUMMEI-ID CRITICALITY reject TYPE GUMMEI PRESENCE optional}| + { ID id-CellAccessMode CRITICALITY reject TYPE CellAccessMode PRESENCE optional}| + { ID id-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| + { ID id-RelayNode-Indicator CRITICALITY reject TYPE RelayNode-Indicator PRESENCE optional}| + { ID id-GUMMEIType CRITICALITY ignore TYPE GUMMEIType PRESENCE optional}| +-- Extension for Release 11 to support BBAI -- + { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}| + { ID id-SIPTO-L-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| + { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}| + { ID id-MME-Group-ID CRITICALITY ignore TYPE MME-Group-ID PRESENCE optional}| + { ID id-UE-Usage-Type CRITICALITY ignore TYPE UE-Usage-Type PRESENCE optional}| + { ID id-CE-mode-B-SupportIndicator CRITICALITY ignore TYPE CE-mode-B-SupportIndicator PRESENCE optional}| + { ID id-DCN-ID CRITICALITY ignore TYPE DCN-ID PRESENCE optional}| + { ID id-Coverage-Level CRITICALITY ignore TYPE Coverage-Level PRESENCE optional}, + + ... +} + + +-- ************************************************************** +-- +-- UPLINK NAS TRANSPORT +-- +-- ************************************************************** + +UplinkNASTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UplinkNASTransport-IEs}}, + ... +} + +UplinkNASTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-NAS-PDU CRITICALITY reject TYPE NAS-PDU PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory}| + { ID id-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| + { ID id-SIPTO-L-GW-TransportLayerAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE optional}| + { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}, + ... +} +-- ************************************************************** +-- +-- NAS NON DELIVERY INDICATION +-- +-- ************************************************************** + +NASNonDeliveryIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{NASNonDeliveryIndication-IEs}}, + ... +} + +NASNonDeliveryIndication-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-NAS-PDU CRITICALITY ignore TYPE NAS-PDU PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- REROUTE NAS REQUEST +-- +-- ************************************************************** + +RerouteNASRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RerouteNASRequest-IEs}}, + ... +} + +RerouteNASRequest-IEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional}| + { ID id-S1-Message CRITICALITY reject TYPE OCTET STRING PRESENCE mandatory}| + { ID id-MME-Group-ID CRITICALITY reject TYPE MME-Group-ID PRESENCE mandatory}| + { ID id-Additional-GUTI CRITICALITY ignore TYPE Additional-GUTI PRESENCE optional}| + { ID id-UE-Usage-Type CRITICALITY ignore TYPE UE-Usage-Type PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- NAS DELIVERY INDICATION +-- +-- ************************************************************** + +NASDeliveryIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { NASDeliveryIndicationIEs} }, + ... +} + +NASDeliveryIndicationIEs S1AP-PROTOCOL-IES ::= { + ... +} + +-- ************************************************************** +-- +-- RESET ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Reset +-- +-- ************************************************************** + +Reset ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetIEs} }, + ... +} + +ResetIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-ResetType CRITICALITY reject TYPE ResetType PRESENCE mandatory }, + ... +} + +ResetType ::= CHOICE { + s1-Interface ResetAll, + partOfS1-Interface UE-associatedLogicalS1-ConnectionListRes, + ... +} + + + +ResetAll ::= ENUMERATED { + reset-all, + ... +} + +UE-associatedLogicalS1-ConnectionListRes ::= SEQUENCE (SIZE(1.. maxnoofIndividualS1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalS1-ConnectionItemRes } } + +UE-associatedLogicalS1-ConnectionItemRes S1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalS1-ConnectionItem CRITICALITY reject TYPE UE-associatedLogicalS1-ConnectionItem PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- Reset Acknowledge +-- +-- ************************************************************** + +ResetAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetAcknowledgeIEs} }, + ... +} + +ResetAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalS1-ConnectionListResAck CRITICALITY ignore TYPE UE-associatedLogicalS1-ConnectionListResAck PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +UE-associatedLogicalS1-ConnectionListResAck ::= SEQUENCE (SIZE(1.. maxnoofIndividualS1ConnectionsToReset)) OF ProtocolIE-SingleContainer { { UE-associatedLogicalS1-ConnectionItemResAck } } + +UE-associatedLogicalS1-ConnectionItemResAck S1AP-PROTOCOL-IES ::= { + { ID id-UE-associatedLogicalS1-ConnectionItem CRITICALITY ignore TYPE UE-associatedLogicalS1-ConnectionItem PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- ERROR INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Error Indication +-- +-- ************************************************************** + +ErrorIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ErrorIndicationIEs}}, + ... +} + +ErrorIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE optional }| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- S1 SETUP ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- S1 Setup Request +-- +-- ************************************************************** + +S1SetupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {S1SetupRequestIEs} }, + ... +} + +S1SetupRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-Global-ENB-ID CRITICALITY reject TYPE Global-ENB-ID PRESENCE mandatory}| + { ID id-eNBname CRITICALITY ignore TYPE ENBname PRESENCE optional}| + { ID id-SupportedTAs CRITICALITY reject TYPE SupportedTAs PRESENCE mandatory}| + { ID id-DefaultPagingDRX CRITICALITY ignore TYPE PagingDRX PRESENCE mandatory}| + { ID id-CSG-IdList CRITICALITY reject TYPE CSG-IdList PRESENCE optional}| + { ID id-UE-RetentionInformation CRITICALITY ignore TYPE UE-RetentionInformation PRESENCE optional}| + { ID id-NB-IoT-DefaultPagingDRX CRITICALITY ignore TYPE NB-IoT-DefaultPagingDRX PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- S1 Setup Response +-- +-- ************************************************************** + +S1SetupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {S1SetupResponseIEs} }, + ... +} + + +S1SetupResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MMEname CRITICALITY ignore TYPE MMEname PRESENCE optional}| + { ID id-ServedGUMMEIs CRITICALITY reject TYPE ServedGUMMEIs PRESENCE mandatory}| + { ID id-RelativeMMECapacity CRITICALITY ignore TYPE RelativeMMECapacity PRESENCE mandatory}| + { ID id-MMERelaySupportIndicator CRITICALITY ignore TYPE MMERelaySupportIndicator PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-UE-RetentionInformation CRITICALITY ignore TYPE UE-RetentionInformation PRESENCE optional}| + { ID id-ServedDCNs CRITICALITY ignore TYPE ServedDCNs PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- S1 Setup Failure +-- +-- ************************************************************** + +S1SetupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {S1SetupFailureIEs} }, + ... +} + +S1SetupFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- ENB CONFIGURATION UPDATE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- eNB Configuration Update +-- +-- ************************************************************** + +ENBConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ENBConfigurationUpdateIEs} }, + ... +} + +ENBConfigurationUpdateIEs S1AP-PROTOCOL-IES ::= { + { ID id-eNBname CRITICALITY ignore TYPE ENBname PRESENCE optional}| + { ID id-SupportedTAs CRITICALITY reject TYPE SupportedTAs PRESENCE optional}| + { ID id-CSG-IdList CRITICALITY reject TYPE CSG-IdList PRESENCE optional}| + { ID id-DefaultPagingDRX CRITICALITY ignore TYPE PagingDRX PRESENCE optional}| + { ID id-NB-IoT-DefaultPagingDRX CRITICALITY ignore TYPE NB-IoT-DefaultPagingDRX PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- eNB Configuration Update Acknowledge +-- +-- ************************************************************** + +ENBConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ENBConfigurationUpdateAcknowledgeIEs} }, + ... +} + + +ENBConfigurationUpdateAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- eNB Configuration Update Failure +-- +-- ************************************************************** + +ENBConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ENBConfigurationUpdateFailureIEs} }, + ... +} + +ENBConfigurationUpdateFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, +... +} + + +-- ************************************************************** +-- +-- MME CONFIGURATION UPDATE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MME Configuration Update +-- +-- ************************************************************** + +MMEConfigurationUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MMEConfigurationUpdateIEs} }, + ... +} + +MMEConfigurationUpdateIEs S1AP-PROTOCOL-IES ::= { + { ID id-MMEname CRITICALITY ignore TYPE MMEname PRESENCE optional }| + { ID id-ServedGUMMEIs CRITICALITY reject TYPE ServedGUMMEIs PRESENCE optional }| + { ID id-RelativeMMECapacity CRITICALITY reject TYPE RelativeMMECapacity PRESENCE optional }| + { ID id-ServedDCNs CRITICALITY ignore TYPE ServedDCNs PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- MME Configuration Update Acknowledge +-- +-- ************************************************************** + +MMEConfigurationUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MMEConfigurationUpdateAcknowledgeIEs} }, + ... +} + + +MMEConfigurationUpdateAcknowledgeIEs S1AP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MME Configuration Update Failure +-- +-- ************************************************************** + +MMEConfigurationUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MMEConfigurationUpdateFailureIEs} }, + ... +} + +MMEConfigurationUpdateFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- DOWNLINK S1 CDMA2000 TUNNELLING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Downlink S1 CDMA2000 Tunnelling +-- +-- ************************************************************** + +DownlinkS1cdma2000tunnelling ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {DownlinkS1cdma2000tunnellingIEs} }, + ... +} + +DownlinkS1cdma2000tunnellingIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-RABSubjecttoDataForwardingList CRITICALITY ignore TYPE E-RABSubjecttoDataForwardingList PRESENCE optional }| + { ID id-cdma2000HOStatus CRITICALITY ignore TYPE Cdma2000HOStatus PRESENCE optional }| + { ID id-cdma2000RATType CRITICALITY reject TYPE Cdma2000RATType PRESENCE mandatory }| + { ID id-cdma2000PDU CRITICALITY reject TYPE Cdma2000PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UPLINK S1 CDMA2000 TUNNELLING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Uplink S1 CDMA2000 Tunnelling +-- +-- ************************************************************** + +UplinkS1cdma2000tunnelling ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UplinkS1cdma2000tunnellingIEs} }, + ... +} + +UplinkS1cdma2000tunnellingIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-cdma2000RATType CRITICALITY reject TYPE Cdma2000RATType PRESENCE mandatory }| + { ID id-cdma2000SectorID CRITICALITY reject TYPE Cdma2000SectorID PRESENCE mandatory }| + { ID id-cdma2000HORequiredIndication CRITICALITY ignore TYPE Cdma2000HORequiredIndication PRESENCE optional }| + { ID id-cdma2000OneXSRVCCInfo CRITICALITY reject TYPE Cdma2000OneXSRVCCInfo PRESENCE optional }| + { ID id-cdma2000OneXRAND CRITICALITY reject TYPE Cdma2000OneXRAND PRESENCE optional }| + { ID id-cdma2000PDU CRITICALITY reject TYPE Cdma2000PDU PRESENCE mandatory }| + { ID id-EUTRANRoundTripDelayEstimationInfo CRITICALITY ignore TYPE EUTRANRoundTripDelayEstimationInfo PRESENCE optional }, + -- Extension for Release 9 to assist target HRPD access with the acquisition of the UE -- + ... +} + + +-- ************************************************************** +-- +-- UE CAPABILITY INFO INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Capability Info Indication +-- +-- ************************************************************** + +UECapabilityInfoIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UECapabilityInfoIndicationIEs} }, + ... +} + +UECapabilityInfoIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE mandatory}| + { ID id-UERadioCapabilityForPaging CRITICALITY ignore TYPE UERadioCapabilityForPaging PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- eNB STATUS TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- eNB Status Transfer +-- +-- ************************************************************** + +ENBStatusTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ENBStatusTransferIEs} }, + ... +} + +ENBStatusTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-StatusTransfer-TransparentContainer CRITICALITY reject TYPE ENB-StatusTransfer-TransparentContainer PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- MME STATUS TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MME Status Transfer +-- +-- ************************************************************** + +MMEStatusTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {MMEStatusTransferIEs} }, + ... +} + +MMEStatusTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-StatusTransfer-TransparentContainer CRITICALITY reject TYPE ENB-StatusTransfer-TransparentContainer PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- TRACE ELEMENTARY PROCEDURES +-- +-- ************************************************************** +-- ************************************************************** +-- +-- Trace Start +-- +-- ************************************************************** + +TraceStart ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {TraceStartIEs} }, + ... +} + +TraceStartIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-TraceActivation CRITICALITY ignore TYPE TraceActivation PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Trace Failure Indication +-- +-- ************************************************************** + +TraceFailureIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {TraceFailureIndicationIEs} }, + ... +} + +TraceFailureIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-UTRAN-Trace-ID CRITICALITY ignore TYPE E-UTRAN-Trace-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- DEACTIVATE TRACE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Deactivate Trace +-- +-- ************************************************************** + +DeactivateTrace ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { DeactivateTraceIEs} }, + ... +} + +DeactivateTraceIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-E-UTRAN-Trace-ID CRITICALITY ignore TYPE E-UTRAN-Trace-ID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- CELL TRAFFIC TRACE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Cell Traffic Trace +-- +-- ************************************************************** + +CellTrafficTrace ::= SEQUENCE { +protocolIEs ProtocolIE-Container { { CellTrafficTraceIEs } }, +... +} + +CellTrafficTraceIEs S1AP-PROTOCOL-IES ::= { + {ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + {ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + {ID id-E-UTRAN-Trace-ID CRITICALITY ignore TYPE E-UTRAN-Trace-ID PRESENCE mandatory }| + {ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory }| + {ID id-TraceCollectionEntityIPAddress CRITICALITY ignore TYPE TransportLayerAddress PRESENCE mandatory }| + {ID id-PrivacyIndicator CRITICALITY ignore TYPE PrivacyIndicator PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- LOCATION ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Location Reporting Control +-- +-- ************************************************************** + +LocationReportingControl ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { LocationReportingControlIEs} }, + ... +} + +LocationReportingControlIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-RequestType CRITICALITY ignore TYPE RequestType PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Location Report Failure Indication +-- +-- ************************************************************** + +LocationReportingFailureIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { LocationReportingFailureIndicationIEs} }, + ... +} + +LocationReportingFailureIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- Location Report +-- +-- ************************************************************** + +LocationReport ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { LocationReportIEs} }, + ... +} + +LocationReportIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory }| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory }| + { ID id-RequestType CRITICALITY ignore TYPE RequestType PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- OVERLOAD ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Overload Start +-- +-- ************************************************************** + +OverloadStart ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {OverloadStartIEs} }, + ... +} + +OverloadStartIEs S1AP-PROTOCOL-IES ::= { + { ID id-OverloadResponse CRITICALITY reject TYPE OverloadResponse PRESENCE mandatory }| + { ID id-GUMMEIList CRITICALITY ignore TYPE GUMMEIList PRESENCE optional }| + { ID id-TrafficLoadReductionIndication CRITICALITY ignore TYPE TrafficLoadReductionIndication PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- Overload Stop +-- +-- ************************************************************** + +OverloadStop ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {OverloadStopIEs} }, + ... +} + +OverloadStopIEs S1AP-PROTOCOL-IES ::= { +{ ID id-GUMMEIList CRITICALITY ignore TYPE GUMMEIList PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- WRITE-REPLACE WARNING ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Write-Replace Warning Request +-- +-- ************************************************************** + + +WriteReplaceWarningRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {WriteReplaceWarningRequestIEs} }, + ... +} + +WriteReplaceWarningRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-WarningAreaList CRITICALITY ignore TYPE WarningAreaList PRESENCE optional }| + { ID id-RepetitionPeriod CRITICALITY reject TYPE RepetitionPeriod PRESENCE mandatory }| + { ID id-ExtendedRepetitionPeriod CRITICALITY reject TYPE ExtendedRepetitionPeriod PRESENCE optional }| + { ID id-NumberofBroadcastRequest CRITICALITY reject TYPE NumberofBroadcastRequest PRESENCE mandatory }| + { ID id-WarningType CRITICALITY ignore TYPE WarningType PRESENCE optional }| + { ID id-WarningSecurityInfo CRITICALITY ignore TYPE WarningSecurityInfo PRESENCE optional }| + { ID id-DataCodingScheme CRITICALITY ignore TYPE DataCodingScheme PRESENCE optional }| + { ID id-WarningMessageContents CRITICALITY ignore TYPE WarningMessageContents PRESENCE optional }| + { ID id-ConcurrentWarningMessageIndicator CRITICALITY reject TYPE ConcurrentWarningMessageIndicator PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- Write-Replace Warning Response +-- +-- ************************************************************** + +WriteReplaceWarningResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {WriteReplaceWarningResponseIEs} }, + ... +} + +WriteReplaceWarningResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-BroadcastCompletedAreaList CRITICALITY ignore TYPE BroadcastCompletedAreaList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- eNB DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- eNB Direct Information Transfer +-- +-- ************************************************************** + +ENBDirectInformationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ ENBDirectInformationTransferIEs}}, + ... +} + +ENBDirectInformationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-Inter-SystemInformationTransferTypeEDT CRITICALITY reject TYPE Inter-SystemInformationTransferType PRESENCE mandatory }, + ... +} + +Inter-SystemInformationTransferType ::= CHOICE { + rIMTransfer RIMTransfer, + ... +} + +-- ************************************************************** +-- +-- MME DIRECT INFORMATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MME Direct Information Transfer +-- +-- ************************************************************** + +MMEDirectInformationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ MMEDirectInformationTransferIEs}}, + ... +} + +MMEDirectInformationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-Inter-SystemInformationTransferTypeMDT CRITICALITY reject TYPE Inter-SystemInformationTransferType PRESENCE mandatory }, + ... +} +-- ************************************************************** +-- +-- eNB CONFIGURATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- eNB Configuration Transfer +-- +-- ************************************************************** + +ENBConfigurationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ ENBConfigurationTransferIEs}}, + ... +} + +ENBConfigurationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-SONConfigurationTransferECT CRITICALITY ignore TYPE SONConfigurationTransfer PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MME CONFIGURATION TRANSFER ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- MME Configuration Transfer +-- +-- ************************************************************** + +MMEConfigurationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ MMEConfigurationTransferIEs}}, + ... +} + +MMEConfigurationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-SONConfigurationTransferMCT CRITICALITY ignore TYPE SONConfigurationTransfer PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PRIVATE MESSAGE ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Private Message +-- +-- ************************************************************** + +PrivateMessage ::= SEQUENCE { + privateIEs PrivateIE-Container {{PrivateMessageIEs}}, + ... +} + +PrivateMessageIEs S1AP-PRIVATE-IES ::= { + ... +} + +-- ************************************************************** +-- +-- KILL PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Kill Request +-- +-- ************************************************************** + + +KillRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {KillRequestIEs} }, + ... +} + +KillRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory}| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory}| + { ID id-WarningAreaList CRITICALITY ignore TYPE WarningAreaList PRESENCE optional}| + { ID id-KillAllWarningMessages CRITICALITY reject TYPE KillAllWarningMessages PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- Kill Response +-- +-- ************************************************************** + +KillResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {KillResponseIEs} }, + ... +} + +KillResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MessageIdentifier CRITICALITY reject TYPE MessageIdentifier PRESENCE mandatory }| + { ID id-SerialNumber CRITICALITY reject TYPE SerialNumber PRESENCE mandatory }| + { ID id-BroadcastCancelledAreaList CRITICALITY ignore TYPE BroadcastCancelledAreaList PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- PWS RESTART INDICATION PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- PWS Restart Indication +-- +-- ************************************************************** + +PWSRestartIndication::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ PWSRestartIndicationIEs}}, + ... +} + +PWSRestartIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-ECGIListForRestart CRITICALITY reject TYPE ECGIListForRestart PRESENCE mandatory}| + { ID id-Global-ENB-ID CRITICALITY reject TYPE Global-ENB-ID PRESENCE mandatory}| + { ID id-TAIListForRestart CRITICALITY reject TYPE TAIListForRestart PRESENCE mandatory}| + { ID id-EmergencyAreaIDListForRestart CRITICALITY reject TYPE EmergencyAreaIDListForRestart PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- PWS Failure Indication +-- +-- ************************************************************** + +PWSFailureIndication::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ PWSFailureIndicationIEs}}, + ... +} + +PWSFailureIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-PWSfailedECGIList CRITICALITY reject TYPE PWSfailedECGIList PRESENCE mandatory}| + { ID id-Global-ENB-ID CRITICALITY reject TYPE Global-ENB-ID PRESENCE mandatory}, + ... +} + +-- ************************************************************** +-- +-- LPPA TRANSPORT ELEMENTARY PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- DOWNLINK UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + +DownlinkUEAssociatedLPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{DownlinkUEAssociatedLPPaTransport-IEs}}, + ... +} + +DownlinkUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Routing-ID CRITICALITY reject TYPE Routing-ID PRESENCE mandatory }| + { ID id-LPPa-PDU CRITICALITY reject TYPE LPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UPLINK UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + +UplinkUEAssociatedLPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UplinkUEAssociatedLPPaTransport-IEs}}, + ... +} + +UplinkUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory }| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory }| + { ID id-Routing-ID CRITICALITY reject TYPE Routing-ID PRESENCE mandatory }| + { ID id-LPPa-PDU CRITICALITY reject TYPE LPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- DOWNLINK NON UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + +DownlinkNonUEAssociatedLPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{DownlinkNonUEAssociatedLPPaTransport-IEs}}, + ... +} + +DownlinkNonUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-Routing-ID CRITICALITY reject TYPE Routing-ID PRESENCE mandatory }| + { ID id-LPPa-PDU CRITICALITY reject TYPE LPPa-PDU PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- UPLINK NON UE ASSOCIATED LPPA TRANSPORT +-- +-- ************************************************************** + +UplinkNonUEAssociatedLPPaTransport ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{UplinkNonUEAssociatedLPPaTransport-IEs}}, + ... +} + +UplinkNonUEAssociatedLPPaTransport-IEs S1AP-PROTOCOL-IES ::= { + { ID id-Routing-ID CRITICALITY reject TYPE Routing-ID PRESENCE mandatory }| + { ID id-LPPa-PDU CRITICALITY reject TYPE LPPa-PDU PRESENCE mandatory }, + ... +} + + +-- ************************************************************** +-- +-- E-RAB MODIFICATION INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- E-RAB Modification Indication +-- +-- ************************************************************** + +E-RABModificationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { E-RABModificationIndicationIEs} }, + ... +} + +E-RABModificationIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABToBeModifiedListBearerModInd CRITICALITY reject TYPE E-RABToBeModifiedListBearerModInd PRESENCE mandatory}| + { ID id-E-RABNotToBeModifiedListBearerModInd CRITICALITY reject TYPE E-RABNotToBeModifiedListBearerModInd PRESENCE optional}| + { ID id-CSGMembershipInfo CRITICALITY reject TYPE CSGMembershipInfo PRESENCE optional}| +-- Extension for Release 11 to support BBAI -- + { ID id-Tunnel-Information-for-BBF CRITICALITY ignore TYPE TunnelInformation PRESENCE optional}, + ... +} + +E-RABToBeModifiedListBearerModInd ::= E-RAB-IE-ContainerList { {E-RABToBeModifiedItemBearerModIndIEs} } + +E-RABToBeModifiedItemBearerModIndIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABToBeModifiedItemBearerModInd CRITICALITY reject TYPE E-RABToBeModifiedItemBearerModInd PRESENCE mandatory}, + ... +} + +E-RABToBeModifiedItemBearerModInd ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + dL-GTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { E-RABToBeModifiedItemBearerModInd-ExtIEs} } OPTIONAL, + ... +} + +E-RABToBeModifiedItemBearerModInd-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +E-RABNotToBeModifiedListBearerModInd ::= E-RAB-IE-ContainerList { {E-RABNotToBeModifiedItemBearerModIndIEs} } + +E-RABNotToBeModifiedItemBearerModIndIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABNotToBeModifiedItemBearerModInd CRITICALITY reject TYPE E-RABNotToBeModifiedItemBearerModInd PRESENCE mandatory}, + ... +} + +E-RABNotToBeModifiedItemBearerModInd ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + transportLayerAddress TransportLayerAddress, + dL-GTP-TEID GTP-TEID, + iE-Extensions ProtocolExtensionContainer { { E-RABNotToBeModifiedItemBearerModInd-ExtIEs} } OPTIONAL, + ... +} + +E-RABNotToBeModifiedItemBearerModInd-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CSGMembershipInfo ::= SEQUENCE { + cSGMembershipStatus CSGMembershipStatus, + cSG-Id CSG-Id, + cellAccessMode CellAccessMode OPTIONAL, + pLMNidentity PLMNidentity OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { CSGMembershipInfo-ExtIEs} } OPTIONAL, + ... +} + +CSGMembershipInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- E-RAB Modification Confirm +-- +-- ************************************************************** + +E-RABModificationConfirm ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E-RABModificationConfirmIEs} }, + ... +} + +E-RABModificationConfirmIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABModifyListBearerModConf CRITICALITY ignore TYPE E-RABModifyListBearerModConf PRESENCE optional}| + { ID id-E-RABFailedToModifyListBearerModConf CRITICALITY ignore TYPE E-RABList PRESENCE optional}| + { ID id-E-RABToBeReleasedListBearerModConf CRITICALITY ignore TYPE E-RABList PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}, + ... +} + +E-RABModifyListBearerModConf ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABModifyItemBearerModConfIEs} } + +E-RABModifyItemBearerModConfIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABModifyItemBearerModConf CRITICALITY ignore TYPE E-RABModifyItemBearerModConf PRESENCE mandatory}, + ... +} + +E-RABModifyItemBearerModConf ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + iE-Extensions ProtocolExtensionContainer { {E-RABModifyItemBearerModConfExtIEs} } OPTIONAL, + ... +} + + +E-RABModifyItemBearerModConfExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- ************************************************************** +-- +-- UE CONTEXT MODIFICATION INDICATION ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Modification Indication +-- +-- ************************************************************** + +UEContextModificationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextModificationIndicationIEs} }, + ... +} + +UEContextModificationIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-CSGMembershipInfo CRITICALITY reject TYPE CSGMembershipInfo PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- UE Context Modification Confirm +-- +-- ************************************************************** + +UEContextModificationConfirm ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextModificationConfirmIEs} }, + ... +} + +UEContextModificationConfirmIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-CSGMembershipStatus CRITICALITY ignore TYPE CSGMembershipStatus PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT SUSPEND ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Suspend Request +-- +-- ************************************************************** + +UEContextSuspendRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextSuspendRequestIEs} }, + ... +} + +UEContextSuspendRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-InformationOnRecommendedCellsAndENBsForPaging CRITICALITY ignore TYPE InformationOnRecommendedCellsAndENBsForPaging PRESENCE optional}| + { ID id-CellIdentifierAndCELevelForCECapableUEs CRITICALITY ignore TYPE CellIdentifierAndCELevelForCECapableUEs PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UE Context Suspend Response +-- +-- ************************************************************** + +UEContextSuspendResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {UEContextSuspendResponseIEs} }, + ... +} + +UEContextSuspendResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- UE CONTEXT RESUME ELEMENTARY PROCEDURE +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- UE Context Resume Request +-- +-- ************************************************************** + +UEContextResumeRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextResumeRequestIEs} }, + ... +} + +UEContextResumeRequestIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABFailedToResumeListResumeReq CRITICALITY reject TYPE E-RABFailedToResumeListResumeReq PRESENCE optional}| + { ID id-RRC-Resume-Cause CRITICALITY ignore TYPE RRC-Establishment-Cause PRESENCE optional}, + ... +} + +E-RABFailedToResumeListResumeReq ::= E-RAB-IE-ContainerList { {E-RABFailedToResumeItemResumeReqIEs} } + +E-RABFailedToResumeItemResumeReqIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABFailedToResumeItemResumeReq CRITICALITY reject TYPE E-RABFailedToResumeItemResumeReq PRESENCE mandatory}, + ... +} + +E-RABFailedToResumeItemResumeReq ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { E-RABFailedToResumeItemResumeReq-ExtIEs} } OPTIONAL, + ... +} + +E-RABFailedToResumeItemResumeReq-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- UE Context Resume Response +-- +-- ************************************************************** + +UEContextResumeResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextResumeResponseIEs} }, + ... +} + +UEContextResumeResponseIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-E-RABFailedToResumeListResumeRes CRITICALITY reject TYPE E-RABFailedToResumeListResumeRes PRESENCE optional}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}| + { ID id-SecurityContext CRITICALITY reject TYPE SecurityContext PRESENCE optional}, + ... +} + +E-RABFailedToResumeListResumeRes ::= E-RAB-IE-ContainerList { {E-RABFailedToResumeItemResumeResIEs} } + +E-RABFailedToResumeItemResumeResIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABFailedToResumeItemResumeRes CRITICALITY reject TYPE E-RABFailedToResumeItemResumeRes PRESENCE mandatory}, + ... +} + +E-RABFailedToResumeItemResumeRes ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { { E-RABFailedToResumeItemResumeRes-ExtIEs} } OPTIONAL, + ... +} + +E-RABFailedToResumeItemResumeRes-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- ************************************************************** +-- +-- UE Context Resume Failure +-- +-- ************************************************************** + +UEContextResumeFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEContextResumeFailureIEs} }, + ... +} + +UEContextResumeFailureIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory}| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional}, + ... +} + +-- ************************************************************** +-- +-- Connection Establishment Indication +-- +-- ************************************************************** + +ConnectionEstablishmentIndication::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ConnectionEstablishmentIndicationIEs} }, + ... +} + +ConnectionEstablishmentIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY ignore TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY ignore TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional }| + { ID id-EnhancedCoverageRestricted CRITICALITY ignore TYPE EnhancedCoverageRestricted PRESENCE optional }| + { ID id-DL-CP-SecurityInformation CRITICALITY ignore TYPE DL-CP-SecurityInformation PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- Retrieve UE Information +-- +-- ************************************************************** + +RetrieveUEInformation ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { RetrieveUEInformationIEs} }, + ... +} + +RetrieveUEInformationIEs S1AP-PROTOCOL-IES ::= { + { ID id-S-TMSI CRITICALITY reject TYPE S-TMSI PRESENCE mandatory}, +... + +} + + +-- ************************************************************** + +-- UE Information Transfer +-- +-- ************************************************************** +UEInformationTransfer ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { UEInformationTransferIEs} }, + ... +} + +UEInformationTransferIEs S1AP-PROTOCOL-IES ::= { + { ID id-S-TMSI CRITICALITY reject TYPE S-TMSI PRESENCE mandatory}| + { ID id-UE-Level-QoS-Parameters CRITICALITY ignore TYPE E-RABLevelQoSParameters PRESENCE optional}| + { ID id-UERadioCapability CRITICALITY ignore TYPE UERadioCapability PRESENCE optional}, + ... +} + + +-- ************************************************************** +-- +-- eNB CP Relocation Indication +-- +-- ************************************************************** + +ENBCPRelocationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { ENBCPRelocationIndicationIEs} }, + ... +} + +ENBCPRelocationIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}| + { ID id-S-TMSI CRITICALITY reject TYPE S-TMSI PRESENCE mandatory}| + { ID id-EUTRAN-CGI CRITICALITY ignore TYPE EUTRAN-CGI PRESENCE mandatory}| + { ID id-TAI CRITICALITY ignore TYPE TAI PRESENCE mandatory}| + { ID id-UL-CP-SecurityInformation CRITICALITY reject TYPE UL-CP-SecurityInformation PRESENCE mandatory}, + ... +} + + +-- ************************************************************** +-- +-- MME CP Relocation Indication +-- +-- ************************************************************** + +MMECPRelocationIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { MMECPRelocationIndicationIEs} }, + ... +} + +MMECPRelocationIndicationIEs S1AP-PROTOCOL-IES ::= { + { ID id-MME-UE-S1AP-ID CRITICALITY reject TYPE MME-UE-S1AP-ID PRESENCE mandatory}| + { ID id-eNB-UE-S1AP-ID CRITICALITY reject TYPE ENB-UE-S1AP-ID PRESENCE mandatory}, + ... +} + +END + +9.3.4 Information Element Definitions +-- ************************************************************** +-- +-- Information Element Definitions +-- +-- ************************************************************** + +S1AP-IEs { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-IEs (2) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + id-E-RABInformationListItem, + id-E-RABItem, + id-Bearers-SubjectToStatusTransfer-Item, + id-Time-Synchronisation-Info, + id-x2TNLConfigurationInfo, + id-eNBX2ExtendedTransportLayerAddresses, + id-MDTConfiguration, + id-Time-UE-StayedInCell-EnhancedGranularity, + id-HO-Cause, + id-M3Configuration, + id-M4Configuration, + id-M5Configuration, + id-MDT-Location-Info, + id-SignallingBasedMDTPLMNList, + id-MobilityInformation, + id-ULCOUNTValueExtended, + id-DLCOUNTValueExtended, + id-ReceiveStatusOfULPDCPSDUsExtended, + id-eNBIndirectX2TransportLayerAddresses, + id-Muting-Availability-Indication, + id-Muting-Pattern-Information, + id-Synchronisation-Information, + id-uE-HistoryInformationFromTheUE, + id-LoggedMBSFNMDT, + id-SON-Information-Report, + id-RecommendedCellItem, + id-RecommendedENBItem, + id-ProSeUEtoNetworkRelaying, + id-ULCOUNTValuePDCP-SNlength18, + id-DLCOUNTValuePDCP-SNlength18, + id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18, + id-M6Configuration, + id-M7Configuration, + id-RAT-Type, + maxnoofCSGs, + maxnoofE-RABs, + maxnoofErrors, + maxnoofBPLMNs, + maxnoofPLMNsPerMME, + maxnoofTACs, + maxnoofEPLMNs, + maxnoofEPLMNsPlusOne, + maxnoofForbLACs, + maxnoofForbTACs, + maxnoofCells, + maxnoofCellID, + maxnoofDCNs, + maxnoofEmergencyAreaID, + maxnoofTAIforWarning, + maxnoofCellinTAI, + maxnoofCellinEAI, + maxnoofeNBX2TLAs, + maxnoofeNBX2ExtTLAs, + maxnoofeNBX2GTPTLAs, + maxnoofRATs, + maxnoofGroupIDs, + maxnoofMMECs, + maxnoofTAforMDT, + maxnoofCellIDforMDT, + maxnoofMDTPLMNs, + maxnoofCellsforRestart, + maxnoofRestartTAIs, + maxnoofRestartEmergencyAreaIDs, + maxnoofMBSFNAreaMDT, + maxEARFCN, + maxnoofCellsineNB, + maxnoofRecommendedCells, + maxnoofRecommendedENBs + + + +FROM S1AP-Constants + + Criticality, + ProcedureCode, + ProtocolIE-ID, + TriggeringMessage +FROM S1AP-CommonDataTypes + + ProtocolExtensionContainer{}, + S1AP-PROTOCOL-EXTENSION, + ProtocolIE-SingleContainer{}, + S1AP-PROTOCOL-IES + +FROM S1AP-Containers; + +-- A + +Additional-GUTI::= SEQUENCE { + gUMMEI GUMMEI, + m-TMSI M-TMSI, + iE-Extensions ProtocolExtensionContainer { {Additional-GUTI-ExtIEs} } OPTIONAL, + ... +} + +Additional-GUTI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +AreaScopeOfMDT ::= CHOICE { + cellBased CellBasedMDT, + tABased TABasedMDT, + pLMNWide NULL, + ..., + tAIBased TAIBasedMDT +} + +AllocationAndRetentionPriority ::= SEQUENCE { + priorityLevel PriorityLevel, + pre-emptionCapability Pre-emptionCapability, + pre-emptionVulnerability Pre-emptionVulnerability, + iE-Extensions ProtocolExtensionContainer { {AllocationAndRetentionPriority-ExtIEs} } OPTIONAL, + ... +} + +AllocationAndRetentionPriority-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +AssistanceDataForCECapableUEs ::= SEQUENCE { + cellIdentifierAndCELevelForCECapableUEs CellIdentifierAndCELevelForCECapableUEs, + iE-Extensions ProtocolExtensionContainer { { InformationForCECapableUEs-ExtIEs} } OPTIONAL, + ... +} + +InformationForCECapableUEs-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +AssistanceDataForPaging ::= SEQUENCE { + assistanceDataForRecommendedCells AssistanceDataForRecommendedCells OPTIONAL, + assistanceDataForCECapableUEs AssistanceDataForCECapableUEs OPTIONAL, + pagingAttemptInformation PagingAttemptInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { AssistanceDataForPaging-ExtIEs} } OPTIONAL, + ... +} + +AssistanceDataForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +AssistanceDataForRecommendedCells ::= SEQUENCE { + recommendedCellsForPaging RecommendedCellsForPaging, + iE-Extensions ProtocolExtensionContainer { { AssistanceDataForRecommendedCells-ExtIEs} } OPTIONAL, + ... +} + +AssistanceDataForRecommendedCells-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- B + +Bearers-SubjectToStatusTransferList ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { { Bearers-SubjectToStatusTransfer-ItemIEs } } + +Bearers-SubjectToStatusTransfer-ItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-Bearers-SubjectToStatusTransfer-Item CRITICALITY ignore TYPE Bearers-SubjectToStatusTransfer-Item PRESENCE mandatory }, + ... +} + +Bearers-SubjectToStatusTransfer-Item ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + uL-COUNTvalue COUNTvalue, + dL-COUNTvalue COUNTvalue, + receiveStatusofULPDCPSDUs ReceiveStatusofULPDCPSDUs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {Bearers-SubjectToStatusTransfer-ItemExtIEs} } OPTIONAL, + ... +} + +Bearers-SubjectToStatusTransfer-ItemExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-ULCOUNTValueExtended CRITICALITY ignore EXTENSION COUNTValueExtended PRESENCE optional}| + { ID id-DLCOUNTValueExtended CRITICALITY ignore EXTENSION COUNTValueExtended PRESENCE optional}| + { ID id-ReceiveStatusOfULPDCPSDUsExtended CRITICALITY ignore EXTENSION ReceiveStatusOfULPDCPSDUsExtended PRESENCE optional}| + { ID id-ULCOUNTValuePDCP-SNlength18 CRITICALITY ignore EXTENSION COUNTvaluePDCP-SNlength18 PRESENCE optional}| + { ID id-DLCOUNTValuePDCP-SNlength18 CRITICALITY ignore EXTENSION COUNTvaluePDCP-SNlength18 PRESENCE optional}| + { ID id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 CRITICALITY ignore EXTENSION ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 PRESENCE optional}, + ... +} + +BearerType ::= ENUMERATED { + non-IP, + ... +} + +BitRate ::= INTEGER (0..10000000000) + +BPLMNs ::= SEQUENCE (SIZE(1.. maxnoofBPLMNs)) OF PLMNidentity + +BroadcastCancelledAreaList ::= CHOICE { + cellID-Cancelled CellID-Cancelled, + tAI-Cancelled TAI-Cancelled, + emergencyAreaID-Cancelled EmergencyAreaID-Cancelled, + ... +} + +BroadcastCompletedAreaList ::= CHOICE { + cellID-Broadcast CellID-Broadcast, + tAI-Broadcast TAI-Broadcast, + emergencyAreaID-Broadcast EmergencyAreaID-Broadcast, + ... +} + + +-- C + +CancelledCellinEAI ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CancelledCellinEAI-Item + +CancelledCellinEAI-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellinEAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellinEAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CancelledCellinTAI ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CancelledCellinTAI-Item + +CancelledCellinTAI-Item ::= SEQUENCE{ + eCGI EUTRAN-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CancelledCellinTAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CancelledCellinTAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Cause ::= CHOICE { + radioNetwork CauseRadioNetwork, + transport CauseTransport, + nas CauseNas, + protocol CauseProtocol, + misc CauseMisc, + ... +} + +CauseMisc ::= ENUMERATED { + control-processing-overload, + not-enough-user-plane-processing-resources, + hardware-failure, + om-intervention, + unspecified, + unknown-PLMN, +... +} + +CauseProtocol ::= ENUMERATED { + transfer-syntax-error, + abstract-syntax-error-reject, + abstract-syntax-error-ignore-and-notify, + message-not-compatible-with-receiver-state, + semantic-error, + abstract-syntax-error-falsely-constructed-message, + unspecified, + ... +} + +CauseRadioNetwork ::= ENUMERATED { + unspecified, + tx2relocoverall-expiry, + successful-handover, + release-due-to-eutran-generated-reason, + handover-cancelled, + partial-handover, + ho-failure-in-target-EPC-eNB-or-target-system, + ho-target-not-allowed, + tS1relocoverall-expiry, + tS1relocprep-expiry, + cell-not-available, + unknown-targetID, + no-radio-resources-available-in-target-cell, + unknown-mme-ue-s1ap-id, + unknown-enb-ue-s1ap-id, + unknown-pair-ue-s1ap-id, + handover-desirable-for-radio-reason, + time-critical-handover, + resource-optimisation-handover, + reduce-load-in-serving-cell, + user-inactivity, + radio-connection-with-ue-lost, + load-balancing-tau-required, + cs-fallback-triggered, + ue-not-available-for-ps-service, + radio-resources-not-available, + failure-in-radio-interface-procedure, + invalid-qos-combination, + interrat-redirection, + interaction-with-other-procedure, + unknown-E-RAB-ID, + multiple-E-RAB-ID-instances, + encryption-and-or-integrity-protection-algorithms-not-supported, + s1-intra-system-handover-triggered, + s1-inter-system-handover-triggered, + x2-handover-triggered, + ..., + redirection-towards-1xRTT, + not-supported-QCI-value, + invalid-CSG-Id, + release-due-to-pre-emption + +} + +CauseTransport ::= ENUMERATED { + transport-resource-unavailable, + unspecified, + ... +} + +CauseNas ::= ENUMERATED { + normal-release, + authentication-failure, + detach, + unspecified, + ..., + csg-subscription-expiry +} + +CellAccessMode ::= ENUMERATED { + hybrid, + ... +} + +CellIdentifierAndCELevelForCECapableUEs ::= SEQUENCE { + global-Cell-ID EUTRAN-CGI, + cELevel CELevel, + iE-Extensions ProtocolExtensionContainer { { CellIdentifierAndCELevelForCECapableUEs-ExtIEs} } OPTIONAL, + ... +} + +CellIdentifierAndCELevelForCECapableUEs-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- Coverage Enhancement level encoded according to TS 36.331 [16] -- +CELevel ::= OCTET STRING + +CE-mode-B-SupportIndicator ::= ENUMERATED { + supported, + ... +} + +CellIdentity ::= BIT STRING (SIZE (28)) + +CellID-Broadcast ::= SEQUENCE (SIZE(1..maxnoofCellID)) OF CellID-Broadcast-Item + +CellID-Broadcast-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {CellID-Broadcast-Item-ExtIEs} } OPTIONAL, + ... +} + +CellID-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellID-Cancelled::= SEQUENCE (SIZE(1..maxnoofCellID)) OF CellID-Cancelled-Item + +CellID-Cancelled-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + numberOfBroadcasts NumberOfBroadcasts, + iE-Extensions ProtocolExtensionContainer { {CellID-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + +CellID-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellBasedMDT::= SEQUENCE { + cellIdListforMDT CellIdListforMDT, + iE-Extensions ProtocolExtensionContainer { {CellBasedMDT-ExtIEs} } OPTIONAL, + ... +} + +CellBasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CellIdListforMDT ::= SEQUENCE (SIZE(1..maxnoofCellIDforMDT)) OF EUTRAN-CGI + +Cdma2000PDU ::= OCTET STRING + +Cdma2000RATType ::= ENUMERATED { + hRPD, + onexRTT, + ... +} + +Cdma2000SectorID ::= OCTET STRING + +Cdma2000HOStatus ::= ENUMERATED { + hOSuccess, + hOFailure, + ... +} + +Cdma2000HORequiredIndication ::= ENUMERATED { + true, + ... +} + +Cdma2000OneXSRVCCInfo ::= SEQUENCE { + cdma2000OneXMEID Cdma2000OneXMEID, + cdma2000OneXMSI Cdma2000OneXMSI, + cdma2000OneXPilot Cdma2000OneXPilot, + iE-Extensions ProtocolExtensionContainer { {Cdma2000OneXSRVCCInfo-ExtIEs} } OPTIONAL, + ... +} + +Cdma2000OneXSRVCCInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Cdma2000OneXMEID ::= OCTET STRING + +Cdma2000OneXMSI ::= OCTET STRING + +Cdma2000OneXPilot ::= OCTET STRING + +Cdma2000OneXRAND ::= OCTET STRING + + +Cell-Size ::= ENUMERATED {verysmall, small, medium, large, ...} + +CellType ::= SEQUENCE { + cell-Size Cell-Size, + iE-Extensions ProtocolExtensionContainer { { CellType-ExtIEs}} OPTIONAL, + ... +} + +CellType-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CGI ::= SEQUENCE { + pLMNidentity PLMNidentity, + lAC LAC, + cI CI, + rAC RAC OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {CGI-ExtIEs} } OPTIONAL, + ... + } + +CGI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CI ::= OCTET STRING (SIZE (2)) + +CNDomain ::= ENUMERATED { + ps, + cs +} + +ConcurrentWarningMessageIndicator ::= ENUMERATED { + true +} + +Correlation-ID ::= OCTET STRING (SIZE (4)) + +CSFallbackIndicator ::= ENUMERATED { + cs-fallback-required, + ..., + cs-fallback-high-priority +} + +AdditionalCSFallbackIndicator ::= ENUMERATED { + no-restriction, + restriction, + ... +} + +CSG-Id ::= BIT STRING (SIZE (27)) + + +CSG-IdList ::= SEQUENCE (SIZE (1.. maxnoofCSGs)) OF CSG-IdList-Item + +CSG-IdList-Item ::= SEQUENCE { + cSG-Id CSG-Id, + iE-Extensions ProtocolExtensionContainer { {CSG-IdList-Item-ExtIEs} } OPTIONAL, + ... +} + +CSG-IdList-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CSGMembershipStatus ::= ENUMERATED { + member, + not-member +} + + +COUNTvalue ::= SEQUENCE { + pDCP-SN PDCP-SN, + hFN HFN, + iE-Extensions ProtocolExtensionContainer { {COUNTvalue-ExtIEs} } OPTIONAL, + ... +} +COUNTvalue-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +COUNTValueExtended ::= SEQUENCE { + pDCP-SNExtended PDCP-SNExtended, + hFNModified HFNModified, + iE-Extensions ProtocolExtensionContainer { {COUNTValueExtended-ExtIEs} } OPTIONAL, + ... +} + +COUNTValueExtended-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +COUNTvaluePDCP-SNlength18 ::= SEQUENCE { + pDCP-SNlength18 PDCP-SNlength18, + hFNforPDCP-SNlength18 HFNforPDCP-SNlength18, + iE-Extensions ProtocolExtensionContainer { {COUNTvaluePDCP-SNlength18-ExtIEs} } OPTIONAL, + ... +} + +COUNTvaluePDCP-SNlength18-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Coverage-Level ::= ENUMERATED { + extendedcoverage, + ... +} + +CriticalityDiagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-ExtIEs}} OPTIONAL, + ... +} + +CriticalityDiagnostics-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1.. maxnoofErrors)) OF CriticalityDiagnostics-IE-Item + +CriticalityDiagnostics-IE-Item ::= SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + iE-Extensions ProtocolExtensionContainer {{CriticalityDiagnostics-IE-Item-ExtIEs}} OPTIONAL, + ... +} + +CriticalityDiagnostics-IE-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +-- D + +DataCodingScheme ::= BIT STRING (SIZE (8)) + +DCN-ID ::= INTEGER (0..65535) + +ServedDCNs ::= SEQUENCE (SIZE(0..maxnoofDCNs)) OF ServedDCNsItem + +ServedDCNsItem ::= SEQUENCE { + dCN-ID DCN-ID, + relativeDCNCapacity RelativeMMECapacity, + iE-Extensions ProtocolExtensionContainer { {ServedDCNsItem-ExtIEs} } OPTIONAL, + ... +} + +ServedDCNsItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DL-CP-SecurityInformation ::= SEQUENCE { + dl-NAS-MAC DL-NAS-MAC, + iE-Extensions ProtocolExtensionContainer { { DL-CP-SecurityInformation-ExtIEs} } OPTIONAL, + ... +} + +DL-CP-SecurityInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +DL-Forwarding ::= ENUMERATED { + dL-Forwarding-proposed, + ... +} + +DL-NAS-MAC ::= BIT STRING (SIZE (16)) + +Direct-Forwarding-Path-Availability ::= ENUMERATED { + directPathAvailable, + ... +} + +Data-Forwarding-Not-Possible ::= ENUMERATED { + data-Forwarding-not-Possible, + ... +} + +DLNASPDUDeliveryAckRequest ::= ENUMERATED { + requested, + ... +} + +-- E + +EARFCN ::= INTEGER(0..maxEARFCN, ...) + +ECGIList ::= SEQUENCE (SIZE(1..maxnoofCellID)) OF EUTRAN-CGI + +PWSfailedECGIList ::= SEQUENCE (SIZE(1..maxnoofCellsineNB)) OF EUTRAN-CGI + +EmergencyAreaIDList ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID + +EmergencyAreaID ::= OCTET STRING (SIZE (3)) + +EmergencyAreaID-Broadcast ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID-Broadcast-Item + +EmergencyAreaID-Broadcast-Item ::= SEQUENCE { + emergencyAreaID EmergencyAreaID, + completedCellinEAI CompletedCellinEAI, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaID-Broadcast-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaID-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +EmergencyAreaID-Cancelled ::= SEQUENCE (SIZE(1..maxnoofEmergencyAreaID)) OF EmergencyAreaID-Cancelled-Item + +EmergencyAreaID-Cancelled-Item ::= SEQUENCE { + emergencyAreaID EmergencyAreaID, + cancelledCellinEAI CancelledCellinEAI, + iE-Extensions ProtocolExtensionContainer { {EmergencyAreaID-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + +EmergencyAreaID-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +CompletedCellinEAI ::= SEQUENCE (SIZE(1..maxnoofCellinEAI)) OF CompletedCellinEAI-Item + +CompletedCellinEAI-Item ::= SEQUENCE { + eCGI EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {CompletedCellinEAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CompletedCellinEAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ECGI-List ::= SEQUENCE (SIZE(1..maxnoofCellsineNB)) OF EUTRAN-CGI + +EmergencyAreaIDListForRestart ::= SEQUENCE (SIZE(1..maxnoofRestartEmergencyAreaIDs)) OF EmergencyAreaID + +ENB-ID ::= CHOICE { + macroENB-ID BIT STRING (SIZE(20)), + homeENB-ID BIT STRING (SIZE(28)), + ... , + short-macroENB-ID BIT STRING (SIZE(18)), + long-macroENB-ID BIT STRING (SIZE(21)) +} + +GERAN-Cell-ID ::= SEQUENCE { + lAI LAI, + rAC RAC, + cI CI, + iE-Extensions ProtocolExtensionContainer { { GERAN-Cell-ID-ExtIEs} } OPTIONAL, + ... +} + +GERAN-Cell-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Global-ENB-ID ::= SEQUENCE { + pLMNidentity PLMNidentity, + eNB-ID ENB-ID, + iE-Extensions ProtocolExtensionContainer { {GlobalENB-ID-ExtIEs} } OPTIONAL, + ... +} + +GlobalENB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +GUMMEIList::= SEQUENCE (SIZE (1.. maxnoofMMECs)) OF GUMMEI + +ENB-StatusTransfer-TransparentContainer ::= SEQUENCE { + bearers-SubjectToStatusTransferList Bearers-SubjectToStatusTransferList, + iE-Extensions ProtocolExtensionContainer { {ENB-StatusTransfer-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +ENB-StatusTransfer-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ENB-UE-S1AP-ID ::= INTEGER (0..16777215) + +ENBname ::= PrintableString (SIZE (1..150,...)) + +ENBX2TLAs ::= SEQUENCE (SIZE(1.. maxnoofeNBX2TLAs)) OF TransportLayerAddress + +EncryptionAlgorithms ::= BIT STRING (SIZE (16,...)) + +EnhancedCoverageRestricted ::= ENUMERATED { + restricted, + ... +} + +EPLMNs ::= SEQUENCE (SIZE(1..maxnoofEPLMNs)) OF PLMNidentity +EventType ::= ENUMERATED { + direct, + change-of-serve-cell, + stop-change-of-serve-cell, + ... +} + +E-RAB-ID ::= INTEGER (0..15, ...) + +E-RABInformationList ::= SEQUENCE (SIZE (1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { { E-RABInformationListIEs } } + +E-RABInformationListIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABInformationListItem CRITICALITY ignore TYPE E-RABInformationListItem PRESENCE mandatory }, + ... +} + +E-RABInformationListItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + dL-Forwarding DL-Forwarding OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABInformationListItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABInformationListItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +E-RABList ::= SEQUENCE (SIZE(1.. maxnoofE-RABs)) OF ProtocolIE-SingleContainer { {E-RABItemIEs} } + +E-RABItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-E-RABItem CRITICALITY ignore TYPE E-RABItem PRESENCE mandatory }, + ... +} + +E-RABItem ::= SEQUENCE { + e-RAB-ID E-RAB-ID, + cause Cause, + iE-Extensions ProtocolExtensionContainer { {E-RABItem-ExtIEs} } OPTIONAL, + ... +} + +E-RABItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +E-RABLevelQoSParameters ::= SEQUENCE { + qCI QCI, + allocationRetentionPriority AllocationAndRetentionPriority, + gbrQosInformation GBR-QosInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {E-RABQoSParameters-ExtIEs} } OPTIONAL, + ... +} + +E-RABQoSParameters-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +EUTRAN-CGI ::= SEQUENCE { + pLMNidentity PLMNidentity, + cell-ID CellIdentity, + iE-Extensions ProtocolExtensionContainer { {EUTRAN-CGI-ExtIEs} } OPTIONAL, + ... +} + +EUTRAN-CGI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +EUTRANRoundTripDelayEstimationInfo ::= INTEGER (0..2047) + +ExpectedUEBehaviour ::= SEQUENCE { + expectedActivity ExpectedUEActivityBehaviour OPTIONAL, + expectedHOInterval ExpectedHOInterval OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ExpectedUEBehaviour-ExtIEs} } OPTIONAL, + ... +} + +ExpectedUEBehaviour-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ExpectedUEActivityBehaviour ::= SEQUENCE { + expectedActivityPeriod ExpectedActivityPeriod OPTIONAL, + expectedIdlePeriod ExpectedIdlePeriod OPTIONAL, + sourceofUEActivityBehaviourInformation SourceOfUEActivityBehaviourInformation OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ExpectedUEActivityBehaviour-ExtIEs} } OPTIONAL, + ... +} + +ExpectedUEActivityBehaviour-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ExpectedActivityPeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181,...) + +ExpectedIdlePeriod ::= INTEGER (1..30|40|50|60|80|100|120|150|180|181,...) + +SourceOfUEActivityBehaviourInformation ::= ENUMERATED { + subscription-information, + statistics, + ... +} + +ExpectedHOInterval ::= ENUMERATED { + sec15, sec30, sec60, sec90, sec120, sec180, long-time, + ... +} + +ExtendedRNC-ID ::= INTEGER (4096..65535) + +ExtendedRepetitionPeriod ::= INTEGER (4096..131071) + +Extended-UEIdentityIndexValue ::= BIT STRING (SIZE (14)) + +-- F + +ForbiddenInterRATs ::= ENUMERATED { + all, + geran, + utran, + cdma2000, + ..., + geranandutran, + cdma2000andutran + +} + +ForbiddenTAs ::= SEQUENCE (SIZE(1.. maxnoofEPLMNsPlusOne)) OF ForbiddenTAs-Item + +ForbiddenTAs-Item ::= SEQUENCE { + pLMN-Identity PLMNidentity, + forbiddenTACs ForbiddenTACs, + iE-Extensions ProtocolExtensionContainer { {ForbiddenTAs-Item-ExtIEs} } OPTIONAL, + ... +} + +ForbiddenTAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ForbiddenTACs ::= SEQUENCE (SIZE(1..maxnoofForbTACs)) OF TAC + +ForbiddenLAs ::= SEQUENCE (SIZE(1..maxnoofEPLMNsPlusOne)) OF ForbiddenLAs-Item + +ForbiddenLAs-Item ::= SEQUENCE { + pLMN-Identity PLMNidentity, + forbiddenLACs ForbiddenLACs, + iE-Extensions ProtocolExtensionContainer { {ForbiddenLAs-Item-ExtIEs} } OPTIONAL, + ... +} + +ForbiddenLAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ForbiddenLACs ::= SEQUENCE (SIZE(1..maxnoofForbLACs)) OF LAC + +-- G + +GBR-QosInformation ::= SEQUENCE { + e-RAB-MaximumBitrateDL BitRate, + e-RAB-MaximumBitrateUL BitRate, + e-RAB-GuaranteedBitrateDL BitRate, + e-RAB-GuaranteedBitrateUL BitRate, + iE-Extensions ProtocolExtensionContainer { { GBR-QosInformation-ExtIEs} } OPTIONAL, + ... +} + +GBR-QosInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +GTP-TEID ::= OCTET STRING (SIZE (4)) + +GUMMEI ::= SEQUENCE { + pLMN-Identity PLMNidentity, + mME-Group-ID MME-Group-ID, + mME-Code MME-Code, + iE-Extensions ProtocolExtensionContainer { {GUMMEI-ExtIEs} } OPTIONAL, + ... +} + +GUMMEI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +GUMMEIType ::= ENUMERATED { + native, + mapped, + ... +} + +GWContextReleaseIndication ::= ENUMERATED { + true, + ... +} + +-- H + +HandoverRestrictionList ::= SEQUENCE { + servingPLMN PLMNidentity, + equivalentPLMNs EPLMNs OPTIONAL, + forbiddenTAs ForbiddenTAs OPTIONAL, + forbiddenLAs ForbiddenLAs OPTIONAL, + forbiddenInterRATs ForbiddenInterRATs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {HandoverRestrictionList-ExtIEs} } OPTIONAL, + ... +} + +HandoverRestrictionList-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +HandoverType ::= ENUMERATED { + intralte, + ltetoutran, + ltetogeran, + utrantolte, + gerantolte, + ... +} + +HFN ::= INTEGER (0..1048575) + +HFNModified ::= INTEGER (0..131071) + +HFNforPDCP-SNlength18 ::= INTEGER (0..16383) + +-- I + +Masked-IMEISV ::= BIT STRING (SIZE (64)) + +ImmediateMDT ::= SEQUENCE { + measurementsToActivate MeasurementsToActivate, + m1reportingTrigger M1ReportingTrigger, + m1thresholdeventA2 M1ThresholdEventA2 OPTIONAL, +-- Included in case of event-triggered, or event-triggered periodic reporting for measurement M1 + m1periodicReporting M1PeriodicReporting OPTIONAL, +-- Included in case of periodic or event-triggered periodic reporting + iE-Extensions ProtocolExtensionContainer { { ImmediateMDT-ExtIEs} } OPTIONAL, + ... +} + +ImmediateMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-M3Configuration CRITICALITY ignore EXTENSION M3Configuration PRESENCE conditional}| + { ID id-M4Configuration CRITICALITY ignore EXTENSION M4Configuration PRESENCE conditional}| + { ID id-M5Configuration CRITICALITY ignore EXTENSION M5Configuration PRESENCE conditional}| + { ID id-MDT-Location-Info CRITICALITY ignore EXTENSION MDT-Location-Info PRESENCE optional}| + { ID id-M6Configuration CRITICALITY ignore EXTENSION M6Configuration PRESENCE conditional}| + { ID id-M7Configuration CRITICALITY ignore EXTENSION M7Configuration PRESENCE conditional}, + ... +} + +IMSI ::= OCTET STRING (SIZE (3..8)) + +InformationOnRecommendedCellsAndENBsForPaging ::= SEQUENCE { + recommendedCellsForPaging RecommendedCellsForPaging, + recommendENBsForPaging RecommendedENBsForPaging, + iE-Extensions ProtocolExtensionContainer { { InformationOnRecommendedCellsAndENBsForPaging-ExtIEs} } OPTIONAL, + ... +} + +InformationOnRecommendedCellsAndENBsForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +IntegrityProtectionAlgorithms ::= BIT STRING (SIZE (16,...)) + +IntendedNumberOfPagingAttempts ::= INTEGER (1..16, ...) + +InterfacesToTrace ::= BIT STRING (SIZE (8)) + + + +-- J +-- K + +KillAllWarningMessages ::= ENUMERATED {true} + +-- L + + +LAC ::= OCTET STRING (SIZE (2)) + +LAI ::= SEQUENCE { + pLMNidentity PLMNidentity, + lAC LAC, + iE-Extensions ProtocolExtensionContainer { {LAI-ExtIEs} } OPTIONAL, + ... +} + +LAI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +LastVisitedCell-Item ::= CHOICE { + e-UTRAN-Cell LastVisitedEUTRANCellInformation, + uTRAN-Cell LastVisitedUTRANCellInformation, + gERAN-Cell LastVisitedGERANCellInformation, + ... +} +LastVisitedEUTRANCellInformation ::= SEQUENCE { + global-Cell-ID EUTRAN-CGI, + cellType CellType, + time-UE-StayedInCell Time-UE-StayedInCell, + iE-Extensions ProtocolExtensionContainer { { LastVisitedEUTRANCellInformation-ExtIEs} } OPTIONAL, + ... +} +LastVisitedEUTRANCellInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Rel-11 to support enhanced granularity for time UE stayed in cell -- + { ID id-Time-UE-StayedInCell-EnhancedGranularity CRITICALITY ignore EXTENSION Time-UE-StayedInCell-EnhancedGranularity PRESENCE optional}| + { ID id-HO-Cause CRITICALITY ignore EXTENSION Cause PRESENCE optional}, + ... +} +LastVisitedUTRANCellInformation ::= OCTET STRING + +LastVisitedGERANCellInformation ::= CHOICE { + undefined NULL, + ... +} + +L3-Information ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +LPPa-PDU ::= OCTET STRING + +LHN-ID ::= OCTET STRING(SIZE (32..256)) + +Links-to-log ::= ENUMERATED {uplink, downlink, both-uplink-and-downlink, ...} + +ListeningSubframePattern ::= SEQUENCE { + pattern-period ENUMERATED {ms1280, ms2560, ms5120, ms10240, ...}, + pattern-offset INTEGER (0..10239, ...), + iE-Extensions ProtocolExtensionContainer { { ListeningSubframePattern-ExtIEs} } OPTIONAL, + ... +} + +ListeningSubframePattern-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +... +} + +LoggedMDT ::= SEQUENCE { + loggingInterval LoggingInterval, + loggingDuration LoggingDuration, + iE-Extensions ProtocolExtensionContainer { {LoggedMDT-ExtIEs} } OPTIONAL, + ... +} + +LoggedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +... +} + +LoggingInterval ::= ENUMERATED {ms128, ms256, ms512, ms1024, ms2048, ms3072, ms4096, ms6144} + +LoggingDuration ::= ENUMERATED {m10, m20, m40, m60, m90, m120} + +LoggedMBSFNMDT ::= SEQUENCE { + loggingInterval LoggingInterval, + loggingDuration LoggingDuration, + mBSFN-ResultToLog MBSFN-ResultToLog OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { LoggedMBSFNMDT-ExtIEs } } OPTIONAL, + ... +} + +LoggedMBSFNMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- M + +M3Configuration ::= SEQUENCE { + m3period M3period, + iE-Extensions ProtocolExtensionContainer { { M3Configuration-ExtIEs} } OPTIONAL, + ... +} + +M3Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M3period ::= ENUMERATED {ms100, ms1000, ms10000, ... } + +M4Configuration ::= SEQUENCE { + m4period M4period, + m4-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M4Configuration-ExtIEs} } OPTIONAL, + ... +} + +M4Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M4period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... } + +M5Configuration ::= SEQUENCE { + m5period M5period, + m5-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M5Configuration-ExtIEs} } OPTIONAL, + ... +} + +M5Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M5period ::= ENUMERATED {ms1024, ms2048, ms5120, ms10240, min1, ... } + +M6Configuration ::= SEQUENCE { + m6report-Interval M6report-Interval, + m6delay-threshold M6delay-threshold OPTIONAL, +-- This IE shall be present if the M6 Links to log IE is set to "uplink" or to "both-uplink-and-downlink" -- + m6-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M6Configuration-ExtIEs} } OPTIONAL, + ... +} + +M6Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M6report-Interval ::= ENUMERATED { ms1024, ms2048, ms5120, ms10240, ... } + +M6delay-threshold ::= ENUMERATED { ms30, ms40, ms50, ms60, ms70, ms80, ms90, ms100, ms150, ms300, ms500, ms750, ... } + +M7Configuration ::= SEQUENCE { + m7period M7period, + m7-links-to-log Links-to-log, + iE-Extensions ProtocolExtensionContainer { { M7Configuration-ExtIEs} } OPTIONAL, + ... +} + +M7Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +M7period ::= INTEGER(1..60, ...) + +MDT-Activation ::= ENUMERATED { + immediate-MDT-only, + immediate-MDT-and-Trace, + logged-MDT-only, + ..., + logged-MBSFN-MDT +} + +MDT-Location-Info ::= BIT STRING (SIZE (8)) + +MDT-Configuration ::= SEQUENCE { + mdt-Activation MDT-Activation, + areaScopeOfMDT AreaScopeOfMDT, + mDTMode MDTMode, + iE-Extensions ProtocolExtensionContainer { { MDT-Configuration-ExtIEs} } OPTIONAL, + ... +} +MDT-Configuration-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-SignallingBasedMDTPLMNList CRITICALITY ignore EXTENSION MDTPLMNList PRESENCE optional }, + ... +} + +ManagementBasedMDTAllowed ::= ENUMERATED {allowed, ...} + +MBSFN-ResultToLog ::= SEQUENCE (SIZE(1..maxnoofMBSFNAreaMDT)) OF MBSFN-ResultToLogInfo + +MBSFN-ResultToLogInfo ::= SEQUENCE { + mBSFN-AreaId INTEGER (0..255) OPTIONAL, + carrierFreq EARFCN, + iE-Extensions ProtocolExtensionContainer { { MBSFN-ResultToLogInfo-ExtIEs} } OPTIONAL, + ... +} + +MBSFN-ResultToLogInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +MDTPLMNList ::= SEQUENCE (SIZE(1..maxnoofMDTPLMNs)) OF PLMNidentity + +PrivacyIndicator ::= ENUMERATED { + immediate-MDT, + logged-MDT, + ... +} + +MDTMode ::= CHOICE { + immediateMDT ImmediateMDT, + loggedMDT LoggedMDT, + ..., + mDTMode-Extension MDTMode-Extension +} + +MDTMode-Extension ::= ProtocolIE-SingleContainer {{ MDTMode-ExtensionIE }} + +MDTMode-ExtensionIE S1AP-PROTOCOL-IES ::= { + { ID id-LoggedMBSFNMDT CRITICALITY ignore TYPE LoggedMBSFNMDT PRESENCE mandatory} +} + +MeasurementsToActivate ::= BIT STRING (SIZE (8)) + +MeasurementThresholdA2 ::= CHOICE { + threshold-RSRP Threshold-RSRP, + threshold-RSRQ Threshold-RSRQ, + ... +} + +MessageIdentifier ::= BIT STRING (SIZE (16)) + +MobilityInformation ::= BIT STRING (SIZE(32)) + +MMEname ::= PrintableString (SIZE (1..150,...)) + +MMEPagingTarget ::= CHOICE { + global-ENB-ID Global-ENB-ID, + tAI TAI, + ... +} + +MMERelaySupportIndicator ::= ENUMERATED {true, ...} + +MME-Group-ID ::= OCTET STRING (SIZE (2)) + +MME-Code ::= OCTET STRING (SIZE (1)) + +MME-UE-S1AP-ID ::= INTEGER (0..4294967295) +M-TMSI ::= OCTET STRING (SIZE (4)) + +MSClassmark2 ::= OCTET STRING +MSClassmark3 ::= OCTET STRING + +MutingAvailabilityIndication ::= ENUMERATED { + available, + unavailable, + ... +} + + +MutingPatternInformation ::= SEQUENCE { + muting-pattern-period ENUMERATED {ms0, ms1280, ms2560, ms5120, ms10240, ...}, + muting-pattern-offset INTEGER (0..10239, ...) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MutingPatternInformation-ExtIEs} } OPTIONAL, + ... +} + +MutingPatternInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- N + +NAS-PDU ::= OCTET STRING + +NASSecurityParametersfromE-UTRAN ::= OCTET STRING + +NASSecurityParameterstoE-UTRAN ::= OCTET STRING + +NB-IoT-DefaultPagingDRX ::= ENUMERATED { + v128, + v256, + v512, + v1024, + ... + } + +NB-IoT-Paging-eDRXInformation ::= SEQUENCE { + nB-IoT-paging-eDRX-Cycle NB-IoT-Paging-eDRX-Cycle, + nB-IoT-pagingTimeWindow NB-IoT-PagingTimeWindow OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { NB-IoT-Paging-eDRXInformation-ExtIEs} } OPTIONAL, + ... +} + +NB-IoT-Paging-eDRXInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +NB-IoT-Paging-eDRX-Cycle ::= ENUMERATED{hf2, hf4, hf6, hf8, hf10, hf12, hf14, hf16, hf32, hf64, hf128, hf256, hf512, hf1024, ...} + +NB-IoT-PagingTimeWindow ::= ENUMERATED{s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, ...} + +NB-IoT-UEIdentityIndexValue ::= BIT STRING (SIZE (12)) + +NextPagingAreaScope ::= ENUMERATED { + same, + changed, + ... +} + +NumberofBroadcastRequest ::= INTEGER (0..65535) + +NumberOfBroadcasts ::= INTEGER (0..65535) + +-- O +OldBSS-ToNewBSS-Information ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +OverloadAction ::= ENUMERATED { + reject-non-emergency-mo-dt, + reject-rrc-cr-signalling, + permit-emergency-sessions-and-mobile-terminated-services-only, + ..., + permit-high-priority-sessions-and-mobile-terminated-services-only, + reject-delay-tolerant-access, + permit-high-priority-sessions-and-exception-reporting-and-mobile-terminated-services-only, + not-accept-mo-data-or-delay-tolerant-access-from-CP-CIoT + +} + +OverloadResponse ::= CHOICE { + overloadAction OverloadAction, + ... +} + + +-- P + +PagingAttemptInformation ::= SEQUENCE { + pagingAttemptCount PagingAttemptCount, + intendedNumberOfPagingAttempts IntendedNumberOfPagingAttempts, + nextPagingAreaScope NextPagingAreaScope OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { PagingAttemptInformation-ExtIEs} } OPTIONAL, + ... +} + +PagingAttemptInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PagingAttemptCount ::= INTEGER (1..16, ...) + +Paging-eDRXInformation ::= SEQUENCE { + paging-eDRX-Cycle Paging-eDRX-Cycle, + pagingTimeWindow PagingTimeWindow OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { Paging-eDRXInformation-ExtIEs} } OPTIONAL, + ... +} + +Paging-eDRXInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Paging-eDRX-Cycle ::= ENUMERATED{hfhalf, hf1, hf2, hf4, hf6, hf8, hf10, hf12, hf14, hf16, hf32, hf64, hf128, hf256, ...} + +PagingTimeWindow ::= ENUMERATED{s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, ...} + +PagingDRX ::= ENUMERATED { + v32, + v64, + v128, + v256, + ... + } + +PagingPriority ::= ENUMERATED { + priolevel1, + priolevel2, + priolevel3, + priolevel4, + priolevel5, + priolevel6, + priolevel7, + priolevel8, + ... +} + +PDCP-SN ::= INTEGER (0..4095) + +PDCP-SNExtended ::= INTEGER (0..32767) + +PDCP-SNlength18 ::= INTEGER (0..262143) + +M1PeriodicReporting ::= SEQUENCE { + reportInterval ReportIntervalMDT, + reportAmount ReportAmountMDT, + iE-Extensions ProtocolExtensionContainer { { M1PeriodicReporting-ExtIEs} } OPTIONAL, + ... +} + +M1PeriodicReporting-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +PLMNidentity ::= TBCD-STRING + +Port-Number ::= OCTET STRING (SIZE (2)) + +Pre-emptionCapability ::= ENUMERATED { + shall-not-trigger-pre-emption, + may-trigger-pre-emption +} + +Pre-emptionVulnerability ::= ENUMERATED { + not-pre-emptable, + pre-emptable +} + +PriorityLevel ::= INTEGER { spare (0), highest (1), lowest (14), no-priority (15) } (0..15) + +ProSeAuthorized ::= SEQUENCE { + proSeDirectDiscovery ProSeDirectDiscovery OPTIONAL, + proSeDirectCommunication ProSeDirectCommunication OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {ProSeAuthorized-ExtIEs} } OPTIONAL, + ... +} + +ProSeAuthorized-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + { ID id-ProSeUEtoNetworkRelaying CRITICALITY ignore EXTENSION ProSeUEtoNetworkRelaying PRESENCE optional}, + ... +} + +ProSeDirectDiscovery ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +ProSeUEtoNetworkRelaying ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +ProSeDirectCommunication ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +PS-ServiceNotAvailable ::= ENUMERATED { + ps-service-not-available, + ... +} + +-- Q + +QCI ::= INTEGER (0..255) + +-- R + +ReceiveStatusofULPDCPSDUs ::= BIT STRING (SIZE(4096)) + +ReceiveStatusOfULPDCPSDUsExtended ::= BIT STRING (SIZE(1..16384)) + +ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 ::= BIT STRING (SIZE(1..131072)) + +RecommendedCellsForPaging ::= SEQUENCE { + recommendedCellList RecommendedCellList, + iE-Extensions ProtocolExtensionContainer { { RecommendedCellsForPaging-ExtIEs} } OPTIONAL, + ... +} + +RecommendedCellsForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RecommendedCellList ::= SEQUENCE (SIZE(1.. maxnoofRecommendedCells)) OF ProtocolIE-SingleContainer { { RecommendedCellItemIEs } } + +RecommendedCellItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-RecommendedCellItem CRITICALITY ignore TYPE RecommendedCellItem PRESENCE mandatory }, + ... +} + +RecommendedCellItem::= SEQUENCE { + eUTRAN-CGI EUTRAN-CGI, + timeStayedInCell INTEGER (0..4095) OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { RecommendedCellsForPagingItem-ExtIEs} } OPTIONAL, + ... +} + +RecommendedCellsForPagingItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RecommendedENBsForPaging ::= SEQUENCE { + recommendedENBList RecommendedENBList, + iE-Extensions ProtocolExtensionContainer { { RecommendedENBsForPaging-ExtIEs} } OPTIONAL, + ... +} + +RecommendedENBsForPaging-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RecommendedENBList::= SEQUENCE (SIZE(1.. maxnoofRecommendedENBs)) OF ProtocolIE-SingleContainer { { RecommendedENBItemIEs } } + +RecommendedENBItemIEs S1AP-PROTOCOL-IES ::= { + { ID id-RecommendedENBItem CRITICALITY ignore TYPE RecommendedENBItem PRESENCE mandatory }, + ... +} + +RecommendedENBItem ::= SEQUENCE { + mMEPagingTarget MMEPagingTarget, + iE-Extensions ProtocolExtensionContainer { { RecommendedENBItem-ExtIEs} } OPTIONAL, + ... +} + +RecommendedENBItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RelativeMMECapacity ::= INTEGER (0..255) + +RelayNode-Indicator ::= ENUMERATED { + true, + ... +} + +RAC ::= OCTET STRING (SIZE (1)) + +RAT-Type ::= ENUMERATED { + nbiot, + ... +} + +ReportAmountMDT ::= ENUMERATED{r1, r2, r4, r8, r16, r32, r64, rinfinity} + +ReportIntervalMDT ::= ENUMERATED {ms120, ms240, ms480, ms640, ms1024, ms2048, ms5120, ms10240, min1, min6, min12, min30, min60} + +M1ReportingTrigger ::= ENUMERATED{ + periodic, + a2eventtriggered, + ..., + a2eventtriggered-periodic +} + +RequestType ::= SEQUENCE { + eventType EventType, + reportArea ReportArea, + iE-Extensions ProtocolExtensionContainer { { RequestType-ExtIEs} } OPTIONAL, + ... +} + + +RequestType-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RIMTransfer ::= SEQUENCE { + rIMInformation RIMInformation, + rIMRoutingAddress RIMRoutingAddress OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { RIMTransfer-ExtIEs} } OPTIONAL, + ... +} + +RIMTransfer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RIMInformation ::= OCTET STRING + +RIMRoutingAddress ::= CHOICE { + gERAN-Cell-ID GERAN-Cell-ID, + ..., + targetRNC-ID TargetRNC-ID, + eHRPD-Sector-ID OCTET STRING (SIZE(16)) +} + +ReportArea ::= ENUMERATED { + ecgi, + ... +} + +RepetitionPeriod ::= INTEGER (0..4095) + +RLFReportInformation ::= SEQUENCE { + uE-RLF-Report-Container UE-RLF-Report-Container, + uE-RLF-Report-Container-for-extended-bands UE-RLF-Report-Container-for-extended-bands OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{ RLFReportInformation-ExtIEs}} OPTIONAL, + ... +} + +RLFReportInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +RNC-ID ::= INTEGER (0..4095) + +RRC-Container ::= OCTET STRING + +RRC-Establishment-Cause ::= ENUMERATED { + emergency, + highPriorityAccess, + mt-Access, + mo-Signalling, + mo-Data, + ..., + delay-TolerantAccess, + mo-VoiceCall, + mo-ExceptionData +} + +ECGIListForRestart ::= SEQUENCE (SIZE(1..maxnoofCellsforRestart)) OF EUTRAN-CGI + +Routing-ID ::= INTEGER (0..255) + +-- S + + +SecurityKey ::= BIT STRING (SIZE(256)) + + + +SecurityContext ::= SEQUENCE { + nextHopChainingCount INTEGER (0..7), + nextHopParameter SecurityKey, + iE-Extensions ProtocolExtensionContainer { { SecurityContext-ExtIEs} } OPTIONAL, + ... +} + + +SecurityContext-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +SerialNumber ::= BIT STRING (SIZE (16)) + +SONInformation ::= CHOICE{ + sONInformationRequest SONInformationRequest, + sONInformationReply SONInformationReply, + ..., + sONInformation-Extension SONInformation-Extension +} + +SONInformation-Extension ::= ProtocolIE-SingleContainer {{ SONInformation-ExtensionIE }} + +SONInformation-ExtensionIE S1AP-PROTOCOL-IES ::= { + { ID id-SON-Information-Report CRITICALITY ignore TYPE SONInformationReport PRESENCE mandatory} +} + +SONInformationRequest ::= ENUMERATED { + x2TNL-Configuration-Info, + ..., + time-Synchronisation-Info, + activate-Muting, + deactivate-Muting} + +SONInformationReply ::= SEQUENCE { + x2TNLConfigurationInfo X2TNLConfigurationInfo OPTIONAL, + iE-Extensions ProtocolExtensionContainer {{SONInformationReply-ExtIEs}} OPTIONAL, + ... +} + +SONInformationReply-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Release 9 to transfer Time synchronisation information -- + {ID id-Time-Synchronisation-Info CRITICALITY ignore EXTENSION TimeSynchronisationInfo PRESENCE optional}, + ..., + {ID id-Muting-Pattern-Information CRITICALITY ignore EXTENSION MutingPatternInformation PRESENCE optional} +} + +SONInformationReport ::= CHOICE{ + rLFReportInformation RLFReportInformation, + ... +} + +SONConfigurationTransfer ::= SEQUENCE { + targeteNB-ID TargeteNB-ID, + sourceeNB-ID SourceeNB-ID, + sONInformation SONInformation, + iE-Extensions ProtocolExtensionContainer { { SONConfigurationTransfer-ExtIEs} } OPTIONAL, +... +} + +SONConfigurationTransfer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Release 10 to transfer the IP addresses of the eNB initiating the ANR action -- + {ID id-x2TNLConfigurationInfo CRITICALITY ignore EXTENSION X2TNLConfigurationInfo PRESENCE conditional + -- This IE shall be present if the SON Information IE contains the SON Information Request IE and the SON Information Request IE is set to "X2TNL Configuration Info" --}| +-- Extension for Release 12 to transfer information concerning the source cell of synchronisation and the aggressor cell -- + {ID id-Synchronisation-Information CRITICALITY ignore EXTENSION SynchronisationInformation PRESENCE conditional + -- This IE shall be present if the SON Information IE contains the SON Information Request IE set to " Activate Muting " --}, + ... +} + + +SynchronisationInformation ::= SEQUENCE { + sourceStratumLevel StratumLevel OPTIONAL, + listeningSubframePattern ListeningSubframePattern OPTIONAL, + aggressoreCGI-List ECGI-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {SynchronisationInformation-ExtIEs} } OPTIONAL, + ... +} + +SynchronisationInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +Source-ToTarget-TransparentContainer ::= OCTET STRING +-- This IE includes a transparent container from the source RAN node to the target RAN node. +-- The octets of the OCTET STRING are encoded according to the specifications of the target system. + +SourceBSS-ToTargetBSS-TransparentContainer ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +SourceeNB-ID ::= SEQUENCE { + global-ENB-ID Global-ENB-ID, + selected-TAI TAI, + iE-Extensions ProtocolExtensionContainer { {SourceeNB-ID-ExtIEs} } OPTIONAL +} + +SourceeNB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +SRVCCOperationNotPossible ::= ENUMERATED { + notPossible, + ... +} + +SRVCCOperationPossible ::= ENUMERATED { + possible, + ... +} + +SRVCCHOIndication ::= ENUMERATED { + pSandCS, + cSonly, + ... +} + +SourceeNB-ToTargeteNB-TransparentContainer ::= SEQUENCE { + rRC-Container RRC-Container, + e-RABInformationList E-RABInformationList OPTIONAL, + targetCell-ID EUTRAN-CGI, + subscriberProfileIDforRFP SubscriberProfileIDforRFP OPTIONAL, + uE-HistoryInformation UE-HistoryInformation, + iE-Extensions ProtocolExtensionContainer { {SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +SourceeNB-ToTargeteNB-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + {ID id-MobilityInformation CRITICALITY ignore EXTENSION MobilityInformation PRESENCE optional}| + {ID id-uE-HistoryInformationFromTheUE CRITICALITY ignore EXTENSION UE-HistoryInformationFromTheUE PRESENCE optional}, + ... +} + + +SourceRNC-ToTargetRNC-TransparentContainer ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + + +ServedGUMMEIs ::= SEQUENCE (SIZE (1.. maxnoofRATs)) OF ServedGUMMEIsItem + +ServedGUMMEIsItem ::= SEQUENCE { + servedPLMNs ServedPLMNs, + servedGroupIDs ServedGroupIDs, + servedMMECs ServedMMECs, + iE-Extensions ProtocolExtensionContainer { {ServedGUMMEIsItem-ExtIEs} } OPTIONAL, + ... +} + +ServedGUMMEIsItem-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ServedGroupIDs ::= SEQUENCE (SIZE(1.. maxnoofGroupIDs)) OF MME-Group-ID +ServedMMECs ::= SEQUENCE (SIZE(1.. maxnoofMMECs)) OF MME-Code + +ServedPLMNs ::= SEQUENCE (SIZE(1.. maxnoofPLMNsPerMME)) OF PLMNidentity + +SubscriberProfileIDforRFP ::= INTEGER (1..256) + +SupportedTAs ::= SEQUENCE (SIZE(1.. maxnoofTACs)) OF SupportedTAs-Item + +SupportedTAs-Item ::= SEQUENCE { + tAC TAC, + broadcastPLMNs BPLMNs, + iE-Extensions ProtocolExtensionContainer { {SupportedTAs-Item-ExtIEs} } OPTIONAL, + ... +} + +SupportedTAs-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + -- Extension for Release 13 to transfer RAT-Type per TAC -- + {ID id-RAT-Type CRITICALITY reject EXTENSION RAT-Type PRESENCE optional}, + ... +} + +StratumLevel ::= INTEGER (0..3, ...) + +SynchronisationStatus ::= ENUMERATED { synchronous, asynchronous, ... } + +TimeSynchronisationInfo ::= SEQUENCE { + stratumLevel StratumLevel, + synchronisationStatus SynchronisationStatus, + iE-Extensions ProtocolExtensionContainer { { TimeSynchronisationInfo-ExtIEs} } OPTIONAL, + ... +} + +TimeSynchronisationInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + -- Extension for Release 12 to transfer Muting Availability Indication -- + {ID id-Muting-Availability-Indication CRITICALITY ignore EXTENSION MutingAvailabilityIndication PRESENCE optional}, + ... +} + +S-TMSI ::= SEQUENCE { + mMEC MME-Code, + m-TMSI M-TMSI, + iE-Extensions ProtocolExtensionContainer { {S-TMSI-ExtIEs} } OPTIONAL, + ... +} + +S-TMSI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +-- T + +TAC ::= OCTET STRING (SIZE (2)) + +TAIBasedMDT ::= SEQUENCE { + tAIListforMDT TAIListforMDT, + iE-Extensions ProtocolExtensionContainer { {TAIBasedMDT-ExtIEs} } OPTIONAL, + ... +} + +TAIBasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAIListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAI + +TAIListforWarning ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI + +TAI ::= SEQUENCE { + pLMNidentity PLMNidentity, + tAC TAC, + iE-Extensions ProtocolExtensionContainer { {TAI-ExtIEs} } OPTIONAL, + ... +} + +TAI-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAI-Broadcast ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI-Broadcast-Item + +TAI-Broadcast-Item ::= SEQUENCE { + tAI TAI, + completedCellinTAI CompletedCellinTAI, + iE-Extensions ProtocolExtensionContainer { {TAI-Broadcast-Item-ExtIEs} } OPTIONAL, + ... +} + +TAI-Broadcast-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAI-Cancelled ::= SEQUENCE (SIZE(1..maxnoofTAIforWarning)) OF TAI-Cancelled-Item + +TAI-Cancelled-Item ::= SEQUENCE { + tAI TAI, + cancelledCellinTAI CancelledCellinTAI, + iE-Extensions ProtocolExtensionContainer { {TAI-Cancelled-Item-ExtIEs} } OPTIONAL, + ... +} + +TAI-Cancelled-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TABasedMDT ::= SEQUENCE { + tAListforMDT TAListforMDT, + iE-Extensions ProtocolExtensionContainer { {TABasedMDT-ExtIEs} } OPTIONAL, + ... +} + +TABasedMDT-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TAListforMDT ::= SEQUENCE (SIZE(1..maxnoofTAforMDT)) OF TAC + +CompletedCellinTAI ::= SEQUENCE (SIZE(1..maxnoofCellinTAI)) OF CompletedCellinTAI-Item + +CompletedCellinTAI-Item ::= SEQUENCE{ + eCGI EUTRAN-CGI, + iE-Extensions ProtocolExtensionContainer { {CompletedCellinTAI-Item-ExtIEs} } OPTIONAL, + ... +} + +CompletedCellinTAI-Item-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TBCD-STRING ::= OCTET STRING (SIZE (3)) + +TargetID ::= CHOICE { + targeteNB-ID TargeteNB-ID, + targetRNC-ID TargetRNC-ID, + cGI CGI, + ... +} + +TargeteNB-ID ::= SEQUENCE { + global-ENB-ID Global-ENB-ID, + selected-TAI TAI, + iE-Extensions ProtocolExtensionContainer { {TargeteNB-ID-ExtIEs} } OPTIONAL, + ... +} + +TargeteNB-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TargetRNC-ID ::= SEQUENCE { + lAI LAI, + rAC RAC OPTIONAL, + rNC-ID RNC-ID, + extendedRNC-ID ExtendedRNC-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {TargetRNC-ID-ExtIEs} } OPTIONAL, + ... + } + + +TargetRNC-ID-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +TargeteNB-ToSourceeNB-TransparentContainer ::= SEQUENCE { + rRC-Container RRC-Container, + iE-Extensions ProtocolExtensionContainer { {TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs} } OPTIONAL, + ... +} + +TargeteNB-ToSourceeNB-TransparentContainer-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Target-ToSource-TransparentContainer ::= OCTET STRING +-- This IE includes a transparent container from the target RAN node to the source RAN node. +-- The octets of the OCTET STRING are coded according to the specifications of the target system. + +TargetRNC-ToSourceRNC-TransparentContainer ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +TargetBSS-ToSourceBSS-TransparentContainer ::= OCTET STRING +-- This is a dummy IE used only as a reference to the actual definition in relevant specification. + +M1ThresholdEventA2 ::= SEQUENCE { + measurementThreshold MeasurementThresholdA2, + iE-Extensions ProtocolExtensionContainer { { M1ThresholdEventA2-ExtIEs} } OPTIONAL, + ... +} + +M1ThresholdEventA2-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +Threshold-RSRP ::= INTEGER(0..97) + +Threshold-RSRQ ::= INTEGER(0..34) + +TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...} + +Time-UE-StayedInCell ::= INTEGER (0..4095) + +Time-UE-StayedInCell-EnhancedGranularity ::= INTEGER (0..40950) + +TransportInformation ::= SEQUENCE { + transportLayerAddress TransportLayerAddress, + uL-GTP-TEID GTP-TEID, + ... +} + +TransportLayerAddress ::= BIT STRING (SIZE(1..160, ...)) + +TraceActivation ::= SEQUENCE { + e-UTRAN-Trace-ID E-UTRAN-Trace-ID, + interfacesToTrace InterfacesToTrace, +traceDepth TraceDepth, +traceCollectionEntityIPAddress TransportLayerAddress, + iE-Extensions ProtocolExtensionContainer { { TraceActivation-ExtIEs} } OPTIONAL, + ... +} + +TraceActivation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Rel-10 to support MDT -- + { ID id-MDTConfiguration CRITICALITY ignore EXTENSION MDT-Configuration PRESENCE optional }, + ... +} + +TraceDepth ::= ENUMERATED { + minimum, + medium, + maximum, + minimumWithoutVendorSpecificExtension, + mediumWithoutVendorSpecificExtension, + maximumWithoutVendorSpecificExtension, + ... +} + +E-UTRAN-Trace-ID ::= OCTET STRING (SIZE (8)) + +TrafficLoadReductionIndication ::= INTEGER (1..99) + +TunnelInformation ::= SEQUENCE { + transportLayerAddress TransportLayerAddress, + uDP-Port-Number Port-Number OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {Tunnel-Information-ExtIEs} } OPTIONAL, + ... +} + +Tunnel-Information-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} + +TAIListForRestart ::= SEQUENCE (SIZE(1..maxnoofRestartTAIs)) OF TAI + +-- U + +UEAggregateMaximumBitrate ::= SEQUENCE { + uEaggregateMaximumBitRateDL BitRate, + uEaggregateMaximumBitRateUL BitRate, + iE-Extensions ProtocolExtensionContainer { {UEAggregate-MaximumBitrates-ExtIEs} } OPTIONAL, + ... +} + +UEAggregate-MaximumBitrates-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UE-RetentionInformation ::= ENUMERATED { + ues-retained, + ...} + +UE-S1AP-IDs ::= CHOICE{ + uE-S1AP-ID-pair UE-S1AP-ID-pair, + mME-UE-S1AP-ID MME-UE-S1AP-ID, + ... +} + +UE-S1AP-ID-pair ::= SEQUENCE{ + mME-UE-S1AP-ID MME-UE-S1AP-ID, + eNB-UE-S1AP-ID ENB-UE-S1AP-ID, + iE-Extensions ProtocolExtensionContainer { {UE-S1AP-ID-pair-ExtIEs} } OPTIONAL, + ... +} +UE-S1AP-ID-pair-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + + +UE-associatedLogicalS1-ConnectionItem ::= SEQUENCE { + mME-UE-S1AP-ID MME-UE-S1AP-ID OPTIONAL, + eNB-UE-S1AP-ID ENB-UE-S1AP-ID OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { UE-associatedLogicalS1-ConnectionItemExtIEs} } OPTIONAL, + ... +} + + +UE-associatedLogicalS1-ConnectionItemExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UEIdentityIndexValue ::= BIT STRING (SIZE (10)) + +UE-HistoryInformation ::= SEQUENCE (SIZE(1..maxnoofCells)) OF LastVisitedCell-Item + +UE-HistoryInformationFromTheUE ::= OCTET STRING +-- This IE is a transparent container and shall be encoded as the VisitedCellInfoList field contained in the UEInformationResponse message as defined in TS 36.331 [16] + +UEPagingID ::= CHOICE { + s-TMSI S-TMSI, + iMSI IMSI, + ... + } + +UERadioCapability ::= OCTET STRING + +UERadioCapabilityForPaging ::= OCTET STRING + +UE-RLF-Report-Container ::= OCTET STRING +-- This IE is a transparent container and shall be encoded as the rlf-Report-r9 field contained in the UEInformationResponse message as defined in TS 36.331 [16] + +UE-RLF-Report-Container-for-extended-bands ::= OCTET STRING +-- This IE is a transparent container and shall be encoded as the rlf-Report-v9e0 contained in the UEInformationResponse message as defined in TS 36.331 [16] + +UESecurityCapabilities ::= SEQUENCE { + encryptionAlgorithms EncryptionAlgorithms, + integrityProtectionAlgorithms IntegrityProtectionAlgorithms, + iE-Extensions ProtocolExtensionContainer { { UESecurityCapabilities-ExtIEs} } OPTIONAL, +... +} + +UESecurityCapabilities-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UESidelinkAggregateMaximumBitrate ::= SEQUENCE { + uESidelinkAggregateMaximumBitRate BitRate, + iE-Extensions ProtocolExtensionContainer { {UE-Sidelink-Aggregate-MaximumBitrates-ExtIEs} } OPTIONAL, + ... +} + +UE-Sidelink-Aggregate-MaximumBitrates-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UE-Usage-Type ::= INTEGER (0..255) + +UL-CP-SecurityInformation ::= SEQUENCE { + ul-NAS-MAC UL-NAS-MAC, + ul-NAS-Count UL-NAS-Count, + iE-Extensions ProtocolExtensionContainer { { UL-CP-SecurityInformation-ExtIEs} } OPTIONAL, + ... +} + +UL-CP-SecurityInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UL-NAS-MAC ::= BIT STRING (SIZE (16)) + +UL-NAS-Count ::= BIT STRING (SIZE (5)) + + +UserLocationInformation ::= SEQUENCE { + eutran-cgi EUTRAN-CGI, + tai TAI, + iE-Extensions ProtocolExtensionContainer { { UserLocationInformation-ExtIEs} } OPTIONAL, + ... +} + +UserLocationInformation-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +UEUserPlaneCIoTSupportIndicator ::= ENUMERATED { + supported, + ... +} + +-- V + +VoiceSupportMatchIndicator ::= ENUMERATED { + supported, + not-supported, + ... +} + +V2XServicesAuthorized ::= SEQUENCE { + vehicleUE VehicleUE OPTIONAL, + pedestrianUE PedestrianUE OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {V2XServicesAuthorized-ExtIEs} } OPTIONAL, + ... +} + +V2XServicesAuthorized-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +VehicleUE ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +PedestrianUE ::= ENUMERATED { + authorized, + not-authorized, + ... +} + +-- W + +WarningAreaList ::= CHOICE { + cellIDList ECGIList, + trackingAreaListforWarning TAIListforWarning, + emergencyAreaIDList EmergencyAreaIDList, + ... +} + + +WarningType ::= OCTET STRING (SIZE (2)) + +WarningSecurityInfo ::= OCTET STRING (SIZE (50)) + + +WarningMessageContents ::= OCTET STRING (SIZE(1..9600)) + + +-- X + + +X2TNLConfigurationInfo ::= SEQUENCE { + eNBX2TransportLayerAddresses ENBX2TLAs, + iE-Extensions ProtocolExtensionContainer { { X2TNLConfigurationInfo-ExtIEs} } OPTIONAL, + ... +} + +X2TNLConfigurationInfo-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { +-- Extension for Release 10 to transfer the IPsec and U-plane addresses during ANR action -- + {ID id-eNBX2ExtendedTransportLayerAddresses CRITICALITY ignore EXTENSION ENBX2ExtTLAs PRESENCE optional}| +-- Extension for Release 12 to transfer the IP addresses of the X2 GW -- + {ID id-eNBIndirectX2TransportLayerAddresses CRITICALITY ignore EXTENSION ENBIndirectX2TransportLayerAddresses PRESENCE optional}, + ... +} + +ENBX2ExtTLAs ::= SEQUENCE (SIZE(1.. maxnoofeNBX2ExtTLAs)) OF ENBX2ExtTLA + +ENBX2ExtTLA ::= SEQUENCE { + iPsecTLA TransportLayerAddress OPTIONAL, + gTPTLAa ENBX2GTPTLAs OPTIONAL, + iE-Extensions ProtocolExtensionContainer { { ENBX2ExtTLA-ExtIEs} } OPTIONAL, + ... +} + +ENBX2ExtTLA-ExtIEs S1AP-PROTOCOL-EXTENSION ::= { + ... +} + +ENBX2GTPTLAs ::= SEQUENCE (SIZE(1.. maxnoofeNBX2GTPTLAs)) OF TransportLayerAddress + +ENBIndirectX2TransportLayerAddresses ::= SEQUENCE (SIZE(1..maxnoofeNBX2TLAs)) OF TransportLayerAddress + +-- Y +-- Z + +END + +9.3.5 Common Definitions +-- ************************************************************** +-- +-- Common definitions +-- +-- ************************************************************** + +S1AP-CommonDataTypes { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-CommonDataTypes (3) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +Criticality ::= ENUMERATED { reject, ignore, notify } + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +PrivateIE-ID ::= CHOICE { + local INTEGER (0..65535), + global OBJECT IDENTIFIER +} + +ProcedureCode ::= INTEGER (0..255) + +ProtocolExtensionID ::= INTEGER (0..65535) + +ProtocolIE-ID ::= INTEGER (0..65535) + +TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome } + +END + +9.3.6 Constant Definitions +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + +S1AP-Constants { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Constants (4) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + ProcedureCode, + ProtocolIE-ID + +FROM S1AP-CommonDataTypes; + + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** + +id-HandoverPreparation ProcedureCode ::= 0 +id-HandoverResourceAllocation ProcedureCode ::= 1 +id-HandoverNotification ProcedureCode ::= 2 +id-PathSwitchRequest ProcedureCode ::= 3 +id-HandoverCancel ProcedureCode ::= 4 +id-E-RABSetup ProcedureCode ::= 5 +id-E-RABModify ProcedureCode ::= 6 +id-E-RABRelease ProcedureCode ::= 7 +id-E-RABReleaseIndication ProcedureCode ::= 8 +id-InitialContextSetup ProcedureCode ::= 9 +id-Paging ProcedureCode ::= 10 +id-downlinkNASTransport ProcedureCode ::= 11 +id-initialUEMessage ProcedureCode ::= 12 +id-uplinkNASTransport ProcedureCode ::= 13 +id-Reset ProcedureCode ::= 14 +id-ErrorIndication ProcedureCode ::= 15 +id-NASNonDeliveryIndication ProcedureCode ::= 16 +id-S1Setup ProcedureCode ::= 17 +id-UEContextReleaseRequest ProcedureCode ::= 18 +id-DownlinkS1cdma2000tunnelling ProcedureCode ::= 19 +id-UplinkS1cdma2000tunnelling ProcedureCode ::= 20 +id-UEContextModification ProcedureCode ::= 21 +id-UECapabilityInfoIndication ProcedureCode ::= 22 +id-UEContextRelease ProcedureCode ::= 23 +id-eNBStatusTransfer ProcedureCode ::= 24 +id-MMEStatusTransfer ProcedureCode ::= 25 +id-DeactivateTrace ProcedureCode ::= 26 +id-TraceStart ProcedureCode ::= 27 +id-TraceFailureIndication ProcedureCode ::= 28 +id-ENBConfigurationUpdate ProcedureCode ::= 29 +id-MMEConfigurationUpdate ProcedureCode ::= 30 +id-LocationReportingControl ProcedureCode ::= 31 +id-LocationReportingFailureIndication ProcedureCode ::= 32 +id-LocationReport ProcedureCode ::= 33 +id-OverloadStart ProcedureCode ::= 34 +id-OverloadStop ProcedureCode ::= 35 +id-WriteReplaceWarning ProcedureCode ::= 36 +id-eNBDirectInformationTransfer ProcedureCode ::= 37 +id-MMEDirectInformationTransfer ProcedureCode ::= 38 +id-PrivateMessage ProcedureCode ::= 39 +id-eNBConfigurationTransfer ProcedureCode ::= 40 +id-MMEConfigurationTransfer ProcedureCode ::= 41 +id-CellTrafficTrace ProcedureCode ::= 42 +id-Kill ProcedureCode ::= 43 +id-downlinkUEAssociatedLPPaTransport ProcedureCode ::= 44 +id-uplinkUEAssociatedLPPaTransport ProcedureCode ::= 45 +id-downlinkNonUEAssociatedLPPaTransport ProcedureCode ::= 46 +id-uplinkNonUEAssociatedLPPaTransport ProcedureCode ::= 47 +id-UERadioCapabilityMatch ProcedureCode ::= 48 +id-PWSRestartIndication ProcedureCode ::= 49 +id-E-RABModificationIndication ProcedureCode ::= 50 +id-PWSFailureIndication ProcedureCode ::= 51 +id-RerouteNASRequest ProcedureCode ::= 52 +id-UEContextModificationIndication ProcedureCode ::= 53 +id-ConnectionEstablishmentIndication ProcedureCode ::= 54 +id-UEContextSuspend ProcedureCode ::= 55 +id-UEContextResume ProcedureCode ::= 56 +id-NASDeliveryIndication ProcedureCode ::= 57 +id-RetrieveUEInformation ProcedureCode ::= 58 +id-UEInformationTransfer ProcedureCode ::= 59 +id-eNBCPRelocationIndication ProcedureCode ::= 60 +id-MMECPRelocationIndication ProcedureCode ::= 61 + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +maxPrivateIEs INTEGER ::= 65535 +maxProtocolExtensions INTEGER ::= 65535 +maxProtocolIEs INTEGER ::= 65535 +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + +maxnoofCSGs INTEGER ::= 256 +maxnoofE-RABs INTEGER ::= 256 +maxnoofTAIs INTEGER ::= 256 +maxnoofTACs INTEGER ::= 256 +maxnoofErrors INTEGER ::= 256 +maxnoofBPLMNs INTEGER ::= 6 +maxnoofPLMNsPerMME INTEGER ::= 32 +maxnoofEPLMNs INTEGER ::= 15 +maxnoofEPLMNsPlusOne INTEGER ::= 16 +maxnoofForbLACs INTEGER ::= 4096 +maxnoofForbTACs INTEGER ::= 4096 +maxnoofIndividualS1ConnectionsToReset INTEGER ::= 256 +maxnoofCells INTEGER ::= 16 +maxnoofCellsineNB INTEGER ::= 256 +maxnoofTAIforWarning INTEGER ::= 65535 +maxnoofCellID INTEGER ::= 65535 +maxnoofDCNs INTEGER ::= 32 +maxnoofEmergencyAreaID INTEGER ::= 65535 +maxnoofCellinTAI INTEGER ::= 65535 +maxnoofCellinEAI INTEGER ::= 65535 +maxnoofeNBX2TLAs INTEGER ::= 2 +maxnoofeNBX2ExtTLAs INTEGER ::= 16 +maxnoofeNBX2GTPTLAs INTEGER ::= 16 +maxnoofRATs INTEGER ::= 8 +maxnoofGroupIDs INTEGER ::= 65535 +maxnoofMMECs INTEGER ::= 256 +maxnoofCellIDforMDT INTEGER ::= 32 +maxnoofTAforMDT INTEGER ::= 8 +maxnoofMDTPLMNs INTEGER ::= 16 +maxnoofCellsforRestart INTEGER ::= 256 +maxnoofRestartTAIs INTEGER ::= 2048 +maxnoofRestartEmergencyAreaIDs INTEGER ::= 256 +maxEARFCN INTEGER ::= 262143 +maxnoofMBSFNAreaMDT INTEGER ::= 8 +maxnoofRecommendedCells INTEGER ::= 16 +maxnoofRecommendedENBs INTEGER ::= 16 + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** + +id-MME-UE-S1AP-ID ProtocolIE-ID ::= 0 +id-HandoverType ProtocolIE-ID ::= 1 +id-Cause ProtocolIE-ID ::= 2 +id-SourceID ProtocolIE-ID ::= 3 +id-TargetID ProtocolIE-ID ::= 4 +id-eNB-UE-S1AP-ID ProtocolIE-ID ::= 8 +id-E-RABSubjecttoDataForwardingList ProtocolIE-ID ::= 12 +id-E-RABtoReleaseListHOCmd ProtocolIE-ID ::= 13 +id-E-RABDataForwardingItem ProtocolIE-ID ::= 14 +id-E-RABReleaseItemBearerRelComp ProtocolIE-ID ::= 15 +id-E-RABToBeSetupListBearerSUReq ProtocolIE-ID ::= 16 +id-E-RABToBeSetupItemBearerSUReq ProtocolIE-ID ::= 17 +id-E-RABAdmittedList ProtocolIE-ID ::= 18 +id-E-RABFailedToSetupListHOReqAck ProtocolIE-ID ::= 19 +id-E-RABAdmittedItem ProtocolIE-ID ::= 20 +id-E-RABFailedtoSetupItemHOReqAck ProtocolIE-ID ::= 21 +id-E-RABToBeSwitchedDLList ProtocolIE-ID ::= 22 +id-E-RABToBeSwitchedDLItem ProtocolIE-ID ::= 23 +id-E-RABToBeSetupListCtxtSUReq ProtocolIE-ID ::= 24 +id-TraceActivation ProtocolIE-ID ::= 25 +id-NAS-PDU ProtocolIE-ID ::= 26 +id-E-RABToBeSetupItemHOReq ProtocolIE-ID ::= 27 +id-E-RABSetupListBearerSURes ProtocolIE-ID ::= 28 +id-E-RABFailedToSetupListBearerSURes ProtocolIE-ID ::= 29 +id-E-RABToBeModifiedListBearerModReq ProtocolIE-ID ::= 30 +id-E-RABModifyListBearerModRes ProtocolIE-ID ::= 31 +id-E-RABFailedToModifyList ProtocolIE-ID ::= 32 +id-E-RABToBeReleasedList ProtocolIE-ID ::= 33 +id-E-RABFailedToReleaseList ProtocolIE-ID ::= 34 +id-E-RABItem ProtocolIE-ID ::= 35 +id-E-RABToBeModifiedItemBearerModReq ProtocolIE-ID ::= 36 +id-E-RABModifyItemBearerModRes ProtocolIE-ID ::= 37 +id-E-RABReleaseItem ProtocolIE-ID ::= 38 +id-E-RABSetupItemBearerSURes ProtocolIE-ID ::= 39 +id-SecurityContext ProtocolIE-ID ::= 40 +id-HandoverRestrictionList ProtocolIE-ID ::= 41 +id-UEPagingID ProtocolIE-ID ::= 43 +id-pagingDRX ProtocolIE-ID ::= 44 +id-TAIList ProtocolIE-ID ::= 46 +id-TAIItem ProtocolIE-ID ::= 47 +id-E-RABFailedToSetupListCtxtSURes ProtocolIE-ID ::= 48 +id-E-RABReleaseItemHOCmd ProtocolIE-ID ::= 49 +id-E-RABSetupItemCtxtSURes ProtocolIE-ID ::= 50 +id-E-RABSetupListCtxtSURes ProtocolIE-ID ::= 51 +id-E-RABToBeSetupItemCtxtSUReq ProtocolIE-ID ::= 52 +id-E-RABToBeSetupListHOReq ProtocolIE-ID ::= 53 +id-GERANtoLTEHOInformationRes ProtocolIE-ID ::= 55 +id-UTRANtoLTEHOInformationRes ProtocolIE-ID ::= 57 +id-CriticalityDiagnostics ProtocolIE-ID ::= 58 +id-Global-ENB-ID ProtocolIE-ID ::= 59 +id-eNBname ProtocolIE-ID ::= 60 +id-MMEname ProtocolIE-ID ::= 61 +id-ServedPLMNs ProtocolIE-ID ::= 63 +id-SupportedTAs ProtocolIE-ID ::= 64 +id-TimeToWait ProtocolIE-ID ::= 65 +id-uEaggregateMaximumBitrate ProtocolIE-ID ::= 66 +id-TAI ProtocolIE-ID ::= 67 +id-E-RABReleaseListBearerRelComp ProtocolIE-ID ::= 69 +id-cdma2000PDU ProtocolIE-ID ::= 70 +id-cdma2000RATType ProtocolIE-ID ::= 71 +id-cdma2000SectorID ProtocolIE-ID ::= 72 +id-SecurityKey ProtocolIE-ID ::= 73 +id-UERadioCapability ProtocolIE-ID ::= 74 +id-GUMMEI-ID ProtocolIE-ID ::= 75 +id-E-RABInformationListItem ProtocolIE-ID ::= 78 +id-Direct-Forwarding-Path-Availability ProtocolIE-ID ::= 79 +id-UEIdentityIndexValue ProtocolIE-ID ::= 80 +id-cdma2000HOStatus ProtocolIE-ID ::= 83 +id-cdma2000HORequiredIndication ProtocolIE-ID ::= 84 +id-E-UTRAN-Trace-ID ProtocolIE-ID ::= 86 +id-RelativeMMECapacity ProtocolIE-ID ::= 87 +id-SourceMME-UE-S1AP-ID ProtocolIE-ID ::= 88 +id-Bearers-SubjectToStatusTransfer-Item ProtocolIE-ID ::= 89 +id-eNB-StatusTransfer-TransparentContainer ProtocolIE-ID ::= 90 +id-UE-associatedLogicalS1-ConnectionItem ProtocolIE-ID ::= 91 +id-ResetType ProtocolIE-ID ::= 92 +id-UE-associatedLogicalS1-ConnectionListResAck ProtocolIE-ID ::= 93 +id-E-RABToBeSwitchedULItem ProtocolIE-ID ::= 94 +id-E-RABToBeSwitchedULList ProtocolIE-ID ::= 95 +id-S-TMSI ProtocolIE-ID ::= 96 +id-cdma2000OneXRAND ProtocolIE-ID ::= 97 +id-RequestType ProtocolIE-ID ::= 98 +id-UE-S1AP-IDs ProtocolIE-ID ::= 99 +id-EUTRAN-CGI ProtocolIE-ID ::= 100 +id-OverloadResponse ProtocolIE-ID ::= 101 +id-cdma2000OneXSRVCCInfo ProtocolIE-ID ::= 102 +id-E-RABFailedToBeReleasedList ProtocolIE-ID ::= 103 +id-Source-ToTarget-TransparentContainer ProtocolIE-ID ::= 104 +id-ServedGUMMEIs ProtocolIE-ID ::= 105 +id-SubscriberProfileIDforRFP ProtocolIE-ID ::= 106 +id-UESecurityCapabilities ProtocolIE-ID ::= 107 +id-CSFallbackIndicator ProtocolIE-ID ::= 108 +id-CNDomain ProtocolIE-ID ::= 109 +id-E-RABReleasedList ProtocolIE-ID ::= 110 +id-MessageIdentifier ProtocolIE-ID ::= 111 +id-SerialNumber ProtocolIE-ID ::= 112 +id-WarningAreaList ProtocolIE-ID ::= 113 +id-RepetitionPeriod ProtocolIE-ID ::= 114 +id-NumberofBroadcastRequest ProtocolIE-ID ::= 115 +id-WarningType ProtocolIE-ID ::= 116 +id-WarningSecurityInfo ProtocolIE-ID ::= 117 +id-DataCodingScheme ProtocolIE-ID ::= 118 +id-WarningMessageContents ProtocolIE-ID ::= 119 +id-BroadcastCompletedAreaList ProtocolIE-ID ::= 120 +id-Inter-SystemInformationTransferTypeEDT ProtocolIE-ID ::= 121 +id-Inter-SystemInformationTransferTypeMDT ProtocolIE-ID ::= 122 +id-Target-ToSource-TransparentContainer ProtocolIE-ID ::= 123 +id-SRVCCOperationPossible ProtocolIE-ID ::= 124 +id-SRVCCHOIndication ProtocolIE-ID ::= 125 +id-NAS-DownlinkCount ProtocolIE-ID ::= 126 +id-CSG-Id ProtocolIE-ID ::= 127 +id-CSG-IdList ProtocolIE-ID ::= 128 +id-SONConfigurationTransferECT ProtocolIE-ID ::= 129 +id-SONConfigurationTransferMCT ProtocolIE-ID ::= 130 +id-TraceCollectionEntityIPAddress ProtocolIE-ID ::= 131 +id-MSClassmark2 ProtocolIE-ID ::= 132 +id-MSClassmark3 ProtocolIE-ID ::= 133 +id-RRC-Establishment-Cause ProtocolIE-ID ::= 134 +id-NASSecurityParametersfromE-UTRAN ProtocolIE-ID ::= 135 +id-NASSecurityParameterstoE-UTRAN ProtocolIE-ID ::= 136 +id-DefaultPagingDRX ProtocolIE-ID ::= 137 +id-Source-ToTarget-TransparentContainer-Secondary ProtocolIE-ID ::= 138 +id-Target-ToSource-TransparentContainer-Secondary ProtocolIE-ID ::= 139 +id-EUTRANRoundTripDelayEstimationInfo ProtocolIE-ID ::= 140 +id-BroadcastCancelledAreaList ProtocolIE-ID ::= 141 +id-ConcurrentWarningMessageIndicator ProtocolIE-ID ::= 142 +id-Data-Forwarding-Not-Possible ProtocolIE-ID ::= 143 +id-ExtendedRepetitionPeriod ProtocolIE-ID ::= 144 +id-CellAccessMode ProtocolIE-ID ::= 145 +id-CSGMembershipStatus ProtocolIE-ID ::= 146 +id-LPPa-PDU ProtocolIE-ID ::= 147 +id-Routing-ID ProtocolIE-ID ::= 148 +id-Time-Synchronisation-Info ProtocolIE-ID ::= 149 +id-PS-ServiceNotAvailable ProtocolIE-ID ::= 150 +id-PagingPriority ProtocolIE-ID ::= 151 +id-x2TNLConfigurationInfo ProtocolIE-ID ::= 152 +id-eNBX2ExtendedTransportLayerAddresses ProtocolIE-ID ::= 153 +id-GUMMEIList ProtocolIE-ID ::= 154 +id-GW-TransportLayerAddress ProtocolIE-ID ::= 155 +id-Correlation-ID ProtocolIE-ID ::= 156 +id-SourceMME-GUMMEI ProtocolIE-ID ::= 157 +id-MME-UE-S1AP-ID-2 ProtocolIE-ID ::= 158 +id-RegisteredLAI ProtocolIE-ID ::= 159 +id-RelayNode-Indicator ProtocolIE-ID ::= 160 +id-TrafficLoadReductionIndication ProtocolIE-ID ::= 161 +id-MDTConfiguration ProtocolIE-ID ::= 162 +id-MMERelaySupportIndicator ProtocolIE-ID ::= 163 +id-GWContextReleaseIndication ProtocolIE-ID ::= 164 +id-ManagementBasedMDTAllowed ProtocolIE-ID ::= 165 +id-PrivacyIndicator ProtocolIE-ID ::= 166 +id-Time-UE-StayedInCell-EnhancedGranularity ProtocolIE-ID ::= 167 +id-HO-Cause ProtocolIE-ID ::= 168 +id-VoiceSupportMatchIndicator ProtocolIE-ID ::= 169 +id-GUMMEIType ProtocolIE-ID ::= 170 +id-M3Configuration ProtocolIE-ID ::= 171 +id-M4Configuration ProtocolIE-ID ::= 172 +id-M5Configuration ProtocolIE-ID ::= 173 +id-MDT-Location-Info ProtocolIE-ID ::= 174 +id-MobilityInformation ProtocolIE-ID ::= 175 +id-Tunnel-Information-for-BBF ProtocolIE-ID ::= 176 +id-ManagementBasedMDTPLMNList ProtocolIE-ID ::= 177 +id-SignallingBasedMDTPLMNList ProtocolIE-ID ::= 178 +id-ULCOUNTValueExtended ProtocolIE-ID ::= 179 +id-DLCOUNTValueExtended ProtocolIE-ID ::= 180 +id-ReceiveStatusOfULPDCPSDUsExtended ProtocolIE-ID ::= 181 +id-ECGIListForRestart ProtocolIE-ID ::= 182 +id-SIPTO-Correlation-ID ProtocolIE-ID ::= 183 +id-SIPTO-L-GW-TransportLayerAddress ProtocolIE-ID ::= 184 +id-TransportInformation ProtocolIE-ID ::= 185 +id-LHN-ID ProtocolIE-ID ::= 186 +id-AdditionalCSFallbackIndicator ProtocolIE-ID ::= 187 +id-TAIListForRestart ProtocolIE-ID ::= 188 +id-UserLocationInformation ProtocolIE-ID ::= 189 +id-EmergencyAreaIDListForRestart ProtocolIE-ID ::= 190 +id-KillAllWarningMessages ProtocolIE-ID ::= 191 +id-Masked-IMEISV ProtocolIE-ID ::= 192 +id-eNBIndirectX2TransportLayerAddresses ProtocolIE-ID ::= 193 +id-uE-HistoryInformationFromTheUE ProtocolIE-ID ::= 194 +id-ProSeAuthorized ProtocolIE-ID ::= 195 +id-ExpectedUEBehaviour ProtocolIE-ID ::= 196 +id-LoggedMBSFNMDT ProtocolIE-ID ::= 197 +id-UERadioCapabilityForPaging ProtocolIE-ID ::= 198 +id-E-RABToBeModifiedListBearerModInd ProtocolIE-ID ::= 199 +id-E-RABToBeModifiedItemBearerModInd ProtocolIE-ID ::= 200 +id-E-RABNotToBeModifiedListBearerModInd ProtocolIE-ID ::= 201 +id-E-RABNotToBeModifiedItemBearerModInd ProtocolIE-ID ::= 202 +id-E-RABModifyListBearerModConf ProtocolIE-ID ::= 203 +id-E-RABModifyItemBearerModConf ProtocolIE-ID ::= 204 +id-E-RABFailedToModifyListBearerModConf ProtocolIE-ID ::= 205 +id-SON-Information-Report ProtocolIE-ID ::= 206 +id-Muting-Availability-Indication ProtocolIE-ID ::= 207 +id-Muting-Pattern-Information ProtocolIE-ID ::= 208 +id-Synchronisation-Information ProtocolIE-ID ::= 209 +id-E-RABToBeReleasedListBearerModConf ProtocolIE-ID ::= 210 +id-AssistanceDataForPaging ProtocolIE-ID ::= 211 +id-CellIdentifierAndCELevelForCECapableUEs ProtocolIE-ID ::= 212 +id-InformationOnRecommendedCellsAndENBsForPaging ProtocolIE-ID ::= 213 +id-RecommendedCellItem ProtocolIE-ID ::= 214 +id-RecommendedENBItem ProtocolIE-ID ::= 215 +id-ProSeUEtoNetworkRelaying ProtocolIE-ID ::= 216 +id-ULCOUNTValuePDCP-SNlength18 ProtocolIE-ID ::= 217 +id-DLCOUNTValuePDCP-SNlength18 ProtocolIE-ID ::= 218 +id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 ProtocolIE-ID ::= 219 +id-M6Configuration ProtocolIE-ID ::= 220 +id-M7Configuration ProtocolIE-ID ::= 221 +id-PWSfailedECGIList ProtocolIE-ID ::= 222 +id-MME-Group-ID ProtocolIE-ID ::= 223 +id-Additional-GUTI ProtocolIE-ID ::= 224 +id-S1-Message ProtocolIE-ID ::= 225 +id-CSGMembershipInfo ProtocolIE-ID ::= 226 +id-Paging-eDRXInformation ProtocolIE-ID ::= 227 +id-UE-RetentionInformation ProtocolIE-ID ::= 228 +id-UE-Usage-Type ProtocolIE-ID ::= 230 +id-extended-UEIdentityIndexValue ProtocolIE-ID ::= 231 +id-RAT-Type ProtocolIE-ID ::= 232 +id-BearerType ProtocolIE-ID ::= 233 +id-NB-IoT-DefaultPagingDRX ProtocolIE-ID ::= 234 +id-E-RABFailedToResumeListResumeReq ProtocolIE-ID ::= 235 +id-E-RABFailedToResumeItemResumeReq ProtocolIE-ID ::= 236 +id-E-RABFailedToResumeListResumeRes ProtocolIE-ID ::= 237 +id-E-RABFailedToResumeItemResumeRes ProtocolIE-ID ::= 238 +id-NB-IoT-Paging-eDRXInformation ProtocolIE-ID ::= 239 +id-V2XServicesAuthorized ProtocolIE-ID ::= 240 +id-UEUserPlaneCIoTSupportIndicator ProtocolIE-ID ::= 241 +id-CE-mode-B-SupportIndicator ProtocolIE-ID ::= 242 +id-SRVCCOperationNotPossible ProtocolIE-ID ::= 243 +id-NB-IoT-UEIdentityIndexValue ProtocolIE-ID ::= 244 +id-RRC-Resume-Cause ProtocolIE-ID ::= 245 +id-DCN-ID ProtocolIE-ID ::= 246 +id-ServedDCNs ProtocolIE-ID ::= 247 +id-UESidelinkAggregateMaximumBitrate ProtocolIE-ID ::= 248 +id-DLNASPDUDeliveryAckRequest ProtocolIE-ID ::= 249 +id-Coverage-Level ProtocolIE-ID ::= 250 +id-EnhancedCoverageRestricted ProtocolIE-ID ::= 251 +id-UE-Level-QoS-Parameters ProtocolIE-ID ::= 252 +id-DL-CP-SecurityInformation ProtocolIE-ID ::= 253 +id-UL-CP-SecurityInformation ProtocolIE-ID ::= 254 + +END + +9.3.7 Container Definitions +-- ************************************************************** +-- +-- Container definitions +-- +-- ************************************************************** + +S1AP-Containers { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +eps-Access (21) modules (3) s1ap (1) version1 (1) s1ap-Containers (5) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + Presence, + PrivateIE-ID, + ProtocolExtensionID, + ProtocolIE-ID +FROM S1AP-CommonDataTypes + + maxPrivateIEs, + maxProtocolExtensions, + maxProtocolIEs +FROM S1AP-Constants; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +S1AP-PROTOCOL-IES ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +S1AP-PROTOCOL-IES-PAIR ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &firstCriticality Criticality, + &FirstValue, + &secondCriticality Criticality, + &SecondValue, + &presence Presence +} +WITH SYNTAX { + ID &id + FIRST CRITICALITY &firstCriticality + FIRST TYPE &FirstValue + SECOND CRITICALITY &secondCriticality + SECOND TYPE &SecondValue + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol Extensions +-- +-- ************************************************************** + +S1AP-PROTOCOL-EXTENSION ::= CLASS { + &id ProtocolExtensionID UNIQUE, + &criticality Criticality, + &Extension, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Private IEs +-- +-- ************************************************************** + +S1AP-PRIVATE-IES ::= CLASS { + &id PrivateIE-ID, + &criticality Criticality, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + +ProtocolIE-Container {S1AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-SingleContainer {S1AP-PROTOCOL-IES : IEsSetParam} ::= + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field {S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id S1AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality S1AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value S1AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Protocol IE Pairs +-- +-- ************************************************************** + +ProtocolIE-ContainerPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-FieldPair {{IEsSetParam}} + +ProtocolIE-FieldPair {S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE { + id S1AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}), + firstCriticality S1AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}), + firstValue S1AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}), + secondCriticality S1AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}), + secondValue S1AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-SingleContainer {{IEsSetParam}} + +ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-ContainerPair {{IEsSetParam}} + +-- ************************************************************** +-- +-- Container for Protocol Extensions +-- +-- ************************************************************** + +ProtocolExtensionContainer {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= + SEQUENCE (SIZE (1..maxProtocolExtensions)) OF + ProtocolExtensionField {{ExtensionSetParam}} + +ProtocolExtensionField {S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { + id S1AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality S1AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + extensionValue S1AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Private IEs +-- +-- ************************************************************** + +PrivateIE-Container {S1AP-PRIVATE-IES : IEsSetParam } ::= + SEQUENCE (SIZE (1.. maxPrivateIEs)) OF + PrivateIE-Field {{IEsSetParam}} + +PrivateIE-Field {S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE { + id S1AP-PRIVATE-IES.&id ({IEsSetParam}), + criticality S1AP-PRIVATE-IES.&criticality ({IEsSetParam}{@id}), + value S1AP-PRIVATE-IES.&Value ({IEsSetParam}{@id}) +} + +END + +B.2 ASN.1 definition +-- ************************************************************** +-- +-- IE definitions for the SON Transfer application +-- The IEs in this ASN.1 module shall be defined and encoded +-- using the same rules as applicable for the S1AP-IEs module. +-- +-- ************************************************************** +SonTransfer-IEs + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- +-- Generic IEs for the SON Transfer application +-- + +SONtransferApplicationIdentity ::= ENUMERATED { + cell-load-reporting, + ..., + multi-cell-load-reporting, + event-triggered-cell-load-reporting, + ho-reporting, + eutran-cell-activation, + energy-savings-indication, + failure-event-reporting +} + +SONtransferRequestContainer ::= CHOICE{ + cellLoadReporting NULL, + ..., + multiCellLoadReporting MultiCellLoadReportingRequest, + eventTriggeredCellLoadReporting EventTriggeredCellLoadReportingRequest, + hOReporting HOReport, + eutranCellActivation CellActivationRequest, + energySavingsIndication CellStateIndication, + failureEventReporting FailureEventReport +} + +SONtransferResponseContainer ::= CHOICE{ + cellLoadReporting CellLoadReportingResponse, + ..., + multiCellLoadReporting MultiCellLoadReportingResponse, + eventTriggeredCellLoadReporting EventTriggeredCellLoadReportingResponse, + hOReporting NULL, + eutranCellActivation CellActivationResponse, + energySavingsIndication NULL, + failureEventReporting NULL +} + +SONtransferCause ::= CHOICE { + cellLoadReporting CellLoadReportingCause, + ..., + multiCellLoadReporting CellLoadReportingCause, + eventTriggeredCellLoadReporting CellLoadReportingCause, + hOReporting HOReportingCause, + eutranCellActivation CellActivationCause, + energySavingsIndication CellStateIndicationCause, + failureEventReporting FailureEventReportingCause +} + + +CellLoadReportingCause ::= ENUMERATED { + application-container-syntax-error, + inconsistent-reporting-cell-identifier, + unspecified, + ... +} + +HOReportingCause ::= ENUMERATED { + application-container-syntax-error, + inconsistent-reporting-cell-identifier, + unspecified, + ... +} + +CellActivationCause ::= ENUMERATED { + application-container-syntax-error, + inconsistent-reporting-cell-identifier, + unspecified, + ... +} + +CellStateIndicationCause ::= ENUMERATED { + application-container-syntax-error, + inconsistent-reporting-cell-identifier, + unspecified, + ... +} + +FailureEventReportingCause ::= ENUMERATED { + application-container-syntax-error, + inconsistent-reporting-cell-identifier, + unspecified, + ... +} + +-- +-- IEs for Cell Load Reporting application +-- + +CellLoadReportingResponse::= CHOICE{ + eUTRAN EUTRANcellLoadReportingResponse, + uTRAN OCTET STRING, + gERAN OCTET STRING, + ..., + eHRPD EHRPDSectorLoadReportingResponse +} + +CompositeAvailableCapacityGroup ::= OCTET STRING + +EUTRANcellLoadReportingResponse ::= SEQUENCE { + compositeAvailableCapacityGroup CompositeAvailableCapacityGroup, + ... +} + +-- +-- IEs for Multi-Cell Load Reporting application +-- + +EUTRANResponse::= SEQUENCE { + cell-ID OCTET STRING, + eUTRANcellLoadReportingResponse EUTRANcellLoadReportingResponse, + ... +} + +EHRPD-Sector-ID ::= OCTET STRING (SIZE (16)) + +IRAT-Cell-ID ::= CHOICE{ + eUTRAN OCTET STRING, + uTRAN OCTET STRING, + gERAN OCTET STRING, + ..., + eHRPD EHRPD-Sector-ID +} + +RequestedCellList ::= SEQUENCE (SIZE(1.. maxnoofIRATReportingCells)) OF IRAT-Cell-ID + +MultiCellLoadReportingRequest::= SEQUENCE { + requestedCellList RequestedCellList, + ... +} + +ReportingCellList-Item ::= SEQUENCE { + cell-ID IRAT-Cell-ID, + ... +} + +ReportingCellList ::= SEQUENCE (SIZE(1.. maxnoofIRATReportingCells)) OF ReportingCellList-Item + +MultiCellLoadReportingResponse ::= SEQUENCE (SIZE(1.. maxnoofIRATReportingCells)) OF MultiCellLoadReportingResponse-Item + +MultiCellLoadReportingResponse-Item ::= CHOICE{ + eUTRANResponse EUTRANResponse, + uTRANResponse OCTET STRING, + gERANResponse OCTET STRING, + ..., + eHRPD EHRPDMultiSectorLoadReportingResponseItem +} + + +-- +-- IEs for Event-triggered Cell Load Reporting application +-- + +NumberOfMeasurementReportingLevels ::= ENUMERATED { + rl2, + rl3, + rl4, + rl5, + rl10, + ... +} + +EventTriggeredCellLoadReportingRequest ::= SEQUENCE { + numberOfMeasurementReportingLevels NumberOfMeasurementReportingLevels, + ... +} + +OverloadFlag ::= ENUMERATED { + overload, + ... +} + +EventTriggeredCellLoadReportingResponse ::= SEQUENCE { + cellLoadReportingResponse CellLoadReportingResponse, + overloadFlag OverloadFlag OPTIONAL, + ... +} + +-- +-- IEs for HO Reporting application +-- + + + +HOReport::= SEQUENCE { + hoType HoType, + hoReportType HoReportType, + hosourceID IRAT-Cell-ID, + hoTargetID IRAT-Cell-ID, + candidateCellList CandidateCellList, + ..., + candidatePCIList CandidatePCIList OPTIONAL +} + +HoType ::= ENUMERATED { + ltetoutran, + ltetogeran, + ... +} + +HoReportType ::= ENUMERATED { + unnecessaryhotoanotherrat, + ..., + earlyirathandover +} + +CandidateCellList ::= SEQUENCE (SIZE(1..maxnoofcandidateCells)) OF IRAT-Cell-ID + +CandidatePCIList ::= SEQUENCE (SIZE(1..maxnoofcandidateCells)) OF CandidatePCI + +CandidatePCI ::= SEQUENCE { + pCI INTEGER (0..503), + eARFCN OCTET STRING, + ... +} + +-- +-- IEs for E-UTRAN Cell Activation application +-- + +CellActivationRequest ::= SEQUENCE { + cellsToActivateList CellsToActivateList, + minimumActivationTime INTEGER (1..60) OPTIONAL, +... +} + +CellsToActivateList ::= SEQUENCE (SIZE(1.. maxnoofCellineNB)) OF CellsToActivateList-Item + +CellsToActivateList-Item ::= SEQUENCE { + cell-ID OCTET STRING, + ... +} + +CellActivationResponse ::= SEQUENCE { + activatedCellsList ActivatedCellsList, + ... +} + +ActivatedCellsList ::= SEQUENCE (SIZE(0.. maxnoofCellineNB)) OF ActivatedCellsList-Item + +ActivatedCellsList-Item ::= SEQUENCE { + cell-ID OCTET STRING, + ... +} + +-- +-- IEs for Energy Savings Indication application +-- + +CellStateIndication ::= SEQUENCE { + notificationCellList NotificationCellList, + ... +} + +NotificationCellList ::= SEQUENCE (SIZE(1.. maxnoofCellineNB)) OF NotificationCellList-Item + +NotificationCellList-Item ::= SEQUENCE { + cell-ID OCTET STRING, + notifyFlag NotifyFlag, + ... +} + +NotifyFlag ::= ENUMERATED { + activated, + deactivated, + ... +} + +FailureEventReport::= CHOICE { + tooEarlyInterRATHOReportFromEUTRAN TooEarlyInterRATHOReportReportFromEUTRAN, + ... +} + +TooEarlyInterRATHOReportReportFromEUTRAN ::= SEQUENCE { + uERLFReportContainer OCTET STRING, -- as defined in TS 36.331 [16] -- + mobilityInformation MobilityInformation OPTIONAL, + ... +} + +MobilityInformation ::= BIT STRING (SIZE(32)) + + +-- +-- IEs for reporting of eHRPD load +-- + +EHRPDCapacityValue ::= INTEGER (0..100) + +EHRPDSectorCapacityClassValue ::= INTEGER (1..100, ...) + +EHRPDSectorLoadReportingResponse ::= SEQUENCE { + dL-EHRPD-CompositeAvailableCapacity EHRPDCompositeAvailableCapacity, + uL-EHRPD-CompositeAvailableCapacity EHRPDCompositeAvailableCapacity, + ... +} + +EHRPDCompositeAvailableCapacity ::= SEQUENCE { + eHRPDSectorCapacityClassValue EHRPDSectorCapacityClassValue, + eHRPDCapacityValue EHRPDCapacityValue, + ... +} + +EHRPDMultiSectorLoadReportingResponseItem ::= SEQUENCE { + eHRPD-Sector-ID EHRPD-Sector-ID, + eHRPDSectorLoadReportingResponse EHRPDSectorLoadReportingResponse, + ... +} + + +-- ************************************************************** +-- +-- Constants +-- +-- ************************************************************** + +maxnoofIRATReportingCells INTEGER ::= 128 +maxnoofcandidateCells INTEGER ::= 16 +maxnoofCellineNB INTEGER ::= 256 + +END diff --git a/lib/s1ap3/test/Makefile.am b/lib/s1ap3/test/Makefile.am new file mode 100644 index 0000000000..4328e06919 --- /dev/null +++ b/lib/s1ap3/test/Makefile.am @@ -0,0 +1,26 @@ +## Process this file with automake to produce Makefile.in. + +bin_PROGRAMS = tests1ap + +tests1ap_SOURCES = \ + abts.c abts.h abts_tests.h testutil.c testutil.h s1ap_conv.c \ + s1ap_message_test.c + +tests1ap_LDADD = \ + $(top_srcdir)/lib/s1ap2/libs1ap.la + +AM_CPPFLAGS = \ + -I$(top_srcdir)/lib/core/include \ + -I$(top_srcdir)/lib/s1ap2/asn1c \ + -I$(top_srcdir)/lib/s1ap2 \ + $(NULL) + +AM_CFLAGS = \ + -Wall -Werror @OSCPPFLAGS@ \ + -Wno-unused-function -Wno-unused-variable + +TESTS = tests1ap + +MAINTAINERCLEANFILES = Makefile.in +CLEANFILES = -R data +MOSTLYCLEANFILES = core *.stackdump diff --git a/lib/s1ap3/test/abts.c b/lib/s1ap3/test/abts.c new file mode 100644 index 0000000000..737a07d309 --- /dev/null +++ b/lib/s1ap3/test/abts.c @@ -0,0 +1,479 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "abts.h" +#include "abts_tests.h" +#include "testutil.h" +#include "core_pkbuf.h" + +#define ABTS_STAT_SIZE 6 +static char status[ABTS_STAT_SIZE] = {'|', '/', '-', '|', '\\', '-'}; +static int curr_char; +static int verbose = 1; +static int exclude = 0; +static int quiet = 0; +static int list_tests = 0; + +const char **testlist = NULL; + +static int find_test_name(const char *testname) { + int i; + for (i = 0; testlist[i] != NULL; i++) { + if (!strcmp(testlist[i], testname)) { + return 1; + } + } + return 0; +} + +/* Determine if the test should be run at all */ +static int should_test_run(const char *testname) { + int found = 0; + if (list_tests == 1) { + return 0; + } + if (testlist == NULL) { + return 1; + } + found = find_test_name(testname); + if ((found && !exclude) || (!found && exclude)) { + return 1; + } + return 0; +} + +static void reset_status(void) +{ + curr_char = 0; +} + +static void update_status(void) +{ + if (!quiet) { + curr_char = (curr_char + 1) % ABTS_STAT_SIZE; + fprintf(stdout, "\b%c", status[curr_char]); + fflush(stdout); + } +} + +static void end_suite(abts_suite *suite) +{ + if (suite != NULL) { + sub_suite *last = suite->tail; + if (!quiet) { + fprintf(stdout, "\b"); + fflush(stdout); + } + if (last->failed == 0) { + fprintf(stdout, "SUCCESS\n"); + fflush(stdout); + } + else { + fprintf(stdout, "FAILED %d of %d\n", last->failed, last->num_test); + fflush(stdout); + } + } +} + +abts_suite *abts_add_suite(abts_suite *suite, const char *suite_name_full) +{ + sub_suite *subsuite; + char *p; + const char *suite_name; + curr_char = 0; + + /* Only end the suite if we actually ran it */ + if (suite && suite->tail &&!suite->tail->not_run) { + end_suite(suite); + } + + subsuite = core_malloc(sizeof(*subsuite)); + subsuite->num_test = 0; + subsuite->failed = 0; + subsuite->next = NULL; + /* suite_name_full may be an absolute path depending on __FILE__ + * expansion */ + suite_name = strrchr(suite_name_full, '/'); + if (suite_name) { + suite_name++; + } else { + suite_name = suite_name_full; + } + p = strrchr(suite_name, '.'); + if (p) { + subsuite->name = memcpy(core_calloc(p - suite_name + 1, 1), + suite_name, p - suite_name); + } + else { + subsuite->name = suite_name; + } + + if (list_tests) { + fprintf(stdout, "%s\n", subsuite->name); + } + + subsuite->not_run = 0; + + if (suite == NULL) { + suite = core_malloc(sizeof(*suite)); + suite->head = subsuite; + suite->tail = subsuite; + } + else { + suite->tail->next = subsuite; + suite->tail = subsuite; + } + + if (!should_test_run(subsuite->name)) { + subsuite->not_run = 1; + return suite; + } + + reset_status(); + fprintf(stdout, "%-20s: ", subsuite->name); + update_status(); + fflush(stdout); + + return suite; +} + +void abts_run_test(abts_suite *ts, test_func f, void *value) +{ + abts_case tc; + sub_suite *ss; + + if (!should_test_run(ts->tail->name)) { + return; + } + ss = ts->tail; + + tc.failed = 0; + tc.suite = ss; + + ss->num_test++; + update_status(); + + f(&tc, value); + + if (tc.failed) { + ss->failed++; + } +} + +static int report(abts_suite *suite) +{ + int count = 0; + sub_suite *dptr; + + if (suite && suite->tail &&!suite->tail->not_run) { + end_suite(suite); + } + + for (dptr = suite->head; dptr; dptr = dptr->next) { + count += dptr->failed; + } + + if (list_tests) { + return 0; + } + + if (count == 0) { + printf("All tests passed.\n"); + return 0; + } + + dptr = suite->head; + fprintf(stdout, "%-15s\t\tTotal\tFail\tFailed %%\n", "Failed Tests"); + fprintf(stdout, "===================================================\n"); + while (dptr != NULL) { + if (dptr->failed != 0) { + float percent = ((float)dptr->failed / (float)dptr->num_test); + fprintf(stdout, "%-15s\t\t%5d\t%4d\t%6.2f%%\n", dptr->name, + dptr->num_test, dptr->failed, percent * 100); + } + dptr = dptr->next; + } + return 1; +} + +static void abts_free(abts_suite *suite) +{ + sub_suite *ptr = NULL, *next_ptr = NULL; + + ptr = suite->head; + while (ptr != NULL) { + next_ptr = ptr->next; + + CORE_FREE((void*)ptr->name); + CORE_FREE(ptr); + ptr = next_ptr; + } + + CORE_FREE(suite); +} + +void abts_log_message(const char *fmt, ...) +{ + va_list args; + update_status(); + + if (verbose) { + va_start(args, fmt); + vfprintf(stderr, fmt, args); + va_end(args); + fprintf(stderr, "\n"); + fflush(stderr); + } +} + +void abts_int_equal(abts_case *tc, const int expected, const int actual, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (expected == actual) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: expected <%d>, but saw <%d>\n", lineno, expected, actual); + fflush(stderr); + } +} + +void abts_int_nequal(abts_case *tc, const int expected, const int actual, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (expected != actual) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: expected <%d>, but saw <%d>\n", lineno, expected, actual); + fflush(stderr); + } +} + +void abts_size_equal(abts_case *tc, size_t expected, size_t actual, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (expected == actual) return; + + tc->failed = TRUE; + if (verbose) { + /* Note that the comparison is type-exact, reporting must be a best-fit */ + fprintf(stderr, "Line %d: expected %lu, but saw %lu\n", lineno, + (unsigned long)expected, (unsigned long)actual); + fflush(stderr); + } +} + +void abts_str_equal(abts_case *tc, const char *expected, const char *actual, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (!expected && !actual) return; + if (expected && actual) + if (!strcmp(expected, actual)) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: expected <%s>, but saw <%s>\n", lineno, expected, actual); + fflush(stderr); + } +} + +void abts_str_nequal(abts_case *tc, const char *expected, const char *actual, + size_t n, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (!strncmp(expected, actual, n)) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: expected <%s>, but saw <%s>\n", lineno, expected, actual); + fflush(stderr); + } +} + +void abts_ptr_null(abts_case *tc, const void *ptr, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (ptr == NULL) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: Expected NULL, but saw <%p>\n", lineno, ptr); + fflush(stderr); + } +} + +void abts_ptr_notnull(abts_case *tc, const void *ptr, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (ptr != NULL) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: Expected not NULL, but saw <%p>\n", lineno, ptr); + fflush(stderr); + } +} + +void abts_ptr_equal(abts_case *tc, const void *expected, const void *actual, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (expected == actual) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: expected <%p>, but saw <%p>\n", lineno, expected, actual); + fflush(stderr); + } +} + +void abts_fail(abts_case *tc, const char *message, int lineno) +{ + update_status(); + if (tc->failed) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: %s\n", lineno, message); + fflush(stderr); + } +} + +void abts_assert(abts_case *tc, const char *message, int condition, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (condition) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: %s\n", lineno, message); + fflush(stderr); + } +} + +void abts_true(abts_case *tc, int condition, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (condition) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: Condition is false, but expected true\n", lineno); + fflush(stderr); + } +} + +void abts_false(abts_case *tc, int condition, int lineno) +{ + update_status(); + if (tc->failed) return; + + if (!condition) return; + + tc->failed = TRUE; + if (verbose) { + fprintf(stderr, "Line %d: Condition is true, but expected false\n", lineno); + fflush(stderr); + } +} + +void abts_not_impl(abts_case *tc, const char *message, int lineno) +{ + update_status(); + + tc->suite->not_impl++; + if (verbose) { + fprintf(stderr, "Line %d: %s\n", lineno, message); + fflush(stderr); + } +} + +int main(int argc, const char *const argv[]) { + int i; + int rv; + int list_provided = 0; + abts_suite *suite = NULL; + + test_initialize(); + + quiet = !isatty(STDOUT_FILENO); + + for (i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-v")) { + verbose = 1; + continue; + } + if (!strcmp(argv[i], "-x")) { + exclude = 1; + continue; + } + if (!strcmp(argv[i], "-l")) { + list_tests = 1; + continue; + } + if (!strcmp(argv[i], "-q")) { + quiet = 1; + continue; + } + if (argv[i][0] == '-') { + fprintf(stderr, "Invalid option: `%s'\n", argv[i]); + exit(1); + } + list_provided = 1; + } + + if (list_provided) { + /* Waste a little space here, because it is easier than counting the + * number of tests listed. Besides it is at most three char *. + */ + testlist = core_calloc(argc + 1, sizeof(char *)); + for (i = 1; i < argc; i++) { + testlist[i - 1] = argv[i]; + } + } + + for (i = 0; i < (sizeof(alltests) / sizeof(struct testlist *)); i++) { + suite = alltests[i].func(suite); + } + + rv = report(suite); + + abts_free(suite); + + CORE_FREE(testlist); + return rv; +} + diff --git a/lib/s1ap3/test/abts.h b/lib/s1ap3/test/abts.h new file mode 100644 index 0000000000..211805077f --- /dev/null +++ b/lib/s1ap3/test/abts.h @@ -0,0 +1,112 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#ifdef WIN32 +#include +#else +#include +#endif + +#ifndef ABTS_H +#define ABTS_H + +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif + +struct sub_suite { + const char *name; + int num_test; + int failed; + int not_run; + int not_impl; + struct sub_suite *next; +}; +typedef struct sub_suite sub_suite; + +struct abts_suite { + sub_suite *head; + sub_suite *tail; +}; +typedef struct abts_suite abts_suite; + +struct abts_case { + int failed; + sub_suite *suite; +}; +typedef struct abts_case abts_case; + +typedef void (*test_func)(abts_case *tc, void *data); + +#define ADD_SUITE(suite) abts_add_suite(suite, __FILE__); + +abts_suite *abts_add_suite(abts_suite *suite, const char *suite_name); +void abts_run_test(abts_suite *ts, test_func f, void *value); +void abts_log_message(const char *fmt, ...); + +void abts_int_equal(abts_case *tc, const int expected, const int actual, int lineno); +void abts_int_nequal(abts_case *tc, const int expected, const int actual, int lineno); +void abts_str_equal(abts_case *tc, const char *expected, const char *actual, int lineno); +void abts_str_nequal(abts_case *tc, const char *expected, const char *actual, + size_t n, int lineno); +void abts_ptr_null(abts_case *tc, const void *ptr, int lineno); +void abts_ptr_notnull(abts_case *tc, const void *ptr, int lineno); +void abts_ptr_equal(abts_case *tc, const void *expected, const void *actual, int lineno); +void abts_true(abts_case *tc, int condition, int lineno); +void abts_false(abts_case *tc, int condition, int lineno); +void abts_fail(abts_case *tc, const char *message, int lineno); +void abts_not_impl(abts_case *tc, const char *message, int lineno); +void abts_assert(abts_case *tc, const char *message, int condition, int lineno); +void abts_size_equal(abts_case *tc, size_t expected, size_t actual, int lineno); + +/* Convenience macros. Ryan hates these! */ +#define ABTS_INT_EQUAL(a, b, c) abts_int_equal(a, b, c, __LINE__) +#define ABTS_INT_NEQUAL(a, b, c) abts_int_nequal(a, b, c, __LINE__) +#define ABTS_STR_EQUAL(a, b, c) abts_str_equal(a, b, c, __LINE__) +#define ABTS_STR_NEQUAL(a, b, c, d) abts_str_nequal(a, b, c, d, __LINE__) +#define ABTS_PTR_NULL(a, b) abts_ptr_null(a, b, __LINE__) +#define ABTS_PTR_NOTNULL(a, b) abts_ptr_notnull(a, b, __LINE__) +#define ABTS_PTR_EQUAL(a, b, c) abts_ptr_equal(a, b, c, __LINE__) +#define ABTS_TRUE(a, b) abts_true(a, b, __LINE__); +#define ABTS_FALSE(a, b) abts_false(a, b, __LINE__); +#define ABTS_FAIL(a, b) abts_fail(a, b, __LINE__); +#define ABTS_NOT_IMPL(a, b) abts_not_impl(a, b, __LINE__); +#define ABTS_ASSERT(a, b, c) abts_assert(a, b, c, __LINE__); + +#define ABTS_SIZE_EQUAL(a, b, c) abts_size_equal(a, b, c, __LINE__) + + +abts_suite *run_tests(abts_suite *suite); +abts_suite *run_tests1(abts_suite *suite); + + +#endif + +#ifdef __cplusplus +} +#endif + diff --git a/lib/s1ap3/test/abts_tests.h b/lib/s1ap3/test/abts_tests.h new file mode 100644 index 0000000000..5398ad3685 --- /dev/null +++ b/lib/s1ap3/test/abts_tests.h @@ -0,0 +1,29 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_TEST_INCLUDES +#define APR_TEST_INCLUDES + +#include "abts.h" +#include "testutil.h" + +const struct testlist { + abts_suite *(*func)(abts_suite *suite); +} alltests[] = { + {test_s1ap_message}, +}; + +#endif /* APR_TEST_INCLUDES */ diff --git a/lib/s1ap3/test/s1ap_conv.c b/lib/s1ap3/test/s1ap_conv.c new file mode 100644 index 0000000000..15e60ef813 --- /dev/null +++ b/lib/s1ap3/test/s1ap_conv.c @@ -0,0 +1,201 @@ +#define TRACE_MODULE _s1ap_conv + +#include "core_debug.h" +#include "core_network.h" + +#include "3gpp_types.h" +#include "s1ap_conv.h" + +void s1ap_uint8_to_OCTET_STRING(c_uint8_t uint8, OCTET_STRING_t *octet_string) +{ + octet_string->size = 1; + octet_string->buf = core_calloc(octet_string->size, sizeof(c_uint8_t)); + + octet_string->buf[0] = uint8; +} + +void s1ap_uint16_to_OCTET_STRING(c_uint16_t uint16, OCTET_STRING_t *octet_string) +{ + octet_string->size = 2; + octet_string->buf = core_calloc(octet_string->size, sizeof(c_uint8_t)); + + octet_string->buf[0] = uint16 >> 8; + octet_string->buf[1] = uint16; +} + +void s1ap_uint32_to_OCTET_STRING(c_uint32_t uint32, OCTET_STRING_t *octet_string) +{ + octet_string->size = 4; + octet_string->buf = core_calloc(octet_string->size, sizeof(c_uint8_t)); + + octet_string->buf[0] = uint32 >> 24; + octet_string->buf[1] = uint32 >> 16; + octet_string->buf[2] = uint32 >> 8; + octet_string->buf[3] = uint32; +} + +void s1ap_buffer_to_OCTET_STRING( + void *buf, int size, S1AP_TBCD_STRING_t *tbcd_string) +{ + tbcd_string->size = size; + tbcd_string->buf = core_calloc(tbcd_string->size, sizeof(c_uint8_t)); + + memcpy(tbcd_string->buf, buf, size); +} + +void s1ap_uint32_to_ENB_ID( + S1AP_ENB_ID_PR present, c_uint32_t enb_id, S1AP_ENB_ID_t *eNB_ID) +{ + d_assert(eNB_ID, return, "Null param"); + + eNB_ID->present = present; + if (present == ENB_ID_PR_macroENB_ID) + { + BIT_STRING_t *bit_string = &eNB_ID->choice.macroENB_ID; + d_assert(bit_string, return, "Null param"); + + bit_string->size = 3; + bit_string->buf = core_calloc(bit_string->size, sizeof(c_uint8_t)); + + bit_string->buf[0] = enb_id >> 12; + bit_string->buf[1] = enb_id >> 4; + bit_string->buf[2] = (enb_id & 0xf) << 4; + + bit_string->bits_unused = 4; + } + else if (present == ENB_ID_PR_homeENB_ID) + { + BIT_STRING_t *bit_string = &eNB_ID->choice.homeENB_ID; + d_assert(bit_string, return, "Null param"); + + bit_string->size = 4; + bit_string->buf = core_calloc(bit_string->size, sizeof(c_uint8_t)); + + bit_string->buf[0] = enb_id >> 20; + bit_string->buf[1] = enb_id >> 12; + bit_string->buf[2] = enb_id >> 4; + bit_string->buf[3] = (enb_id & 0xf) << 4; + + bit_string->bits_unused = 4; + } + else + { + d_assert(0, return, "Invalid param"); + } + +} + +void s1ap_ENB_ID_to_uint32(S1AP_ENB_ID_t *eNB_ID, c_uint32_t *uint32) +{ + d_assert(uint32, return, "Null param"); + d_assert(eNB_ID, return, "Null param"); + + if (eNB_ID->present == ENB_ID_PR_homeENB_ID) + { + c_uint8_t *buf = eNB_ID->choice.homeENB_ID.buf; + d_assert(buf, return, "Null param"); + *uint32 = (buf[0] << 20) + (buf[1] << 12) + (buf[2] << 4) + + ((buf[3] & 0xf0) >> 4); + + } + else if (eNB_ID->present == ENB_ID_PR_macroENB_ID) + { + c_uint8_t *buf = eNB_ID->choice.macroENB_ID.buf; + d_assert(buf, return, "Null param"); + *uint32 = (buf[0] << 12) + (buf[1] << 4) + ((buf[2] & 0xf0) >> 4); + } + else + { + d_assert(0, return, "Invalid param"); + } +} + +#if 0 +status_t s1ap_BIT_STRING_to_ip(BIT_STRING_t *bit_string, ip_t *ip) +{ + char buf[CORE_ADDRSTRLEN], buf2[CORE_ADDRSTRLEN]; + + d_assert(bit_string, return CORE_ERROR,); + d_assert(ip, return CORE_ERROR,); + + if (bit_string->size == IPV4V6_LEN) + { + ip->ipv4 = 1; + ip->ipv6 = 1; + memcpy(&ip->both.addr, bit_string->buf, IPV4_LEN); + memcpy(&ip->both.addr6, bit_string->buf+IPV4_LEN, IPV6_LEN); + d_trace(5, " IPv4[%s] IPv6[%s]\n", + INET_NTOP(&ip->both.addr, buf), INET6_NTOP(&ip->both.addr6, buf2)); + } + else if (bit_string->size == IPV4_LEN) + { + ip->ipv4 = 1; + memcpy(&ip->addr, bit_string->buf, IPV4_LEN); + d_trace(5, " IPv4[%s]\n", INET_NTOP(&ip->addr, buf)); + } + else if (bit_string->size == IPV6_LEN) + { + ip->ipv6 = 1; + memcpy(&ip->addr6, bit_string->buf, IPV6_LEN); + d_trace(5, " IPv6[%s]\n", INET_NTOP(&ip->addr6, buf)); + } + else + d_assert(0, return CORE_ERROR, "Invalid Length(%d)", bit_string->size); + + ip->len = bit_string->size; + + return CORE_OK; +} +status_t s1ap_ip_to_BIT_STRING(ip_t *ip, BIT_STRING_t *bit_string) +{ + char buf[CORE_ADDRSTRLEN], buf2[CORE_ADDRSTRLEN]; + + d_assert(ip, return CORE_ERROR,); + d_assert(bit_string, return CORE_ERROR,); + + if (ip->ipv4 && ip->ipv6) + { + bit_string->size = IPV4V6_LEN; + bit_string->buf = core_calloc(bit_string->size, sizeof(c_uint8_t)); + memcpy(bit_string->buf, &ip->both.addr, IPV4_LEN); + memcpy(bit_string->buf+IPV4_LEN, &ip->both.addr6, IPV6_LEN); + d_trace(5, " IPv4[%s] IPv6[%s]\n", + INET_NTOP(&ip->both.addr, buf), INET6_NTOP(&ip->both.addr6, buf2)); + } + else if (ip->ipv4) + { + bit_string->size = IPV4_LEN; + bit_string->buf = core_calloc(bit_string->size, sizeof(c_uint8_t)); + memcpy(bit_string->buf, &ip->addr, IPV4_LEN); + d_trace(5, " IPv4[%s]\n", INET_NTOP(&ip->addr, buf)); + } + else if (ip->ipv6) + { + bit_string->size = IPV6_LEN; + bit_string->buf = core_calloc(bit_string->size, sizeof(c_uint8_t)); + memcpy(bit_string->buf, &ip->addr6, IPV6_LEN); + d_trace(5, " IPv6[%s]\n", INET_NTOP(&ip->addr6, buf)); + } + else + d_assert(0, return CORE_ERROR,); + + return CORE_OK; +} + +S1ap_IE_t *s1ap_copy_ie(S1ap_IE_t *ie) +{ + S1ap_IE_t *buff; + + buff = core_malloc(sizeof (S1ap_IE_t)); + d_assert(buff, return NULL,); + + memset((void *)buff, 0, sizeof(S1ap_IE_t)); + buff->id = ie->id; + buff->criticality = ie->criticality; + buff->value.size = ie->value.size; + buff->value.buf = core_calloc(1, buff->value.size); + memcpy(buff->value.buf, ie->value.buf, buff->value.size); + + return buff; +} +#endif diff --git a/lib/s1ap3/test/s1ap_conv.h b/lib/s1ap3/test/s1ap_conv.h new file mode 100644 index 0000000000..c7b27525b6 --- /dev/null +++ b/lib/s1ap3/test/s1ap_conv.h @@ -0,0 +1,38 @@ +#ifndef __S1AP_CONV_H__ +#define __S1AP_CONV_H__ + +#include "s1ap_message.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +CORE_DECLARE(void) s1ap_uint8_to_OCTET_STRING( + c_uint8_t uint8, OCTET_STRING_t *octet_string); +CORE_DECLARE(void) s1ap_uint16_to_OCTET_STRING( + c_uint16_t uint16, OCTET_STRING_t *octet_string); +CORE_DECLARE(void) s1ap_uint32_to_OCTET_STRING( + c_uint32_t uint32, OCTET_STRING_t *octet_string); + +CORE_DECLARE(void) s1ap_buffer_to_OCTET_STRING( + void *buf, int size, S1AP_TBCD_STRING_t *tbcd_string); + +CORE_DECLARE(void) s1ap_uint32_to_ENB_ID( + S1AP_ENB_ID_PR present, c_uint32_t enb_id, S1AP_ENB_ID_t *eNB_ID); +CORE_DECLARE(void) s1ap_ENB_ID_to_uint32( + S1AP_ENB_ID_t *eNB_ID, c_uint32_t *uint32); + +#if 0 +CORE_DECLARE(status_t) s1ap_BIT_STRING_to_ip( + BIT_STRING_t *bit_string, ip_t *ip); +CORE_DECLARE(status_t) s1ap_ip_to_BIT_STRING( + ip_t *ip, BIT_STRING_t *bit_string); + +CORE_DECLARE(S1ap_IE_t *) s1ap_copy_ie(S1ap_IE_t *ie); +#endif +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __S1AP_CONV_H__ */ + diff --git a/lib/s1ap3/test/s1ap_message_test.c b/lib/s1ap3/test/s1ap_message_test.c new file mode 100644 index 0000000000..471edb3c57 --- /dev/null +++ b/lib/s1ap3/test/s1ap_message_test.c @@ -0,0 +1,532 @@ +#define TRACE_MODULE __test__test + +#include "core_debug.h" +#include "core_pkbuf.h" +#include "core_lib.h" + +#include "3gpp_types.h" + +#include "s1ap_message.h" +#if 0 +#include "mme/s1ap_build.h" +#endif +#include "s1ap_conv.h" + +#include "testutil.h" +#if 0 +#include "testpacket.h" +#endif + +static void s1ap_message_test1(abts_case *tc, void *data) +{ + /* S1SetupRequest */ + char *payload = + "0011002d000004003b00090000f11040" + "54f64010003c400903004a4c542d3632" + "3100400007000c0e4000f11000894001" + "00"; + + pkbuf_t *pkbuf; + s1ap_message_t message; + struct S1AP_InitiatingMessage *initiatingMessage; + S1AP_S1SetupRequest_t *pdu; + S1AP_Global_ENB_ID_t *Global_ENB_ID; + S1AP_ENBname_t *ENBname; + S1AP_SupportedTAs_t *SupportedTAs; + S1AP_PagingDRX_t *PagingDRX; + int i; + int result; + char hexbuf[MAX_SDU_LEN]; + + pkbuf = pkbuf_alloc(0, MAX_SDU_LEN); + ABTS_PTR_NOTNULL(tc, pkbuf); + pkbuf->len = 49; + memcpy(pkbuf->payload, + CORE_HEX(payload, strlen(payload), hexbuf), pkbuf->len); + + result = s1ap_decode_pdu(&message, pkbuf); + ABTS_INT_EQUAL(tc, 0, result); + + asn_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, &message); + + initiatingMessage = message.choice.initiatingMessage; + printf("procedireCode : %ld\n", initiatingMessage->procedureCode); + printf("criticalty : %ld\n", initiatingMessage->criticality); + pdu = &initiatingMessage->value.choice.S1SetupRequest; + + for (i = 0; i < pdu->protocolIEs.list.count; i++) + { + S1AP_S1SetupRequestIEs_t *ie = pdu->protocolIEs.list.array[i]; + switch(ie->id) + { + case S1AP_ProtocolIE_ID_S1AP_id_Global_ENB_ID: + Global_ENB_ID = &ie->value.choice.Global_ENB_ID; + break; + case S1AP_ProtocolIE_ID_S1AP_id_eNBname: + ENBname = &ie->value.choice.ENBname; + break; + case S1AP_ProtocolIE_ID_S1AP_id_SupportedTAs: + SupportedTAs = &ie->value.choice.SupportedTAs; + break; + case S1AP_ProtocolIE_ID_S1AP_id_DefaultPagingDRX: + PagingDRX = &ie->value.choice.PagingDRX; + break; + default: + d_warn("Unknown Procotol ID[%d]\n", ie->id); + break; + } + } + + asn_fprint(stdout, &asn_DEF_S1AP_Global_ENB_ID, Global_ENB_ID); + asn_fprint(stdout, &asn_DEF_S1AP_ENBname, ENBname); + asn_fprint(stdout, &asn_DEF_S1AP_SupportedTAs, SupportedTAs); + asn_fprint(stdout, &asn_DEF_S1AP_PagingDRX, PagingDRX); + +#if 0 + asn_enc_rval_t enc_ret = {0}; + enc_ret = aper_encode_to_buffer(&asn_DEF_S1AP_S1AP_PDU, NULL, + &message, pkbuf->payload, MAX_SDU_LEN); + if (enc_ret.encoded < 0) + { + d_error("Encoding of failed"); + } + else + { + d_info("Success = %d\n", enc_ret.encoded); + } +#endif + + s1ap_free_pdu(&message); + + pkbuf_free(pkbuf); +} + +static void s1ap_message_test2(abts_case *tc, void *data) +{ + pkbuf_t *pkbuf; + s1ap_message_t message; + S1AP_S1AP_PDU_t pdu; + S1AP_InitiatingMessage_t *InitiatingMessage; + S1AP_S1SetupRequestIEs_t *ie; + S1AP_S1SetupRequest_t *S1SetupRequest; + S1AP_Global_ENB_ID_t *Global_ENB_ID; + S1AP_ENBname_t *ENBname; + S1AP_SupportedTAs_t SupportedTAs; + S1AP_PagingDRX_t PagingDRX; + int i; + int result; + asn_enc_rval_t enc_ret = {0}; + char hexbuf[MAX_SDU_LEN]; + c_uint32_t enb_id = 0x54f64; + int tac = 12345; + plmn_id_t plmn_id; + + pkbuf = pkbuf_alloc(0, MAX_SDU_LEN); + ABTS_PTR_NOTNULL(tc, pkbuf); + + memset(&pdu, 0, sizeof (S1AP_S1AP_PDU_t)); + pdu.present = S1AP_PDU_PR_initiatingMessage; + pdu.choice.initiatingMessage = core_calloc( + 1, sizeof(S1AP_InitiatingMessage_t)); + InitiatingMessage = pdu.choice.initiatingMessage; + InitiatingMessage->procedureCode = S1AP_ProcedureCode_S1AP_id_S1Setup; + InitiatingMessage->criticality = S1AP_Criticality_ignore; + + InitiatingMessage->value.present = + InitiatingMessage__value_PR_S1SetupRequest; + S1SetupRequest = &InitiatingMessage->value.choice.S1SetupRequest; + + ie = core_calloc(1, sizeof(S1AP_S1SetupRequestIEs_t)); + ie->id = S1AP_ProtocolIE_ID_S1AP_id_Global_ENB_ID; + ie->criticality = S1AP_Criticality_reject; + ie->value.present = S1SetupRequestIEs__value_PR_Global_ENB_ID; + + Global_ENB_ID = &ie->value.choice.Global_ENB_ID; + plmn_id_build(&plmn_id, 1, 1, 2); + s1ap_uint32_to_ENB_ID(ENB_ID_PR_macroENB_ID, + enb_id, &Global_ENB_ID->eNB_ID); + s1ap_buffer_to_OCTET_STRING( + &plmn_id, PLMN_ID_LEN, &Global_ENB_ID->pLMNidentity); + ASN_SEQUENCE_ADD(&S1SetupRequest->protocolIEs, ie); + + ie = core_calloc(1, sizeof(S1AP_S1SetupRequestIEs_t)); + ie->id = S1AP_ProtocolIE_ID_S1AP_id_eNBname; + ie->criticality = S1AP_Criticality_ignore; + ie->value.present = S1SetupRequestIEs__value_PR_ENBname; + + ENBname = &ie->value.choice.ENBname; + s1ap_buffer_to_OCTET_STRING("ACETCOM", strlen("ACETCOM"), ENBname); + ASN_SEQUENCE_ADD(&S1SetupRequest->protocolIEs, ie); + enc_ret = aper_encode_to_buffer(&asn_DEF_S1AP_S1AP_PDU, NULL, + &pdu, pkbuf->payload, MAX_SDU_LEN); + + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_S1AP_S1AP_PDU, &pdu); + + if (enc_ret.encoded < 0) + { + d_error("Encoding of failed"); + } + else + { + d_info("Success = %d\n", enc_ret.encoded); + } + +#if 1 + result = s1ap_decode_pdu(&message, pkbuf); + ABTS_INT_EQUAL(tc, 0, result); + asn_fprint(stdout, &asn_DEF_S1AP_S1AP_PDU, &message); + s1ap_free_pdu(&message); +#endif + + pkbuf_free(pkbuf); +} + +#if 0 +static void s1ap_message_test1(abts_case *tc, void *data) +{ + /* S1SetupRequest */ + char *payload = + "0011002d000004003b00090000f11040" + "54f64010003c400903004a4c542d3632" + "3100400007000c0e4000f11000894001" + "00"; +#if 0 + char *payload = + "000e001500000200 0240020060005c00 084000005b000220 04"; + char *payload = + "000e0025" + "0000020002400200 60005c0018400200 5b00046064000400 5b00046063000300" + "5b0002402c"; + char *payload = + "000e" + "0025000002000240 020000005c001840 02005b0004606400 04005b0004606300" + "03005b0002402c"; +#endif + + pkbuf_t *pkbuf; + s1ap_message_t message; + int result; + char hexbuf[MAX_SDU_LEN]; + + pkbuf = pkbuf_alloc(0, MAX_SDU_LEN); + ABTS_PTR_NOTNULL(tc, pkbuf); + pkbuf->len = 49; +#if 0 + pkbuf->len = 25; + pkbuf->len = 41; + pkbuf->len = 41; +#endif + memcpy(pkbuf->payload, + CORE_HEX(payload, strlen(payload), hexbuf), pkbuf->len); + + result = s1ap_decode_pdu(&message, pkbuf); + ABTS_INT_EQUAL(tc, 0, result); + s1ap_free_pdu(&message); + + pkbuf_free(pkbuf); +} + +static void s1ap_message_test2(abts_case *tc, void *data) +{ + /* InitialUE(Attach Request) */ + char *payload = + "000c406f000006000800020001001a00" + "3c3b17df675aa8050741020bf600f110" + "000201030003e605f070000010000502" + "15d011d15200f11030395c0a003103e5" + "e0349011035758a65d0100e0c1004300" + "060000f1103039006440080000f1108c" + "3378200086400130004b00070000f110" + "000201"; + + s1ap_message_t message; + pkbuf_t *pkbuf; + int result; + char hexbuf[MAX_SDU_LEN]; + + pkbuf = pkbuf_alloc(0, MAX_SDU_LEN); + ABTS_PTR_NOTNULL(tc, pkbuf); + pkbuf->len = 115; + memcpy(pkbuf->payload, + CORE_HEX(payload, strlen(payload), hexbuf), pkbuf->len); + + result = s1ap_decode_pdu(&message, pkbuf); + ABTS_INT_EQUAL(tc, 0, result); + s1ap_free_pdu(&message); + + pkbuf_free(pkbuf); +} + +static void s1ap_message_test3(abts_case *tc, void *data) +{ + /* initial context setup response */ + char *payload = + "2009002500000300004005c0020000bf" + "0008400200010033400f000032400a0a" + "1f0a0123c601000908"; + + s1ap_message_t message; + pkbuf_t *pkbuf; + int result; + char hexbuf[MAX_SDU_LEN]; + + pkbuf = pkbuf_alloc(0, MAX_SDU_LEN); + ABTS_PTR_NOTNULL(tc, pkbuf); + pkbuf->len = 41; + memcpy(pkbuf->payload, + CORE_HEX(payload, strlen(payload), hexbuf), pkbuf->len); + + result = s1ap_decode_pdu(&message, pkbuf); + ABTS_INT_EQUAL(tc, 0, result); + s1ap_free_pdu(&message); + + pkbuf_free(pkbuf); +} + +status_t s1ap_build_setup_failure( + pkbuf_t **pkbuf, S1AP_Cause_PR group, long cause, long time_to_wait) +{ + int erval; + + s1ap_message_t message; + struct S1AP_UnsuccessfulOutcome *unsuccessfulOutcome = NULL; + S1AP_S1SetupFailure_t *s1SetupFailure = NULL; + S1AP_S1SetupFailureIEs_t *ies = NULL; + + memset(&message, 0, sizeof(s1ap_message_t)); + + unsuccessfulOutcome = message.choice.unsuccessfulOutcome; + s1SetupFailure = &unsuccessfulOutcome->value.choice.S1SetupFailure; + + memset(&message, 0, sizeof(s1ap_message_t)); + + ies = core_calloc(1, sizeof(S1AP_S1SetupFailureIEs_t)); + ies->value.choice.Cause.present = group; + ies->value.choice.Cause.choice.radioNetwork = cause; + d_trace(5, " Gruop[%d] Cause[%d] TimeToWait[%ld]\n", + group, cause, time_to_wait); + +#if 0 + if (time_to_wait > -1) + { + ies->presenceMask |= S1AP_S1SETUPFAILUREIES_TIMETOWAIT_PRESENT; + ies->timeToWait = time_to_wait; + } +#endif + printf("__LINE__ = %d\n", __LINE__); + ASN_SEQUENCE_ADD(&s1SetupFailure, ies); + + printf("__LINE__ = %d\n", __LINE__); + message.choice.unsuccessfulOutcome->procedureCode = + S1AP_ProcedureCode_S1AP_id_S1Setup; + + printf("__LINE__ = %d\n", __LINE__); + erval = s1ap_encode_pdu(pkbuf, &message); + printf("__LINE__ = %d\n", __LINE__); + s1ap_free_pdu(&message); + printf("__LINE__ = %d\n", __LINE__); + + if (erval < 0) + { + d_error("s1ap_encode_error : (%d)", erval); + return CORE_ERROR; + } + + return CORE_OK; +} + +#define MAX_PLMN_ID 6 +#define GRP_PER_MME 256 /* According to spec it is 65535 */ +#define CODE_PER_MME 256 /* According to spec it is 256 */ +typedef struct _served_gummei { + c_uint32_t num_of_plmn_id; + plmn_id_t plmn_id[MAX_PLMN_ID]; + + c_uint32_t num_of_mme_gid; + c_uint16_t mme_gid[GRP_PER_MME]; + c_uint32_t num_of_mme_code; + c_uint8_t mme_code[CODE_PER_MME]; +} served_gummei_t; + +status_t s1ap_build_setup_rsp(pkbuf_t **pkbuf) +{ + int erval; + int i, j; + + s1ap_message_t message; + struct S1AP_SuccessfulOutcome *successfulOutcome = NULL; + S1AP_S1SetupResponse_t *s1setupResponse = NULL; + S1AP_S1SetupResponseIEs_t *ies = NULL; + S1AP_ServedGUMMEIsItem_t *servedGUMMEI; + S1AP_PLMNidentity_t *plmnIdentity; + S1AP_MME_Group_ID_t *mmeGroupId; + S1AP_MME_Code_t *mmeCode; + + memset(&message, 0, sizeof(s1ap_message_t)); + + successfulOutcome = message.choice.successfulOutcome; + s1setupResponse = &successfulOutcome->value.choice.S1SetupResponse; + + for (i = 0; i < 1; i++) + { + servedGUMMEI = (S1AP_ServedGUMMEIsItem_t *) + core_calloc(1, sizeof(S1AP_ServedGUMMEIsItem_t)); + + served_gummei_t *served_gummei = NULL, s; + served_gummei = &s; + memset(served_gummei, 0, sizeof(served_gummei_t)); + served_gummei->num_of_plmn_id = 1; + plmn_id_build(&served_gummei->plmn_id[0], 1, 1, 2); + served_gummei->num_of_mme_gid = 1; + served_gummei->mme_gid[0] = 2; + served_gummei->num_of_mme_code = 1; + served_gummei->mme_code[0] = 1; + + for (j = 0; j < served_gummei->num_of_plmn_id; j++) + { + plmnIdentity = (S1AP_PLMNidentity_t *) + core_calloc(1, sizeof(S1AP_PLMNidentity_t)); + s1ap_buffer_to_OCTET_STRING( + &served_gummei->plmn_id[j], PLMN_ID_LEN, plmnIdentity); + ASN_SEQUENCE_ADD(&servedGUMMEI->servedPLMNs, plmnIdentity); + d_trace(5, " PLMN_ID[MCC:%d MNC:%d]\n", + plmn_id_mcc(&served_gummei->plmn_id[j]), + plmn_id_mnc(&served_gummei->plmn_id[j])); + } + + for (j = 0; j < served_gummei->num_of_mme_gid; j++) + { + mmeGroupId = (S1AP_MME_Group_ID_t *) + core_calloc(1, sizeof(S1AP_MME_Group_ID_t)); + s1ap_uint16_to_OCTET_STRING( + served_gummei->mme_gid[j], mmeGroupId); + ASN_SEQUENCE_ADD(&servedGUMMEI->servedGroupIDs, mmeGroupId); + d_trace(5, " MME Group[%d]\n", served_gummei->mme_gid[j]); + } + + for (j = 0; j < served_gummei->num_of_mme_code; j++) + { + mmeCode = (S1AP_MME_Code_t *) + core_calloc(1, sizeof(S1AP_MME_Code_t)); + s1ap_uint8_to_OCTET_STRING( + served_gummei->mme_code[j], mmeCode); + ASN_SEQUENCE_ADD(&servedGUMMEI->servedMMECs, mmeCode); + d_trace(5, " MME Code[%d]\n", served_gummei->mme_code[j]); + } + ASN_SEQUENCE_ADD(&s1setupResponse->protocolIEs.list, servedGUMMEI); + } + + ies->relativeMMECapacity = 44; + + message.procedureCode = S1ap_ProcedureCode_id_S1Setup; + message.direction = S1AP_PDU_PR_successfulOutcome; + + erval = s1ap_encode_pdu(pkbuf, &message); + s1ap_free_pdu(&message); + + if (erval < 0) + { + d_error("s1ap_encode_error : (%d)", erval); + return CORE_ERROR; + } + + return CORE_OK; +} + +static void s1ap_message_test4(abts_case *tc, void *data) +{ + s1ap_message_t message; + status_t rv; + pkbuf_t *pkbuf; + int result; + + rv = s1ap_build_setup_failure(&pkbuf, 2, 0, 0); + + ABTS_INT_EQUAL(tc, CORE_OK, rv); + ABTS_PTR_NOTNULL(tc, pkbuf); + ABTS_PTR_NOTNULL(tc, pkbuf->payload); +#if 0 + ABTS_INT_EQUAL(tc, 27, pkbuf->len); + + result = s1ap_decode_pdu(&message, pkbuf); + ABTS_INT_EQUAL(tc, 0, result); + + s1ap_free_pdu(&message); + pkbuf_free(pkbuf); +#endif +} + +static void s1ap_message_test5(abts_case *tc, void *data) +{ + s1ap_message_t message; + status_t rv; + pkbuf_t *pkbuf; + int result; + + rv = tests1ap_build_setup_req(&pkbuf, S1ap_ENB_ID_PR_macroENB_ID, 0x54f64); + + ABTS_INT_EQUAL(tc, CORE_OK, rv); + ABTS_PTR_NOTNULL(tc, pkbuf); + ABTS_PTR_NOTNULL(tc, pkbuf->payload); + ABTS_INT_EQUAL(tc, 35, pkbuf->len); + + result = s1ap_decode_pdu(&message, pkbuf); + ABTS_INT_EQUAL(tc, 0, result); + + s1ap_free_pdu(&message); + pkbuf_free(pkbuf); +} + +static void s1ap_message_test6(abts_case *tc, void *data) +{ + pkbuf_t *s1apbuf = NULL; + int i; + s1ap_message_t message; + S1ap_DownlinkNASTransport_IEs_t *ies = + &message.s1ap_DownlinkNASTransport_IEs; + S1ap_NAS_PDU_t *nasPdu = &ies->nas_pdu; + char buffer[1024]; + char *_result = + "000b4080 8c000003 00000002 00010008 00020001 001a0079 78efefef efefefef" + "efefefef efefefef efefefef efefefef efefefef efefefef efefefef efefefef" + "efefefef efefefef efefefef efefefef efefefef efefefef efefefef efefefef" + "efefefef efefefef efefefef efefefef efefefef efefefef efefefef efefefef" + "efefefef efefefef efefefef efefefef ef"; + + memset(&message, 0, sizeof(s1ap_message_t)); + + ies->mme_ue_s1ap_id = 1; + ies->eNB_UE_S1AP_ID = 1; + + nasPdu->size = 120; + nasPdu->buf = core_calloc(nasPdu->size, sizeof(c_uint8_t)); + for (i = 0; i < nasPdu->size; i++) + nasPdu->buf[i] = 0xef; + + message.procedureCode = S1ap_ProcedureCode_id_downlinkNASTransport; + message.direction = S1AP_PDU_PR_initiatingMessage; + + s1ap_encode_pdu(&s1apbuf, &message); + s1ap_free_pdu(&message); + ABTS_TRUE(tc, memcmp(CORE_HEX(_result, strlen(_result), buffer), + s1apbuf->payload, s1apbuf->len) == 0); + + pkbuf_free(s1apbuf); +} +#endif + +abts_suite *test_s1ap_message(abts_suite *suite) +{ + suite = ADD_SUITE(suite) + + abts_run_test(suite, s1ap_message_test1, NULL); + abts_run_test(suite, s1ap_message_test2, NULL); +#if 0 + abts_run_test(suite, s1ap_message_test3, NULL); + abts_run_test(suite, s1ap_message_test4, NULL); + abts_run_test(suite, s1ap_message_test5, NULL); + abts_run_test(suite, s1ap_message_test6, NULL); +#endif + + return suite; +} diff --git a/lib/s1ap3/test/testutil.c b/lib/s1ap3/test/testutil.c new file mode 100644 index 0000000000..c34b0655df --- /dev/null +++ b/lib/s1ap3/test/testutil.c @@ -0,0 +1,41 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "core.h" +#include "abts.h" +#include "testutil.h" + +void core_assert_ok(abts_case* tc, const char* context, status_t rv, + int lineno) +{ + if (rv == CORE_ENOTIMPL) + { + abts_not_impl(tc, context, lineno); + } else if (rv != CORE_OK) + { + char buf[STRING_MAX], ebuf[128]; + sprintf(buf, "%s (%d): %s\n", context, rv, + core_strerror(rv, ebuf, sizeof ebuf)); + abts_fail(tc, buf, lineno); + } +} + +void test_initialize(void) +{ + core_initialize(); + atexit(core_terminate); +} + diff --git a/lib/s1ap3/test/testutil.h b/lib/s1ap3/test/testutil.h new file mode 100644 index 0000000000..7478b1e5c3 --- /dev/null +++ b/lib/s1ap3/test/testutil.h @@ -0,0 +1,62 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "core_general.h" +#include "abts.h" + +#ifndef __APR_TEST_UTIL__ +#define __APR_TEST_UTIL__ + +/* XXX: FIXME - these all should become much more utilitarian + * and part of core, itself + */ + +#ifdef WIN32 +#ifdef BINPATH +#define TESTBINPATH APR_STRINGIFY(BINPATH) "/" +#else +#define TESTBINPATH "" +#endif +#else +#define TESTBINPATH "./" +#endif + +#ifdef WIN32 +#define EXTENSION ".exe" +#elif NETWARE +#define EXTENSION ".nlm" +#else +#define EXTENSION +#endif + +#define STRING_MAX 8096 + +/* Some simple functions to make the test apps easier to write and + * a bit more consistent... + */ + +/* Assert that RV is an CORE_OK value; else fail giving strerror + * for RV and CONTEXT message. */ +void core_assert_ok(abts_case* tc, const char *context, + status_t rv, int lineno); +#define CORE_ASSERT_OK(tc, ctxt, rv) \ + core_assert_ok(tc, ctxt, rv, __LINE__) + +void test_initialize(void); + +abts_suite *test_s1ap_message(abts_suite *suite); + +#endif /* CORE_TEST_INCLUDES */